<?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>19835</bug_id>
          
          <creation_ts>2008-06-30 21:15:21 -0700</creation_ts>
          <short_desc>WebKit needs cross-platform filter system</short_desc>
          <delta_ts>2009-06-13 13:15:57 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, SVGHitList</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>6022</blocked>
    
    <blocked>5526</blocked>
    
    <blocked>6033</blocked>
    
    <blocked>19991</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Mathews">possessedpenguinbob</reporter>
          <assigned_to name="Alex Mathews">possessedpenguinbob</assigned_to>
          <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>krit</cc>
    
    <cc>lars.sonchocky-helldorf</cc>
    
    <cc>oliver</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>84818</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-06-30 21:15:21 -0700</bug_when>
    <thetext>This bug will handle all the patches necessary to get the new Cross-platform filters system up and running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84835</commentid>
    <comment_count>1</comment_count>
      <attachid>22019</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-01 01:55:15 -0700</bug_when>
    <thetext>Created attachment 22019
Filter Light name changes

Class name changes for:

SVGLightSource -&gt; LightSource
SVGDistantLightSource -&gt; DistantLightSource
SVGPointLightSource -&gt; PointLightSource
SVGSpotLightSource -&gt; SpotLightSource

There are a few formatting changes as well, so as to match WebKit coding style. Otherwise, no changes were made except for naming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84839</commentid>
    <comment_count>2</comment_count>
      <attachid>22019</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-07-01 03:01:06 -0700</bug_when>
    <thetext>Comment on attachment 22019
Filter Light name changes

Welcome aboard :-) r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84844</commentid>
    <comment_count>3</comment_count>
      <attachid>22022</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-01 03:44:44 -0700</bug_when>
    <thetext>Created attachment 22022
above with webcore changelog

Doh! Added WebCore ChangeLog to patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84846</commentid>
    <comment_count>4</comment_count>
      <attachid>22022</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-01 03:47:06 -0700</bug_when>
    <thetext>Comment on attachment 22022
above with webcore changelog

This is the same patch as reviewed by niko, but with a changelog for landing r=niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84848</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-01 04:12:06 -0700</bug_when>
    <thetext>rename patch #1

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/svg/SVGFEDiffuseLightingElement.cpp
	M	WebCore/svg/SVGFEDistantLightElement.cpp
	M	WebCore/svg/SVGFEDistantLightElement.h
	M	WebCore/svg/SVGFELightElement.h
	M	WebCore/svg/SVGFEPointLightElement.cpp
	M	WebCore/svg/SVGFEPointLightElement.h
	M	WebCore/svg/SVGFESpecularLightingElement.cpp
	M	WebCore/svg/SVGFESpotLightElement.cpp
	M	WebCore/svg/SVGFESpotLightElement.h
	M	WebCore/svg/graphics/filters/SVGDistantLightSource.h
	M	WebCore/svg/graphics/filters/SVGFEDiffuseLighting.cpp
	M	WebCore/svg/graphics/filters/SVGFEDiffuseLighting.h
	M	WebCore/svg/graphics/filters/SVGFESpecularLighting.cpp
	M	WebCore/svg/graphics/filters/SVGFESpecularLighting.h
	M	WebCore/svg/graphics/filters/SVGLightSource.cpp
	M	WebCore/svg/graphics/filters/SVGLightSource.h
	M	WebCore/svg/graphics/filters/SVGPointLightSource.h
	M	WebCore/svg/graphics/filters/SVGSpotLightSource.h
	M	WebCore/svg/graphics/filters/cg/SVGFEDiffuseLightingCg.mm
	M	WebCore/svg/graphics/filters/cg/SVGFEHelpersCg.h
	M	WebCore/svg/graphics/filters/cg/SVGFEHelpersCg.mm
	M	WebCore/svg/graphics/filters/cg/SVGFESpecularLightingCg.mm
Committed r34912

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84908</commentid>
    <comment_count>6</comment_count>
      <attachid>22032</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-01 14:35:11 -0700</bug_when>
    <thetext>Created attachment 22032
First few new files

Just adding three new header files that will be necessary to have going forward with the class renaming as well as the building of the new Filter stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84909</commentid>
    <comment_count>7</comment_count>
      <attachid>22032</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-01 14:39:59 -0700</bug_when>
    <thetext>Comment on attachment 22032
First few new files

After some thought i think you should put the Filter and FilterEffect constructors and create methods into appropriate C++ files, as this matches our style in other similar cases, and may be beneficial as the classes get more complete.

Otherwise this looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84922</commentid>
    <comment_count>8</comment_count>
      <attachid>22035</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-01 16:29:33 -0700</bug_when>
    <thetext>Created attachment 22035
Few New Files with change

Created the files oliver suggested and cleaned up #includes a little because there were a few that were unnecessary. Otherwise, unchanged from above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84927</commentid>
    <comment_count>9</comment_count>
      <attachid>22035</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-07-01 17:47:39 -0700</bug_when>
    <thetext>Comment on attachment 22035
Few New Files with change

The patch itself is fine, but doesn&apos;t actually move us much closer to having a new filter system.  This is one of those refactoring patches which might go better on a branch.

I spoke with AMatthews (penguin bob) over the phone this afternoon and encouraged him to get a minimal filter compositor up and running ASAP (as that&apos;s the hard part compared to these renames and changes to create methods).  A minimal filter compositor is also on the critical path towards completion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84931</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-01 18:23:20 -0700</bug_when>
    <thetext>Eric, I would prefer we get a decent and clean groundwork up and running first -- AMatthews is working on a path i suggested :p

I would hope to have the new dag&apos;s being built with correct properties for all of these done by tonight, at which point we should get feImage going.  Once we&apos;ve done that we can actually start working on composition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84937</commentid>
    <comment_count>11</comment_count>
      <attachid>22035</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-01 19:23:15 -0700</bug_when>
    <thetext>Comment on attachment 22035
Few New Files with change

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84943</commentid>
    <comment_count>12</comment_count>
      <attachid>22035</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-01 20:28:17 -0700</bug_when>
    <thetext>Comment on attachment 22035
Few New Files with change

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	A	WebCore/svg/Filter.cpp
	A	WebCore/svg/Filter.h
	A	WebCore/svg/FilterBuilder.h
	A	WebCore/svg/FilterEffect.cpp
	A	WebCore/svg/FilterEffect.h
Committed r34942</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84944</commentid>
    <comment_count>13</comment_count>
      <attachid>22035</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-01 20:28:17 -0700</bug_when>
    <thetext>Comment on attachment 22035
Few New Files with change

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	A	WebCore/svg/Filter.cpp
	A	WebCore/svg/Filter.h
	A	WebCore/svg/FilterBuilder.h
	A	WebCore/svg/FilterEffect.cpp
	A	WebCore/svg/FilterEffect.h
Committed r34942</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84948</commentid>
    <comment_count>14</comment_count>
      <attachid>22038</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-01 23:10:01 -0700</bug_when>
    <thetext>Created attachment 22038
Rename SVGFEBlend class

This is the rename of just SVGFEBlend to FEBlend and anything required to get it building again after the name change. After this I hope it should be easier to do name changes. I hope. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84949</commentid>
    <comment_count>15</comment_count>
      <attachid>22038</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-01 23:26:43 -0700</bug_when>
    <thetext>Comment on attachment 22038
Rename SVGFEBlend class

You should probably make &quot;SVGFEBlendElement::filterEffect&quot; etc
do 
ASSERT_NOT_REACHED();
return 0;

In general comments about future work shouldn&apos;t be present unless they&apos;re FIXME&apos;s (ideally with bug#&apos;s).  In cases like this where you expect to remove the code in the near future an ASSERT_NOT_REACHED is sensible.

Is the change to WebCore/svg/SVGFilterPrimitiveStandardAttributes.h really necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84952</commentid>
    <comment_count>16</comment_count>
      <attachid>22039</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-01 23:40:32 -0700</bug_when>
    <thetext>Created attachment 22039
SVGFEBlend Rename

Same as previous, except the two changes Oliver wanted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85042</commentid>
    <comment_count>17</comment_count>
      <attachid>22039</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-02 22:56:21 -0700</bug_when>
    <thetext>Comment on attachment 22039
SVGFEBlend Rename

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	WebCore/svg/graphics/filters/cg/SVGFEBlendCg.mm
	M	WebCore/ChangeLog
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/svg/FilterBuilder.h
	M	WebCore/svg/SVGFEBlendElement.cpp
	M	WebCore/svg/SVGFEBlendElement.h
	M	WebCore/svg/graphics/filters/SVGFEBlend.cpp
	M	WebCore/svg/graphics/filters/SVGFEBlend.h
Committed r34971</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85044</commentid>
    <comment_count>18</comment_count>
      <attachid>22061</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-02 23:54:31 -0700</bug_when>
    <thetext>Created attachment 22061
SVGFEColorMatrix Rename

Rename for SVGFEColorMatrix to FEColorMatrix as well as a few other small changes dealing with #includes noted in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85045</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-03 00:09:23 -0700</bug_when>
    <thetext>ColorMatrix changes look good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85129</commentid>
    <comment_count>20</comment_count>
      <attachid>22073</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-03 15:39:13 -0700</bug_when>
    <thetext>Created attachment 22073
SVGFEComponentTransfer Rename

Rename for SVGFEComponentTransfer. No extras this time, just the rename and changes required to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85134</commentid>
    <comment_count>21</comment_count>
      <attachid>22076</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-03 16:22:00 -0700</bug_when>
    <thetext>Created attachment 22076
SVGFEComposite Rename

Rename for SVGFEComposite to FEComposite. This also includes the webcore xcodeproj changes from the last three. Though be aware that it duplicates the webcore xcodeproj change in &quot;SVGFEColorMatrix Rename.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85135</commentid>
    <comment_count>22</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-03 16:27:46 -0700</bug_when>
    <thetext>Okay, that series of patches looks good, can you just make one combined patch with a changelog entry?

You should really prepend the changelog with the bug description and link (look at other changelog entries)

Then have something along the lines of &quot;Continue refactoring FilterEffect classes in preparation for cross-platform implementation&quot; or something else to that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85137</commentid>
    <comment_count>23</comment_count>
      <attachid>22077</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-03 17:00:31 -0700</bug_when>
    <thetext>Created attachment 22077
Combined Color, Component, and Composite

Combined patch for the last three.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85138</commentid>
    <comment_count>24</comment_count>
      <attachid>22077</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-03 17:21:06 -0700</bug_when>
    <thetext>Comment on attachment 22077
Combined Color, Component, and Composite

r=me, will land shortly.  Need to do update and build on this machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85140</commentid>
    <comment_count>25</comment_count>
      <attachid>22077</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-03 18:10:52 -0700</bug_when>
    <thetext>Comment on attachment 22077
Combined Color, Component, and Composite

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	WebCore/svg/graphics/filters/cg/SVGFEColorMatrixCg.mm
	D	WebCore/svg/graphics/filters/cg/SVGFEComponentTransferCg.mm
	D	WebCore/svg/graphics/filters/cg/SVGFECompositeCg.mm
	M	WebCore/ChangeLog
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/svg/FilterEffect.h
	M	WebCore/svg/SVGComponentTransferFunctionElement.cpp
	M	WebCore/svg/SVGComponentTransferFunctionElement.h
	M	WebCore/svg/SVGFEColorMatrixElement.cpp
	M	WebCore/svg/SVGFEColorMatrixElement.h
	M	WebCore/svg/SVGFEComponentTransferElement.cpp
	M	WebCore/svg/SVGFEComponentTransferElement.h
	M	WebCore/svg/SVGFECompositeElement.cpp
	M	WebCore/svg/SVGFECompositeElement.h
	M	WebCore/svg/graphics/filters/SVGFEBlend.cpp
	M	WebCore/svg/graphics/filters/SVGFEBlend.h
	M	WebCore/svg/graphics/filters/SVGFEColorMatrix.cpp
	M	WebCore/svg/graphics/filters/SVGFEColorMatrix.h
	M	WebCore/svg/graphics/filters/SVGFEComponentTransfer.cpp
	M	WebCore/svg/graphics/filters/SVGFEComponentTransfer.h
	M	WebCore/svg/graphics/filters/SVGFEComposite.cpp
	M	WebCore/svg/graphics/filters/SVGFEComposite.h
Committed r34992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85158</commentid>
    <comment_count>26</comment_count>
      <attachid>22079</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-03 23:32:10 -0700</bug_when>
    <thetext>Created attachment 22079
SVGConvolveMatrix Rename

Rename SVGFEConvolveMatrix to FEConvolveMatrix. Also, a little bit of #include movement to prevent needing #include &quot;FilterBuilder.h&quot; in every SVGFE*Element class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85159</commentid>
    <comment_count>27</comment_count>
      <attachid>22080</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-03 23:37:11 -0700</bug_when>
    <thetext>Created attachment 22080
SVGFEDiffuseLighting Rename

Rename for SVGFEDiffuseLighting to FEDiffuseLighting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85160</commentid>
    <comment_count>28</comment_count>
      <attachid>22081</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-04 00:22:23 -0700</bug_when>
    <thetext>Created attachment 22081
SVGFEDisplacementMap Rename

Rename  SVGFEDisplacementMap to FEDisplacementMap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85162</commentid>
    <comment_count>29</comment_count>
      <attachid>22083</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-04 00:41:48 -0700</bug_when>
    <thetext>Created attachment 22083
SVGFEFlood Rename

Rename SVGFEFlood to FEFlood.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85164</commentid>
    <comment_count>30</comment_count>
      <attachid>22084</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-04 00:58:14 -0700</bug_when>
    <thetext>Created attachment 22084
SVGFEGaussianBlur Rename

Rename SVGFEGaussianBlur to FEGaussianBlur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85170</commentid>
    <comment_count>31</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-04 01:54:04 -0700</bug_when>
    <thetext>Those all look basically sane :D

You should mark them as patches in future so i can get the pretty formatted diffs :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85180</commentid>
    <comment_count>32</comment_count>
      <attachid>22088</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-04 09:19:57 -0700</bug_when>
    <thetext>Created attachment 22088
Combined Convolve through Gaussian

Combined last 5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85197</commentid>
    <comment_count>33</comment_count>
      <attachid>22088</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-04 22:14:51 -0700</bug_when>
    <thetext>Comment on attachment 22088
Combined Convolve through Gaussian

Incorrect directory paths after commit 34993. Will fix and resubmit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85200</commentid>
    <comment_count>34</comment_count>
      <attachid>22092</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-04 22:30:07 -0700</bug_when>
    <thetext>Created attachment 22092
Trying again with the last 5

Retrying Last 5 Renames</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85212</commentid>
    <comment_count>35</comment_count>
      <attachid>22092</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-05 01:36:18 -0700</bug_when>
    <thetext>Comment on attachment 22092
Trying again with the last 5

A few issues i&apos;ve noticed in this run through:
SVGFEFloodElement::build
* nonConstThis is not necessary as build() is not a const method.
* You removed the deref of the style objects, why?  This will result in a leak afaik

Alex, I&apos;m r-&apos;ing pending your response; if i feel the needed changes are minimal after that i&apos;ll do them and land myself (unless of course you have a new patch up already at that point)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85226</commentid>
    <comment_count>36</comment_count>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-05 12:45:41 -0700</bug_when>
    <thetext>&gt; * nonConstThis is not necessary as build() is not a const method.

Ok. I removed the nonConstThis line and changed the lines using it to &quot;this&quot;

&gt; * You removed the deref of the style objects, why?  This will result in a leak
&gt; afaik

I&apos;m not actually sure why I didn&apos;t include the deref lines. It may have been because I know that you&apos;re not supposed to use explicit ref/deref anymore but I forgot to check if the fields were smart ptrs. They are not. I looked into moving them to RefPtrs but didn&apos;t feel comfortable enough to make those changes without breaking something. So, for the moment, I&apos;ll add a &quot;FIXME&quot; line above the explicit derefs saying that they need to be transitioned to RefPtrs in CSSStyleSelector. Sound good?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85228</commentid>
    <comment_count>37</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-05 14:02:49 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; &gt; * nonConstThis is not necessary as build() is not a const method.
&gt; 
&gt; Ok. I removed the nonConstThis line and changed the lines using it to &quot;this&quot;
&gt; 
&gt; &gt; * You removed the deref of the style objects, why?  This will result in a leak
&gt; &gt; afaik
&gt; 
&gt; I&apos;m not actually sure why I didn&apos;t include the deref lines. It may have been
&gt; because I know that you&apos;re not supposed to use explicit ref/deref anymore but I
&gt; forgot to check if the fields were smart ptrs. 

Alas they are not actually smart pointers -- if you look you can see that deref takes an argument.  That&apos;s because the refcounting rules for the dom are more complicated than those elsewhere, so the manual deref&apos;s are necessary.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85230</commentid>
    <comment_count>38</comment_count>
      <attachid>22101</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-05 14:29:21 -0700</bug_when>
    <thetext>Created attachment 22101
Trying again, again

Patch with suggested changes in SVGFEDiffuseLightingElement and SVGFEFloodElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85307</commentid>
    <comment_count>39</comment_count>
      <attachid>22122</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-07 00:22:08 -0700</bug_when>
    <thetext>Created attachment 22122
Last twelve

This is the last 12 renames. After this everything in the &quot;WebCore/svg/graphics/filters/&quot; directory, other than SVGFilterEffect.h/cpp, is ready for file rename/move. I hope this is all correct :-).


PS. Oliver I am very sorry for the monstrous size of this :-(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85316</commentid>
    <comment_count>40</comment_count>
      <attachid>22122</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-07 03:51:39 -0700</bug_when>
    <thetext>Comment on attachment 22122
Last twelve

SVGFEMergeElement::build needs to handle requested subcomponents of the filter not being present.

SVGFEOffsetElement::build doesn&apos;t need the addedEffect temporary, ditto for FETileElement, SVGFETurbulenceElement

I don&apos;t like the name updateLights name, it&apos;s not updating anything -- it&apos;s discovering the lightsource, not updating any cache.

I was also looking at the dump methods, and I think it would be best to keep them for now, and just make them dump the address of any filters they depend on (in the short term), so the externalRepresentation methods should have any significant changes.  I can fix up the existing filters later, provided you make sure they continue building.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85442</commentid>
    <comment_count>41</comment_count>
      <attachid>22155</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-08 00:45:27 -0700</bug_when>
    <thetext>Created attachment 22155
Large Refactoring

Changes Oliver suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85480</commentid>
    <comment_count>42</comment_count>
      <attachid>22155</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-08 13:10:05 -0700</bug_when>
    <thetext>Comment on attachment 22155
Large Refactoring

r- -- the externalRepresentation method should be identical t what they were originally, the only difference being that the references to any sub-filters should be replaced with the address of the subfilter.  Other than that there should be no difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85512</commentid>
    <comment_count>43</comment_count>
      <attachid>22169</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-09 00:36:09 -0700</bug_when>
    <thetext>Created attachment 22169
Large Refactoring again

Changes Oliver wanted as well as adding an &quot;operator&lt;&lt;&quot; overload in SVGRenderTreeAsText.h to make printing the pointer addresses of the &quot;in&quot; fields easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85600</commentid>
    <comment_count>44</comment_count>
      <attachid>22169</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-10 00:17:52 -0700</bug_when>
    <thetext>Comment on attachment 22169
Large Refactoring again

Landed r35094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85704</commentid>
    <comment_count>45</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-10 16:17:22 -0700</bug_when>
    <thetext>There&apos;s still some tidy up for this bug, but nothing too dramatic

Basically remove the SVGFEFilter class, rename and move the remaining SVGFE* files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88217</commentid>
    <comment_count>46</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-08-11 08:04:27 -0700</bug_when>
    <thetext>Any news on filters so far? There are still a couple of patches here, not marked with r? etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124091</commentid>
    <comment_count>47</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-02 18:29:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/6934155&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124093</commentid>
    <comment_count>48</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-02 18:48:03 -0700</bug_when>
    <thetext>How does this related to bug 19991?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125662</commentid>
    <comment_count>49</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-13 13:15:57 -0700</bug_when>
    <thetext>The refactoring and clean-up of the new filter system is ready. I close this bug and open new buge reports if necessary.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22019</attachid>
            <date>2008-07-01 01:55:15 -0700</date>
            <delta_ts>2008-07-10 16:13:01 -0700</delta_ts>
            <desc>Filter Light name changes</desc>
            <filename>output.diff</filename>
            <type>text/plain</type>
            <size>19989</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2
aXNpb24gMzQ4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAKICAgICBpZiAoIW1fZmlsdGVy
RWZmZWN0KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgU1ZHTGlnaHRTb3VyY2UqIGxpZ2h0
ID0gMDsKKyAgICBMaWdodFNvdXJjZSogbGlnaHQgPSAwOwogICAgIGZvciAoTm9kZSogbiA9IGZp
cnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKG4tPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSB8fAogICAgICAgICAgICAgbi0+
aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVQb2ludExpZ2h0VGFnKSB8fApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNDg2OSkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDkgKzM0LDkgQEAKIHsKIH0KIAotU1ZHTGlnaHRTb3VyY2UqIFNWR0ZFRGlzdGFudExpZ2h0RWxl
bWVudDo6bGlnaHRTb3VyY2UoKSBjb25zdAorTGlnaHRTb3VyY2UqIFNWR0ZFRGlzdGFudExpZ2h0
RWxlbWVudDo6bGlnaHRTb3VyY2UoKSBjb25zdAogewotICAgIHJldHVybiBuZXcgU1ZHRGlzdGFu
dExpZ2h0U291cmNlKGF6aW11dGgoKSwgZWxldmF0aW9uKCkpOworICAgIHJldHVybiBuZXcgRGlz
dGFudExpZ2h0U291cmNlKGF6aW11dGgoKSwgZWxldmF0aW9uKCkpOwogfQogCiB9CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gMzQ4NjkpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogICAgICAgICBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFRGlzdGFudExp
Z2h0RWxlbWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgU1ZHTGlnaHRTb3VyY2UqIGxpZ2h0U291
cmNlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkg
Y29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5oCShyZXZpc2lvbiAzNDg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgU1ZHRkVM
aWdodEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZp
cnR1YWwgflNWR0ZFTGlnaHRFbGVtZW50KCk7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIFNW
R0xpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBM
aWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAogICAgIHByaXZhdGU6
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzQ4
NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBACiB7CiB9CiAKLVNWR0xpZ2h0U291cmNlKiBTVkdGRVBv
aW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSgpIGNvbnN0CitMaWdodFNvdXJjZSogU1ZHRkVQ
b2ludExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIEZsb2F0UG9pbnQz
RCBwb3MoeCgpLCB5KCksIHooKSk7Ci0gICAgcmV0dXJuIG5ldyBTVkdQb2ludExpZ2h0U291cmNl
KHBvcyk7CisgICAgcmV0dXJuIG5ldyBQb2ludExpZ2h0U291cmNlKHBvcyk7CiB9CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDM0ODY5KQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBACiAgICAgICAgIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFUG9pbnRMaWdodEVs
ZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIFNWR0xpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgp
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzNDg2OSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDksNyArMTA5LDcgQEAKICAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTVkdMaWdodFNvdXJjZSogbGlnaHQgPSAwOyAgICAKKyAgICBMaWdodFNv
dXJjZSogbGlnaHQgPSAwOyAgICAKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47
IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpmZURpc3RhbnRMaWdodFRhZykgfHwgCiAgICAgICAgICAgICBuLT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpmZVBvaW50TGlnaHRUYWcpIHx8CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwb3RM
aWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0
RWxlbWVudC5jcHAJKHJldmlzaW9uIDM0ODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGln
aHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogewogfQogCi1T
VkdMaWdodFNvdXJjZSogU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSgpIGNvbnN0
CitMaWdodFNvdXJjZSogU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSgpIGNvbnN0
CiB7CiAgICAgRmxvYXRQb2ludDNEIHBvcyh4KCksIHkoKSwgeigpKTsKIApAQCAtNDQsNyArNDQs
NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzQXRaKCkgLSBwb3MueigpKTsK
IAogICAgIGRpcmVjdGlvbi5ub3JtYWxpemUoKTsKLSAgICByZXR1cm4gbmV3IFNWR1Nwb3RMaWdo
dFNvdXJjZShwb3MsIGRpcmVjdGlvbiwgc3BlY3VsYXJFeHBvbmVudCgpLCBsaW1pdGluZ0NvbmVB
bmdsZSgpKTsKKyAgICByZXR1cm4gbmV3IFNwb3RMaWdodFNvdXJjZShwb3MsIGRpcmVjdGlvbiwg
c3BlY3VsYXJFeHBvbmVudCgpLCBsaW1pdGluZ0NvbmVBbmdsZSgpKTsKIH0KIAogfQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDM0ODY5KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKICAgICAgICAgU1ZHRkVTcG90TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdGRVNwb3RMaWdodEVsZW1lbnQoKTsK
IAotICAgICAgICB2aXJ0dWFsIFNWR0xpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRGlzdGFudExpZ2h0U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdEaXN0YW50TGlnaHRTb3VyY2UuaAkocmV2aXNpb24gMzQ4Njkp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Rpc3RhbnRMaWdodFNvdXJjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3Vp
bmJvYkBnbWFpbC5jb20+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogCkBAIC0yNywyMyArMjgsMjMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdEaXN0YW50TGlnaHRTb3VyY2UgOiBw
dWJsaWMgU1ZHTGlnaHRTb3VyY2UgewotcHVibGljOgotICAgIFNWR0Rpc3RhbnRMaWdodFNvdXJj
ZShmbG9hdCBhemltdXRoLCBmbG9hdCBlbGV2YXRpb24pCi0gICAgICAgIDogU1ZHTGlnaHRTb3Vy
Y2UoTFNfRElTVEFOVCkKLSAgICAgICAgLCBtX2F6aW11dGgoYXppbXV0aCkKLSAgICAgICAgLCBt
X2VsZXZhdGlvbihlbGV2YXRpb24pCi0gICAgeyB9Ci0KLSAgICBmbG9hdCBhemltdXRoKCkgY29u
c3QgeyByZXR1cm4gbV9hemltdXRoOyB9Ci0gICAgZmxvYXQgZWxldmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGV2YXRpb247IH0KLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZmxvYXQg
bV9hemltdXRoOwotICAgIGZsb2F0IG1fZWxldmF0aW9uOwotfTsKKyAgICBjbGFzcyBEaXN0YW50
TGlnaHRTb3VyY2UgOiBwdWJsaWMgTGlnaHRTb3VyY2UgeworICAgIHB1YmxpYzoKKyAgICAgICAg
RGlzdGFudExpZ2h0U291cmNlKGZsb2F0IGF6aW11dGgsIGZsb2F0IGVsZXZhdGlvbikKKyAgICAg
ICAgICAgIDogTGlnaHRTb3VyY2UoTFNfRElTVEFOVCkKKyAgICAgICAgICAgICwgbV9hemltdXRo
KGF6aW11dGgpCisgICAgICAgICAgICAsIG1fZWxldmF0aW9uKGVsZXZhdGlvbikKKyAgICAgICAg
eyB9CisKKyAgICAgICAgZmxvYXQgYXppbXV0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXppbXV0aDsg
fQorICAgICAgICBmbG9hdCBlbGV2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VsZXZhdGlvbjsg
fQorCisgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJikgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBmbG9hdCBtX2F6aW11
dGg7CisgICAgICAgIGZsb2F0IG1fZWxldmF0aW9uOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlzaW9uIDM0ODY5KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDEyICs5OCwxMiBAQAogICAgIG1fa2VybmVsVW5pdExlbmd0aFkgPSBrZXJuZWxV
bml0TGVuZ3RoWTsKIH0KIAotY29uc3QgU1ZHTGlnaHRTb3VyY2UqIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSogU1ZHRkVEaWZmdXNl
TGlnaHRpbmc6OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saWdodFNvdXJj
ZS5nZXQoKTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2Uo
U1ZHTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQordm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6
c2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQogeyAgICAKICAgICBtX2xp
Z2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCShyZXZpc2lvbiAzNDg2OSkK
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNWR0xpZ2h0U291cmNlOworY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nIDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CkBAIC01
MCw4ICs1MCw4IEBACiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFkoKSBjb25zdDsKICAgICB2
b2lkIHNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0KTsKIAotICAgIGNvbnN0IFNWR0xpZ2h0U291
cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoU1ZHTGln
aHRTb3VyY2UqKTsKKyAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsK
KyAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7CiAKICAgICB2aXJ0dWFsIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogCkBA
IC02Nyw3ICs2Nyw3IEBACiAgICAgZmxvYXQgbV9kaWZmdXNlQ29uc3RhbnQ7CiAgICAgZmxvYXQg
bV9rZXJuZWxVbml0TGVuZ3RoWDsKICAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhZOwotICAg
IFJlZlB0cjxTVkdMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBSZWZQdHI8TGlnaHRT
b3VyY2U+IG1fbGlnaHRTb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmcuY3BwCShyZXZpc2lvbiAzNDg2OSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDEy
ICsxMDgsMTIgQEAKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZID0ga2VybmVsVW5pdExlbmd0aFk7
CiB9CiAKLWNvbnN0IFNWR0xpZ2h0U291cmNlKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OmxpZ2h0
U291cmNlKCkgY29uc3QKK2NvbnN0IExpZ2h0U291cmNlKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6
OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saWdodFNvdXJjZS5nZXQoKTsK
IH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKFNWR0xpZ2h0
U291cmNlKiBsaWdodFNvdXJjZSkKK3ZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdo
dFNvdXJjZShMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UpCiB7CiAgICAgbV9saWdodFNvdXJjZSA9
IGxpZ2h0U291cmNlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiAzNDg2OSkKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDggKzUyLDggQEAKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwogCi0gICAgY29uc3Qg
U1ZHTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaWdodFNv
dXJjZShTVkdMaWdodFNvdXJjZSopOworICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJj
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAogICAg
IHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikg
Y29uc3Q7CiAKQEAgLTcwLDcgKzcwLDcgQEAKICAgICBmbG9hdCBtX3NwZWN1bGFyRXhwb25lbnQ7
CiAgICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWDsKICAgICBmbG9hdCBtX2tlcm5lbFVuaXRM
ZW5ndGhZOwotICAgIFJlZlB0cjxTVkdMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBS
ZWZQdHI8TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0U291cmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0
U291cmNlLmNwcAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0xpZ2h0U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDE0IEBA
CiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBTVkdQb2ludExpZ2h0U291cmNlOjpl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYg
UG9pbnRMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykg
Y29uc3QKIHsKICAgICB0cyA8PCAiW3R5cGU9UE9JTlQtTElHSFRdICI7CiAgICAgdHMgPDwgIltw
b3NpdGlvbj1cIiIgPDwgcG9zaXRpb24oKSA8PCAiXCJdIjsKICAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIFNWR1Nwb3RMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cykgY29uc3QKK1RleHRTdHJlYW0mIFNwb3RMaWdodFNvdXJjZTo6ZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKICAgICB0cyA8PCAiW3R5
cGU9U1BPVC1MSUdIVF0gIjsKICAgICB0cyA8PCAiW3Bvc2l0aW9uPVwiIiA8PCBwb3NpdGlvbigp
IDw8ICJcIl0iOwpAQCAtNTIsNyArNTIsNyBAQAogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0
cmVhbSYgU1ZHRGlzdGFudExpZ2h0U291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYgRGlzdGFudExpZ2h0U291cmNlOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIHRzIDw8ICJbdHlw
ZT1ESVNUQU5ULUxJR0hUXSAiOwogICAgIHRzIDw8ICJbYXppbXV0aD1cIiIgPDwgYXppbXV0aCgp
IDw8ICJcIl0iOwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdMaWdodFNv
dXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHTGln
aHRTb3VyY2UuaAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0xpZ2h0U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgot
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggQWxleCBNYXRo
ZXdzIDxwb3NzZXNzZWRwZW5ndWluYm9iQGdtYWlsLmNvbT4KKyAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAK
QEAgLTI3LDI5ICsyOCwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU1ZHTGln
aHRUeXBlIHsKLSAgICBMU19ESVNUQU5ULAotICAgIExTX1BPSU5ULAotICAgIExTX1NQT1QKLX07
Ci0KLWNsYXNzIFRleHRTdHJlYW07Ci0KLWNsYXNzIFNWR0xpZ2h0U291cmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8U1ZHTGlnaHRTb3VyY2U+IHsKLXB1YmxpYzoKLSAgICBTVkdMaWdodFNvdXJjZShT
VkdMaWdodFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICB7IH0KLQotICAg
IHZpcnR1YWwgflNWR0xpZ2h0U291cmNlKCkgeyB9Ci0KLSAgICBTVkdMaWdodFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3QgPSAwOwotCi1wcml2YXRlOgotICAg
IFNWR0xpZ2h0VHlwZSBtX3R5cGU7Ci19OwotCisgICAgZW51bSBMaWdodFR5cGUgeworICAgICAg
ICBMU19ESVNUQU5ULAorICAgICAgICBMU19QT0lOVCwKKyAgICAgICAgTFNfU1BPVAorICAgIH07
CisKKyAgICBjbGFzcyBUZXh0U3RyZWFtOworCisgICAgY2xhc3MgTGlnaHRTb3VyY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxMaWdodFNvdXJjZT4geworICAgIHB1YmxpYzoKKyAgICAgICAgTGlnaHRT
b3VyY2UoTGlnaHRUeXBlIHR5cGUpCisgICAgICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAg
ICB7IH0KKworICAgICAgICB2aXJ0dWFsIH5MaWdodFNvdXJjZSgpIHsgfQorCisgICAgICAgIExp
Z2h0VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgICAgIHZpcnR1YWwg
VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3QgPSAw
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgTGlnaHRUeXBlIG1fdHlwZTsKKyAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHUG9pbnRMaWdodFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHUG9pbnRMaWdodFNvdXJjZS5oCShyZXZpc2lvbiAzNDg2OSkKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHUG9pbnRMaWdodFNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAg
Q29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFp
bC5jb20+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNSBFcmlj
IFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogCkBAIC0yOCwyMCArMjksMjAgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdQb2ludExpZ2h0U291cmNlIDogcHVibGljIFNWR0xp
Z2h0U291cmNlIHsKLXB1YmxpYzoKLSAgICBTVkdQb2ludExpZ2h0U291cmNlKGNvbnN0IEZsb2F0
UG9pbnQzRCYgcG9zaXRpb24pCi0gICAgICAgIDogU1ZHTGlnaHRTb3VyY2UoTFNfUE9JTlQpCi0g
ICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKLSAgICB7IH0KLQotICAgIGNvbnN0IEZsb2F0
UG9pbnQzRCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Ci0KLSAgICB2
aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNv
bnN0OwotCi1wcml2YXRlOgotICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOwotfTsKKyAgICBj
bGFzcyBQb2ludExpZ2h0U291cmNlIDogcHVibGljIExpZ2h0U291cmNlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFBvaW50TGlnaHRTb3VyY2UoY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlvbikK
KyAgICAgICAgICAgIDogTGlnaHRTb3VyY2UoTFNfUE9JTlQpCisgICAgICAgICAgICAsIG1fcG9z
aXRpb24ocG9zaXRpb24pCisgICAgICAgIHsgfQorCisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQz
RCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisKKyAgICAgICAgdmly
dHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25z
dDsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdTcG90TGlnaHRTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJjZS5oCShyZXZpc2lvbiAzNDg2OSkK
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHU3BvdExpZ2h0U291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDggQWxleCBNYXRoZXdzIDxwb3NzZXNzZWRwZW5ndWluYm9i
QGdtYWlsLmNvbT4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAy
MDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1
IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAKQEAgLTI4LDMxICsyOSwzMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR1Nwb3RMaWdodFNvdXJjZSA6IHB1YmxpYyBT
VkdMaWdodFNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgU1ZHU3BvdExpZ2h0U291cmNlKGNvbnN0IEZs
b2F0UG9pbnQzRCYgcG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQzRCYgZGlyZWN0aW9uLCBmbG9h
dCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSkKLSAgICAgICAgOiBT
VkdMaWdodFNvdXJjZShMU19TUE9UKQotICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCi0g
ICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQotICAgICAgICAsIG1fc3BlY3VsYXJFeHBv
bmVudChzcGVjdWxhckV4cG9uZW50KQotICAgICAgICAsIG1fbGltaXRpbmdDb25lQW5nbGUobGlt
aXRpbmdDb25lQW5nbGUpCi0gICAgeyB9Ci0KLSAgICBjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIGNvbnN0IEZsb2F0UG9pbnQz
RCYgZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KLQotICAgIGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyRXhwb25lbnQ7IH0K
LSAgICBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRpbmdD
b25lQW5nbGU7IH0KLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgRmxvYXRQb2ludDNEIG1f
cG9zaXRpb247Ci0gICAgRmxvYXRQb2ludDNEIG1fZGlyZWN0aW9uOwotCi0gICAgZmxvYXQgbV9z
cGVjdWxhckV4cG9uZW50OwotICAgIGZsb2F0IG1fbGltaXRpbmdDb25lQW5nbGU7Ci19OworICAg
IGNsYXNzIFNwb3RMaWdodFNvdXJjZSA6IHB1YmxpYyBMaWdodFNvdXJjZSB7CisgICAgcHVibGlj
OgorICAgICAgICBTcG90TGlnaHRTb3VyY2UoY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlvbiwg
Y29uc3QgRmxvYXRQb2ludDNEJiBkaXJlY3Rpb24sIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZs
b2F0IGxpbWl0aW5nQ29uZUFuZ2xlKQorICAgICAgICAgICAgOiBMaWdodFNvdXJjZShMU19TUE9U
KQorICAgICAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAgICAgLCBtX2Rp
cmVjdGlvbihkaXJlY3Rpb24pCisgICAgICAgICAgICAsIG1fc3BlY3VsYXJFeHBvbmVudChzcGVj
dWxhckV4cG9uZW50KQorICAgICAgICAgICAgLCBtX2xpbWl0aW5nQ29uZUFuZ2xlKGxpbWl0aW5n
Q29uZUFuZ2xlKQorICAgICAgICB7IH0KKworICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QmIHBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgICAgICBjb25zdCBGbG9h
dFBvaW50M0QmIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CisKKyAg
ICAgICAgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJF
eHBvbmVudDsgfQorICAgICAgICBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGltaXRpbmdDb25lQW5nbGU7IH0KKworICAgICAgICB2aXJ0dWFsIFRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247CisgICAgICAgIEZsb2F0UG9pbnQz
RCBtX2RpcmVjdGlvbjsKKworICAgICAgICBmbG9hdCBtX3NwZWN1bGFyRXhwb25lbnQ7CisgICAg
ICAgIGZsb2F0IG1fbGltaXRpbmdDb25lQW5nbGU7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9jZy9TVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tCShyZXZpc2lvbiAzNDg2OSkKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBDSUZpbHRlciogU1ZHRkVEaWZmdXNl
TGlnaHRpbmc6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKIHsKLSAg
ICBjb25zdCBTVkdMaWdodFNvdXJjZSogbGlnaHQgPSBsaWdodFNvdXJjZSgpOworICAgIGNvbnN0
IExpZ2h0U291cmNlKiBsaWdodCA9IGxpZ2h0U291cmNlKCk7CiAgICAgaWYgKCFsaWdodCkKICAg
ICAgICAgcmV0dXJuIG5pbDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9TVkdGRUhlbHBlcnNDZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBjbGFzcyBDb2xv
cjsKLWNsYXNzIFNWR0xpZ2h0U291cmNlOworY2xhc3MgTGlnaHRTb3VyY2U7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzgsNyArMzgsNyBAQAogCiAvLyBMaWdodGluZwogQ0lGaWx0ZXIq
IGdldFBvaW50TGlnaHRWZWN0b3JzKENJRmlsdGVyKiBub3JtYWxzLCBDSVZlY3RvciogbGlnaHRQ
b3NpdGlvbiwgZmxvYXQgc3VyZmFjZVNjYWxlKTsKLUNJRmlsdGVyKiBnZXRMaWdodFZlY3RvcnMo
Q0lGaWx0ZXIqIG5vcm1hbHMsIGNvbnN0IFNWR0xpZ2h0U291cmNlKiBsaWdodCwgZmxvYXQgc3Vy
ZmFjZVNjYWxlKTsKK0NJRmlsdGVyKiBnZXRMaWdodFZlY3RvcnMoQ0lGaWx0ZXIqIG5vcm1hbHMs
IGNvbnN0IExpZ2h0U291cmNlKiBsaWdodCwgZmxvYXQgc3VyZmFjZVNjYWxlKTsKIENJRmlsdGVy
KiBnZXROb3JtYWxNYXAoQ0lJbWFnZSogYnVtcE1hcCwgZmxvYXQgc2NhbGUpOwogCiB9OwpJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0Nn
Lm1tCShyZXZpc2lvbiAzNDg2OSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVIZWxwZXJzQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAKICAgICBy
ZXR1cm4gbmlsOwogfQogCi1DSUZpbHRlciogZ2V0TGlnaHRWZWN0b3JzKENJRmlsdGVyKiBub3Jt
YWxzLCBjb25zdCBTVkdMaWdodFNvdXJjZSogbGlnaHQsIGZsb2F0IHN1cmZhY2VTY2FsZSkKK0NJ
RmlsdGVyKiBnZXRMaWdodFZlY3RvcnMoQ0lGaWx0ZXIqIG5vcm1hbHMsIGNvbnN0IExpZ2h0U291
cmNlKiBsaWdodCwgZmxvYXQgc3VyZmFjZVNjYWxlKQogewogICAgIFtXS0Rpc3RhbnRMaWdodEZp
bHRlciBjbGFzc107CiAgICAgW1dLUG9pbnRMaWdodEZpbHRlciBjbGFzc107CkBAIC05NCw3ICs5
NCw3IEBACiAgICAgc3dpdGNoIChsaWdodC0+dHlwZSgpKSB7CiAgICAgY2FzZSBMU19ESVNUQU5U
OgogICAgIHsKLSAgICAgICAgY29uc3QgU1ZHRGlzdGFudExpZ2h0U291cmNlKiBkbGlnaHQgPSBz
dGF0aWNfY2FzdDxjb25zdCBTVkdEaXN0YW50TGlnaHRTb3VyY2UqPihsaWdodCk7CisgICAgICAg
IGNvbnN0IERpc3RhbnRMaWdodFNvdXJjZSogZGxpZ2h0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlz
dGFudExpZ2h0U291cmNlKj4obGlnaHQpOwogCiAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBm
aWx0ZXJXaXRoTmFtZTpAIldLRGlzdGFudExpZ2h0Il07CiAgICAgICAgIGlmICghZmlsdGVyKQpA
QCAtMTE1LDEyICsxMTUsMTIgQEAKICAgICB9CiAgICAgY2FzZSBMU19QT0lOVDoKICAgICB7Ci0g
ICAgICAgIGNvbnN0IFNWR1BvaW50TGlnaHRTb3VyY2UqIHBsaWdodCA9IHN0YXRpY19jYXN0PGNv
bnN0IFNWR1BvaW50TGlnaHRTb3VyY2UqPihsaWdodCk7CisgICAgICAgIGNvbnN0IFBvaW50TGln
aHRTb3VyY2UqIHBsaWdodCA9IHN0YXRpY19jYXN0PGNvbnN0IFBvaW50TGlnaHRTb3VyY2UqPihs
aWdodCk7CiAgICAgICAgIHJldHVybiBnZXRQb2ludExpZ2h0VmVjdG9ycyhub3JtYWxzLCBbQ0lW
ZWN0b3IgdmVjdG9yV2l0aFg6cGxpZ2h0LT5wb3NpdGlvbigpLngoKSBZOnBsaWdodC0+cG9zaXRp
b24oKS55KCkgWjpwbGlnaHQtPnBvc2l0aW9uKCkueigpXSwgc3VyZmFjZVNjYWxlKTsKICAgICB9
CiAgICAgY2FzZSBMU19TUE9UOgogICAgIHsKLSAgICAgICAgY29uc3QgU1ZHU3BvdExpZ2h0U291
cmNlKiBzbGlnaHQgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdTcG90TGlnaHRTb3VyY2UqPihsaWdo
dCk7CisgICAgICAgIGNvbnN0IFNwb3RMaWdodFNvdXJjZSogc2xpZ2h0ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgU3BvdExpZ2h0U291cmNlKj4obGlnaHQpOwogICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0
ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS1Nwb3RMaWdodCJdOwogICAgICAgICBpZiAoIWZpbHRlcikK
ICAgICAgICAgICAgIHJldHVybiBuaWw7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nQ2cubW0JKHJldmlz
aW9uIDM0ODY5KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBDSUZp
bHRlciogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3Qm
IGJib3gpIGNvbnN0CiB7Ci0gICAgY29uc3QgU1ZHTGlnaHRTb3VyY2UqIGxpZ2h0ID0gbGlnaHRT
b3VyY2UoKTsKKyAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHQgPSBsaWdodFNvdXJjZSgpOwog
ICAgIGlmICghbGlnaHQpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22022</attachid>
            <date>2008-07-01 03:44:44 -0700</date>
            <delta_ts>2008-07-01 03:47:06 -0700</delta_ts>
            <desc>above with webcore changelog</desc>
            <filename>output.diff</filename>
            <type>text/plain</type>
            <size>23407</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDkxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjkgQEAKKzIwMDgtMDctMDEgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENsYXNzIG5hbWUgY2hhbmdlcyBmb3IgU1ZHIExpZ2h0IEVmZmVjdCBmaWxlcy4g
VGhlIGNsYXNzIG5hbWVzIHRoYXQgY2hhbmdlZCA6CisKKyAgICAgICAgU1ZHTGlnaHRTb3VyY2Ug
LT4gTGlnaHRTb3VyY2UKKyAgICAgICAgU1ZHRGlzdGFudExpZ2h0U291cmNlIC0+IERpc3RhbnRM
aWdodFNvdXJjZQorICAgICAgICBTVkdQb2ludExpZ2h0U291cmNlIC0+IFBvaW50TGlnaHRTb3Vy
Y2UKKyAgICAgICAgU1ZHU3BvdExpZ2h0U291cmNlIC0+IFNwb3RMaWdodFNvdXJjZQorCisgICAg
ICAgIEV2ZXJ5IG90aGVyIGZpbGUgdGhhdCBpcyBjaGFuZ2VkIGlzIGp1c3QgcHJvcGFnYXRpbmcg
dGhlIGNsYXNzIG5hbWUgY2hhbmdlcyB0bworICAgICAgICBkZXBlbmRlbnQgZmlsZXMuCisKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRzKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UpOgorICAgICAgICAqIHN2Zy9T
VkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVBvaW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSk6CisgICAgICAg
ICogc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50Ojp1cGRhdGVMaWdodHMpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwb3RM
aWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcG90TGlnaHRFbGVtZW50
OjpsaWdodFNvdXJjZSk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Rpc3RhbnRMaWdodFNvdXJjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzdGFudExpZ2h0U291cmNlOjpEaXN0YW50TGlnaHRTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFudExpZ2h0U291cmNlOjphemltdXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3RhbnRMaWdodFNvdXJjZTo6ZWxldmF0aW9uKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OmxpZ2h0U291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvaW50TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3RhbnRMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHTGlnaHRTb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJjZTo6TGlnaHRTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3VyY2U6On5MaWdodFNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWdodFNvdXJjZTo6dHlwZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHUG9pbnRMaWdodFNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRM
aWdodFNvdXJjZTo6UG9pbnRMaWdodFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludExp
Z2h0U291cmNlOjpwb3NpdGlvbik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
U3BvdExpZ2h0U291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OlNw
b3RMaWdodFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwb3RMaWdodFNvdXJjZTo6ZGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwb3RMaWdodFNvdXJjZTo6c3BlY3VsYXJFeHBvbmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OmxpbWl0aW5nQ29uZUFuZ2xlKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmdldENJRmlsdGVyKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0TGlnaHRWZWN0b3JzKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVy
cy9jZy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
U3BlY3VsYXJMaWdodGluZzo6Z2V0Q0lGaWx0ZXIpOgorCiAyMDA4LTA3LTAxICBBbHAgVG9rZXIg
IDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBIb2xnZXIuCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlz
aW9uIDM0ODY5KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgaWYgKCFtX2ZpbHRlckVm
ZmVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFNWR0xpZ2h0U291cmNlKiBsaWdodCA9
IDA7CisgICAgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gMDsKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJz
dENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChuLT5oYXNU
YWdOYW1lKFNWR05hbWVzOjpmZURpc3RhbnRMaWdodFRhZykgfHwKICAgICAgICAgICAgIG4tPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZlUG9pbnRMaWdodFRhZykgfHwKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5
ICszNCw5IEBACiB7CiB9CiAKLVNWR0xpZ2h0U291cmNlKiBTVkdGRURpc3RhbnRMaWdodEVsZW1l
bnQ6OmxpZ2h0U291cmNlKCkgY29uc3QKK0xpZ2h0U291cmNlKiBTVkdGRURpc3RhbnRMaWdodEVs
ZW1lbnQ6OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV3IFNWR0Rpc3RhbnRM
aWdodFNvdXJjZShhemltdXRoKCksIGVsZXZhdGlvbigpKTsKKyAgICByZXR1cm4gbmV3IERpc3Rh
bnRMaWdodFNvdXJjZShhemltdXRoKCksIGVsZXZhdGlvbigpKTsKIH0KIAogfQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDM0ODY5KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKICAgICAgICAgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdGRURpc3RhbnRMaWdo
dEVsZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIFNWR0xpZ2h0U291cmNlKiBsaWdodFNvdXJj
ZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNv
bnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFTGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuaAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAgICAgICAgIFNWR0ZFTGln
aHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0
dWFsIH5TVkdGRUxpZ2h0RWxlbWVudCgpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBTVkdM
aWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgTGln
aHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKICAgICBwcml2YXRlOgpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM0ODY5
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDEwICszNCwxMCBAQAogewogfQogCi1TVkdMaWdodFNvdXJjZSogU1ZHRkVQb2lu
dExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoKSBjb25zdAorTGlnaHRTb3VyY2UqIFNWR0ZFUG9p
bnRMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKICAgICBGbG9hdFBvaW50M0Qg
cG9zKHgoKSwgeSgpLCB6KCkpOwotICAgIHJldHVybiBuZXcgU1ZHUG9pbnRMaWdodFNvdXJjZShw
b3MpOworICAgIHJldHVybiBuZXcgUG9pbnRMaWdodFNvdXJjZShwb3MpOwogfQogCiB9CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiAzNDg2OSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQAogICAgICAgICBTVkdGRVBvaW50TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdGRVBvaW50TGlnaHRFbGVt
ZW50KCk7CiAKLSAgICAgICAgdmlydHVhbCBTVkdMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDcgKzEwOSw3IEBACiAgICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU1ZHTGlnaHRTb3VyY2UqIGxpZ2h0ID0gMDsgICAgCisgICAgTGlnaHRTb3Vy
Y2UqIGxpZ2h0ID0gMDsgICAgCiAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBu
ID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1l
czo6ZmVEaXN0YW50TGlnaHRUYWcpIHx8IAogICAgICAgICAgICAgbi0+aGFzVGFnTmFtZShTVkdO
YW1lczo6ZmVQb2ludExpZ2h0VGFnKSB8fApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGln
aHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAzNDg2OSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIHsKIH0KIAotU1ZH
TGlnaHRTb3VyY2UqIFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoKSBjb25zdAor
TGlnaHRTb3VyY2UqIFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoKSBjb25zdAog
ewogICAgIEZsb2F0UG9pbnQzRCBwb3MoeCgpLCB5KCksIHooKSk7CiAKQEAgLTQ0LDcgKzQ0LDcg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c0F0WigpIC0gcG9zLnooKSk7CiAK
ICAgICBkaXJlY3Rpb24ubm9ybWFsaXplKCk7Ci0gICAgcmV0dXJuIG5ldyBTVkdTcG90TGlnaHRT
b3VyY2UocG9zLCBkaXJlY3Rpb24sIHNwZWN1bGFyRXhwb25lbnQoKSwgbGltaXRpbmdDb25lQW5n
bGUoKSk7CisgICAgcmV0dXJuIG5ldyBTcG90TGlnaHRTb3VyY2UocG9zLCBkaXJlY3Rpb24sIHNw
ZWN1bGFyRXhwb25lbnQoKSwgbGltaXRpbmdDb25lQW5nbGUoKSk7CiB9CiAKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiAzNDg2OSkKKysrIFdlYkNvcmUv
c3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAgICAgICAgIFNWR0ZFU3BvdExpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVTcG90TGlnaHRFbGVtZW50KCk7CiAK
LSAgICAgICAgdmlydHVhbCBTVkdMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0Rpc3RhbnRMaWdodFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRGlzdGFudExpZ2h0U291cmNlLmgJKHJldmlzaW9uIDM0ODY5KQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdEaXN0YW50TGlnaHRTb3VyY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwOCBBbGV4IE1hdGhld3MgPHBvc3Nlc3NlZHBlbmd1aW5i
b2JAZ21haWwuY29tPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KIApAQCAtMjcsMjMgKzI4LDIzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRGlzdGFudExpZ2h0U291cmNlIDogcHVi
bGljIFNWR0xpZ2h0U291cmNlIHsKLXB1YmxpYzoKLSAgICBTVkdEaXN0YW50TGlnaHRTb3VyY2Uo
ZmxvYXQgYXppbXV0aCwgZmxvYXQgZWxldmF0aW9uKQotICAgICAgICA6IFNWR0xpZ2h0U291cmNl
KExTX0RJU1RBTlQpCi0gICAgICAgICwgbV9hemltdXRoKGF6aW11dGgpCi0gICAgICAgICwgbV9l
bGV2YXRpb24oZWxldmF0aW9uKQotICAgIHsgfQotCi0gICAgZmxvYXQgYXppbXV0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXppbXV0aDsgfQotICAgIGZsb2F0IGVsZXZhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZWxldmF0aW9uOyB9Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGZsb2F0IG1f
YXppbXV0aDsKLSAgICBmbG9hdCBtX2VsZXZhdGlvbjsKLX07CisgICAgY2xhc3MgRGlzdGFudExp
Z2h0U291cmNlIDogcHVibGljIExpZ2h0U291cmNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERp
c3RhbnRMaWdodFNvdXJjZShmbG9hdCBhemltdXRoLCBmbG9hdCBlbGV2YXRpb24pCisgICAgICAg
ICAgICA6IExpZ2h0U291cmNlKExTX0RJU1RBTlQpCisgICAgICAgICAgICAsIG1fYXppbXV0aChh
emltdXRoKQorICAgICAgICAgICAgLCBtX2VsZXZhdGlvbihlbGV2YXRpb24pCisgICAgICAgIHsg
fQorCisgICAgICAgIGZsb2F0IGF6aW11dGgoKSBjb25zdCB7IHJldHVybiBtX2F6aW11dGg7IH0K
KyAgICAgICAgZmxvYXQgZWxldmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbGV2YXRpb247IH0K
KworICAgICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZmxvYXQgbV9hemltdXRo
OworICAgICAgICBmbG9hdCBtX2VsZXZhdGlvbjsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNl
TGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCShyZXZpc2lvbiAzNDg2OSkKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OCwxMiArOTgsMTIgQEAKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZID0ga2VybmVsVW5p
dExlbmd0aFk7CiB9CiAKLWNvbnN0IFNWR0xpZ2h0U291cmNlKiBTVkdGRURpZmZ1c2VMaWdodGlu
Zzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRTb3VyY2UqIFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGlnaHRTb3VyY2Uu
Z2V0KCk7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKFNW
R0xpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKK3ZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dExpZ2h0U291cmNlKExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKIHsgICAgCiAgICAgbV9saWdo
dFNvdXJjZSA9IGxpZ2h0U291cmNlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkocmV2aXNpb24gMzQ4NjkpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTVkdMaWdodFNvdXJjZTsKK2NsYXNzIExpZ2h0U291cmNlOwogCiBjbGFzcyBTVkdGRURp
ZmZ1c2VMaWdodGluZyA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewogcHVibGljOgpAQCAtNTAs
OCArNTAsOCBAQAogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKLSAgICBjb25zdCBTVkdMaWdodFNvdXJj
ZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAgICB2b2lkIHNldExpZ2h0U291cmNlKFNWR0xpZ2h0
U291cmNlKik7CisgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwogCiAgICAgdmlydHVhbCBUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKIApAQCAt
NjcsNyArNjcsNyBAQAogICAgIGZsb2F0IG1fZGlmZnVzZUNvbnN0YW50OwogICAgIGZsb2F0IG1f
a2VybmVsVW5pdExlbmd0aFg7CiAgICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWTsKLSAgICBS
ZWZQdHI8U1ZHTGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CisgICAgUmVmUHRyPExpZ2h0U291
cmNlPiBtX2xpZ2h0U291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nLmNwcAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCwxMiAr
MTA4LDEyIEBACiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWSA9IGtlcm5lbFVuaXRMZW5ndGhZOwog
fQogCi1jb25zdCBTVkdMaWdodFNvdXJjZSogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpsaWdodFNv
dXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjps
aWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9
CiAKLXZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZShTVkdMaWdodFNv
dXJjZSogbGlnaHRTb3VyY2UpCit2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRT
b3VyY2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQogewogICAgIG1fbGlnaHRTb3VyY2UgPSBs
aWdodFNvdXJjZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw4ICs1Miw4IEBACiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFkoKSBjb25z
dDsKICAgICB2b2lkIHNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0KTsKIAotICAgIGNvbnN0IFNW
R0xpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TGlnaHRTb3Vy
Y2UoU1ZHTGlnaHRTb3VyY2UqKTsKKyAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2Uo
KSBjb25zdDsKKyAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7CiAKICAgICB2
aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNv
bnN0OwogCkBAIC03MCw3ICs3MCw3IEBACiAgICAgZmxvYXQgbV9zcGVjdWxhckV4cG9uZW50Owog
ICAgIGZsb2F0IG1fa2VybmVsVW5pdExlbmd0aFg7CiAgICAgZmxvYXQgbV9rZXJuZWxVbml0TGVu
Z3RoWTsKLSAgICBSZWZQdHI8U1ZHTGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CisgICAgUmVm
UHRyPExpZ2h0U291cmNlPiBtX2xpZ2h0U291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdMaWdodFNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdMaWdodFNv
dXJjZS5jcHAJKHJldmlzaW9uIDM0ODY5KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdMaWdodFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE0ICszNSwxNCBAQAog
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHUG9pbnRMaWdodFNvdXJjZTo6ZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKK1RleHRTdHJlYW0mIFBv
aW50TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNv
bnN0CiB7CiAgICAgdHMgPDwgIlt0eXBlPVBPSU5ULUxJR0hUXSAiOwogICAgIHRzIDw8ICJbcG9z
aXRpb249XCIiIDw8IHBvc2l0aW9uKCkgPDwgIlwiXSI7CiAgICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBTVkdTcG90TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYgdHMpIGNvbnN0CitUZXh0U3RyZWFtJiBTcG90TGlnaHRTb3VyY2U6OmV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgdHMgPDwgIlt0eXBl
PVNQT1QtTElHSFRdICI7CiAgICAgdHMgPDwgIltwb3NpdGlvbj1cIiIgPDwgcG9zaXRpb24oKSA8
PCAiXCJdIjsKQEAgLTUyLDcgKzUyLDcgQEAKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIFNWR0Rpc3RhbnRMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cykgY29uc3QKK1RleHRTdHJlYW0mIERpc3RhbnRMaWdodFNvdXJjZTo6ZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKICAgICB0cyA8PCAiW3R5cGU9
RElTVEFOVC1MSUdIVF0gIjsKICAgICB0cyA8PCAiW2F6aW11dGg9XCIiIDw8IGF6aW11dGgoKSA8
PCAiXCJdIjsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHTGlnaHRTb3Vy
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0
U291cmNlLmgJKHJldmlzaW9uIDM0ODY5KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdMaWdodFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3
cyA8cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+CisgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
ICAgICAgICAgICAgICAgICAgMjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogCkBA
IC0yNywyOSArMjgsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFNWR0xpZ2h0
VHlwZSB7Ci0gICAgTFNfRElTVEFOVCwKLSAgICBMU19QT0lOVCwKLSAgICBMU19TUE9UCi19Owot
Ci1jbGFzcyBUZXh0U3RyZWFtOwotCi1jbGFzcyBTVkdMaWdodFNvdXJjZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFNWR0xpZ2h0U291cmNlPiB7Ci1wdWJsaWM6Ci0gICAgU1ZHTGlnaHRTb3VyY2UoU1ZH
TGlnaHRUeXBlIHR5cGUpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgeyB9Ci0KLSAgICB2
aXJ0dWFsIH5TVkdMaWdodFNvdXJjZSgpIHsgfQotCi0gICAgU1ZHTGlnaHRUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0ID0gMDsKLQotcHJpdmF0ZToKLSAgICBT
VkdMaWdodFR5cGUgbV90eXBlOwotfTsKLQorICAgIGVudW0gTGlnaHRUeXBlIHsKKyAgICAgICAg
TFNfRElTVEFOVCwKKyAgICAgICAgTFNfUE9JTlQsCisgICAgICAgIExTX1NQT1QKKyAgICB9Owor
CisgICAgY2xhc3MgVGV4dFN0cmVhbTsKKworICAgIGNsYXNzIExpZ2h0U291cmNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8TGlnaHRTb3VyY2U+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIExpZ2h0U291
cmNlKExpZ2h0VHlwZSB0eXBlKQorICAgICAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAg
eyB9CisKKyAgICAgICAgdmlydHVhbCB+TGlnaHRTb3VyY2UoKSB7IH0KKworICAgICAgICBMaWdo
dFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICB2aXJ0dWFsIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0ID0gMDsK
KworICAgIHByaXZhdGU6CisgICAgICAgIExpZ2h0VHlwZSBtX3R5cGU7CisgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR1BvaW50TGlnaHRTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR1BvaW50TGlnaHRTb3VyY2UuaAkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1BvaW50TGlnaHRTb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENv
cHlyaWdodCAoQykgMjAwOCBBbGV4IE1hdGhld3MgPHBvc3Nlc3NlZHBlbmd1aW5ib2JAZ21haWwu
Y29tPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDUgRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KIApAQCAtMjgsMjAgKzI5LDIwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHUG9pbnRMaWdodFNvdXJjZSA6IHB1YmxpYyBTVkdMaWdo
dFNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgU1ZHUG9pbnRMaWdodFNvdXJjZShjb25zdCBGbG9hdFBv
aW50M0QmIHBvc2l0aW9uKQotICAgICAgICA6IFNWR0xpZ2h0U291cmNlKExTX1BPSU5UKQotICAg
ICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCi0gICAgeyB9Ci0KLSAgICBjb25zdCBGbG9hdFBv
aW50M0QmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotCi0gICAgdmly
dHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKLX07CisgICAgY2xh
c3MgUG9pbnRMaWdodFNvdXJjZSA6IHB1YmxpYyBMaWdodFNvdXJjZSB7CisgICAgcHVibGljOgor
ICAgICAgICBQb2ludExpZ2h0U291cmNlKGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24pCisg
ICAgICAgICAgICA6IExpZ2h0U291cmNlKExTX1BPSU5UKQorICAgICAgICAgICAgLCBtX3Bvc2l0
aW9uKHBvc2l0aW9uKQorICAgICAgICB7IH0KKworICAgICAgICBjb25zdCBGbG9hdFBvaW50M0Qm
IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorCisgICAgICAgIHZpcnR1
YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKKyAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHU3BvdExpZ2h0U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdTcG90TGlnaHRTb3VyY2UuaAkocmV2aXNpb24gMzQ4NjkpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Cisg
ICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3VpbmJvYkBn
bWFpbC5jb20+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNSBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogCkBAIC0yOCwzMSArMjksMzEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdTcG90TGlnaHRTb3VyY2UgOiBwdWJsaWMgU1ZH
TGlnaHRTb3VyY2UgewotcHVibGljOgotICAgIFNWR1Nwb3RMaWdodFNvdXJjZShjb25zdCBGbG9h
dFBvaW50M0QmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIGRpcmVjdGlvbiwgZmxvYXQg
c3BlY3VsYXJFeHBvbmVudCwgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUpCi0gICAgICAgIDogU1ZH
TGlnaHRTb3VyY2UoTFNfU1BPVCkKLSAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQotICAg
ICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAgLCBtX3NwZWN1bGFyRXhwb25l
bnQoc3BlY3VsYXJFeHBvbmVudCkKLSAgICAgICAgLCBtX2xpbWl0aW5nQ29uZUFuZ2xlKGxpbWl0
aW5nQ29uZUFuZ2xlKQotICAgIHsgfQotCi0gICAgY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICBjb25zdCBGbG9hdFBvaW50M0Qm
IGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9Ci0KLSAgICBmbG9hdCBz
cGVjdWxhckV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjdWxhckV4cG9uZW50OyB9Ci0g
ICAgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0aW5nQ29u
ZUFuZ2xlOyB9Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEZsb2F0UG9pbnQzRCBtX3Bv
c2l0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX2RpcmVjdGlvbjsKLQotICAgIGZsb2F0IG1fc3Bl
Y3VsYXJFeHBvbmVudDsKLSAgICBmbG9hdCBtX2xpbWl0aW5nQ29uZUFuZ2xlOwotfTsKKyAgICBj
bGFzcyBTcG90TGlnaHRTb3VyY2UgOiBwdWJsaWMgTGlnaHRTb3VyY2UgeworICAgIHB1YmxpYzoK
KyAgICAgICAgU3BvdExpZ2h0U291cmNlKGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQzRCYgZGlyZWN0aW9uLCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9h
dCBsaW1pdGluZ0NvbmVBbmdsZSkKKyAgICAgICAgICAgIDogTGlnaHRTb3VyY2UoTFNfU1BPVCkK
KyAgICAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgICAgICwgbV9kaXJl
Y3Rpb24oZGlyZWN0aW9uKQorICAgICAgICAgICAgLCBtX3NwZWN1bGFyRXhwb25lbnQoc3BlY3Vs
YXJFeHBvbmVudCkKKyAgICAgICAgICAgICwgbV9saW1pdGluZ0NvbmVBbmdsZShsaW1pdGluZ0Nv
bmVBbmdsZSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEJiBwb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICAgICAgY29uc3QgRmxvYXRQ
b2ludDNEJiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorCisgICAg
ICAgIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyRXhw
b25lbnQ7IH0KKyAgICAgICAgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUoKSBjb25zdCB7IHJldHVy
biBtX2xpbWl0aW5nQ29uZUFuZ2xlOyB9CisKKyAgICAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKKworICAgIHByaXZhdGU6
CisgICAgICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAgICAgICBGbG9hdFBvaW50M0Qg
bV9kaXJlY3Rpb247CisKKyAgICAgICAgZmxvYXQgbV9zcGVjdWxhckV4cG9uZW50OworICAgICAg
ICBmbG9hdCBtX2xpbWl0aW5nQ29uZUFuZ2xlOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURpZmZ1
c2VMaWdodGluZ0NnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbQkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogQ0lGaWx0ZXIqIFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nOjpnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgU1ZHTGlnaHRTb3VyY2UqIGxpZ2h0ID0gbGlnaHRTb3VyY2UoKTsKKyAgICBjb25zdCBM
aWdodFNvdXJjZSogbGlnaHQgPSBsaWdodFNvdXJjZSgpOwogICAgIGlmICghbGlnaHQpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVIZWxwZXJzQ2cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLmgJKHJldmlzaW9uIDM0ODY5KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogY2xhc3MgQ29sb3I7
Ci1jbGFzcyBTVkdMaWdodFNvdXJjZTsKK2NsYXNzIExpZ2h0U291cmNlOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM4LDcgKzM4LDcgQEAKIAogLy8gTGlnaHRpbmcKIENJRmlsdGVyKiBn
ZXRQb2ludExpZ2h0VmVjdG9ycyhDSUZpbHRlciogbm9ybWFscywgQ0lWZWN0b3IqIGxpZ2h0UG9z
aXRpb24sIGZsb2F0IHN1cmZhY2VTY2FsZSk7Ci1DSUZpbHRlciogZ2V0TGlnaHRWZWN0b3JzKENJ
RmlsdGVyKiBub3JtYWxzLCBjb25zdCBTVkdMaWdodFNvdXJjZSogbGlnaHQsIGZsb2F0IHN1cmZh
Y2VTY2FsZSk7CitDSUZpbHRlciogZ2V0TGlnaHRWZWN0b3JzKENJRmlsdGVyKiBub3JtYWxzLCBj
b25zdCBMaWdodFNvdXJjZSogbGlnaHQsIGZsb2F0IHN1cmZhY2VTY2FsZSk7CiBDSUZpbHRlciog
Z2V0Tm9ybWFsTWFwKENJSW1hZ2UqIGJ1bXBNYXAsIGZsb2F0IHNjYWxlKTsKIAogfTsKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5t
bQkocmV2aXNpb24gMzQ4NjkpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NW
R0ZFSGVscGVyc0NnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBACiAgICAgcmV0
dXJuIG5pbDsKIH0KIAotQ0lGaWx0ZXIqIGdldExpZ2h0VmVjdG9ycyhDSUZpbHRlciogbm9ybWFs
cywgY29uc3QgU1ZHTGlnaHRTb3VyY2UqIGxpZ2h0LCBmbG9hdCBzdXJmYWNlU2NhbGUpCitDSUZp
bHRlciogZ2V0TGlnaHRWZWN0b3JzKENJRmlsdGVyKiBub3JtYWxzLCBjb25zdCBMaWdodFNvdXJj
ZSogbGlnaHQsIGZsb2F0IHN1cmZhY2VTY2FsZSkKIHsKICAgICBbV0tEaXN0YW50TGlnaHRGaWx0
ZXIgY2xhc3NdOwogICAgIFtXS1BvaW50TGlnaHRGaWx0ZXIgY2xhc3NdOwpAQCAtOTQsNyArOTQs
NyBAQAogICAgIHN3aXRjaCAobGlnaHQtPnR5cGUoKSkgewogICAgIGNhc2UgTFNfRElTVEFOVDoK
ICAgICB7Ci0gICAgICAgIGNvbnN0IFNWR0Rpc3RhbnRMaWdodFNvdXJjZSogZGxpZ2h0ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU1ZHRGlzdGFudExpZ2h0U291cmNlKj4obGlnaHQpOworICAgICAgICBj
b25zdCBEaXN0YW50TGlnaHRTb3VyY2UqIGRsaWdodCA9IHN0YXRpY19jYXN0PGNvbnN0IERpc3Rh
bnRMaWdodFNvdXJjZSo+KGxpZ2h0KTsKIAogICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmls
dGVyV2l0aE5hbWU6QCJXS0Rpc3RhbnRMaWdodCJdOwogICAgICAgICBpZiAoIWZpbHRlcikKQEAg
LTExNSwxMiArMTE1LDEyIEBACiAgICAgfQogICAgIGNhc2UgTFNfUE9JTlQ6CiAgICAgewotICAg
ICAgICBjb25zdCBTVkdQb2ludExpZ2h0U291cmNlKiBwbGlnaHQgPSBzdGF0aWNfY2FzdDxjb25z
dCBTVkdQb2ludExpZ2h0U291cmNlKj4obGlnaHQpOworICAgICAgICBjb25zdCBQb2ludExpZ2h0
U291cmNlKiBwbGlnaHQgPSBzdGF0aWNfY2FzdDxjb25zdCBQb2ludExpZ2h0U291cmNlKj4obGln
aHQpOwogICAgICAgICByZXR1cm4gZ2V0UG9pbnRMaWdodFZlY3RvcnMobm9ybWFscywgW0NJVmVj
dG9yIHZlY3RvcldpdGhYOnBsaWdodC0+cG9zaXRpb24oKS54KCkgWTpwbGlnaHQtPnBvc2l0aW9u
KCkueSgpIFo6cGxpZ2h0LT5wb3NpdGlvbigpLnooKV0sIHN1cmZhY2VTY2FsZSk7CiAgICAgfQog
ICAgIGNhc2UgTFNfU1BPVDoKICAgICB7Ci0gICAgICAgIGNvbnN0IFNWR1Nwb3RMaWdodFNvdXJj
ZSogc2xpZ2h0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHU3BvdExpZ2h0U291cmNlKj4obGlnaHQp
OworICAgICAgICBjb25zdCBTcG90TGlnaHRTb3VyY2UqIHNsaWdodCA9IHN0YXRpY19jYXN0PGNv
bnN0IFNwb3RMaWdodFNvdXJjZSo+KGxpZ2h0KTsKICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiV0tTcG90TGlnaHQiXTsKICAgICAgICAgaWYgKCFmaWx0ZXIpCiAg
ICAgICAgICAgICByZXR1cm4gbmlsOwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9jZy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tCShyZXZpc2lv
biAzNDg2OSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogQ0lGaWx0
ZXIqIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBi
Ym94KSBjb25zdAogewotICAgIGNvbnN0IFNWR0xpZ2h0U291cmNlKiBsaWdodCA9IGxpZ2h0U291
cmNlKCk7CisgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gbGlnaHRTb3VyY2UoKTsKICAg
ICBpZiAoIWxpZ2h0KQogICAgICAgICByZXR1cm4gbmlsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22032</attachid>
            <date>2008-07-01 14:35:11 -0700</date>
            <delta_ts>2008-07-01 16:29:33 -0700</delta_ts>
            <desc>First few new files</desc>
            <filename>output2.diff</filename>
            <type>text/plain</type>
            <size>10462</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDkzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDgtMDctMDEgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFByZXAgZm9yIG1vcmUgRmlsdGVyIGNsYXNzIG5hbWUgY2hhbmdlcy4gQWRkZWQg
dGhlIGZpcnN0IHRocmVlIGZpbGVzIGZvcgorICAgICAgICB0aGUgbmV3IEZpbHRlciBhcmNoaXRl
Y3R1cmUgdG8gY29tZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBzdmcvRmlsdGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAg
ICAgICAqIHN2Zy9GaWx0ZXJCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyQnVpbGRlcjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6OmdldEVm
ZmVjdEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6ZmlsdGVyKToKKyAg
ICAgICAgKiBzdmcvRmlsdGVyRWZmZWN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojp+RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6RmlsdGVyRWZmZWN0KToKKwogMjAwOC0wNy0wMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzNDkyOCkK
KysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC00NDksNiArNDQ5LDkgQEAKIAkJNEUxOTU5MkMwQTM5REFDQzAwMjIwRkU1IC8qIE1l
ZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmggKi87IH07CiAJCTRFMTk1OTJEMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI3
MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLzsgfTsKIAkJNEUxOTU5MkUw
QTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRp
YVF1ZXJ5RXhwLmggKi87IH07CisJCTUwQTVERjc1MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwQTVERjcz
MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXIuaCAqLzsgfTsKKwkJNTBBNURGNzYwRTFBMTNDOTAw
MEEwM0FFIC8qIEZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwQTVERjc0MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXJCdWlsZGVy
LmggKi87IH07CisJCTUwQTVFMjEwMEUxQUJBRjIwMDBBMDNBRSAvKiBGaWx0ZXJFZmZlY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwQTVFMjBGMEUx
QUJBRjIwMDBBMDNBRSAvKiBGaWx0ZXJFZmZlY3QuaCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAy
QTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0
NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENh
Y2hlZFBhZ2UuY3BwICovOyB9OwogCQk1MTE2RDk3NzBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJh
c2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ5NjIsNiArNDk2NSw5
IEBACiAJCTRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRFMTk1OTI3MEEzOURBQ0MwMDIyMEZFNSAv
KiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYVF1ZXJ5RXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEUxOTU5
MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTBBNURGNzMwRTFBMTNDOTAwMEEwM0FFIC8qIEZpbHRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTBBNURGNzQwRTFBMTNDOTAwMEEwM0FFIC8qIEZpbHRlckJ1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MEE1RTIwRjBFMUFCQUYyMDAwQTAzQUUgLyogRmlsdGVyRWZmZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckVmZmVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVk
UGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRQYWdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBD
YWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hl
ZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTE2RDk3NTBDRjE3N0JE
MDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFiYXNlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTEzOTksNiArMTE0MDUsOSBAQAogCQkJCUIyMjI3N0NDMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xv
ckRpc3RhbmNlLmggKi8sCiAJCQkJRTQxNUYxODMwRDlBMUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRU
aW1lQ29udHJvbC5oICovLAogCQkJCUU0MTVGMTBDMEQ5QTA1ODcwMDMzQ0U5NyAvKiBFbGVtZW50
VGltZUNvbnRyb2wuaWRsICovLAorCQkJCTUwQTVERjczMEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0
ZXIuaCAqLywKKwkJCQk1MEE1REY3NDBFMUExM0M5MDAwQTAzQUUgLyogRmlsdGVyQnVpbGRlci5o
ICovLAorCQkJCTUwQTVFMjBGMEUxQUJBRjIwMDBBMDNBRSAvKiBGaWx0ZXJFZmZlY3QuaCAqLywK
IAkJCQlCMjIyNzdDRDBEMDBCRjFGMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggKi8s
CiAJCQkJQjIyMjc3Q0UwRDAwQkYxRjAwNzFCNzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmlidXRl
cy5oICovLAogCQkJCUIyMjI3N0RCMEQwMEJGMUYwMDcxQjc4MiAvKiBQYXR0ZXJuQXR0cmlidXRl
cy5oICovLApAQCAtMTUyNTQsNiArMTUyNjMsOSBAQAogCQkJCUJDNjg2Q0JCMEUwQzM0OUQwMERF
OEEwOCAvKiBET01DU1NWYXJpYWJsZXNEZWNsYXJhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzY4NkNCQzBFMEMzNDlEMDBERThBMDggLyogRE9NQ1NTVmFyaWFibGVzUnVsZUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzg0QzM0QjBFMTFBQTM0MDA3RDhENDggLyog
Rm9udFRyYWl0c01hc2suaCBpbiBIZWFkZXJzICovLAorCQkJCTUwQTVERjc1MEUxQTEzQzkwMDBB
MDNBRSAvKiBGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwQTVERjc2MEUxQTEzQzkwMDBB
MDNBRSAvKiBGaWx0ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEE1RTIxMDBFMUFC
QUYyMDAwQTAzQUUgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNv
cmUvc3ZnL0ZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlci5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9zdmcvRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2Vk
cGVuZ3VpbmJvYkBnbWFpbC5jb20+CisgICAgCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgRmlsdGVyX2gKKyNkZWZpbmUg
RmlsdGVyX2gKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRmls
dGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVyPiB7CisgICAgcHVibGljOiAgICAKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsdGVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiBlZmZlY3Qp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXIoZWZmZWN0KSk7IH0KKyAgICAgICAgCisgICAg
cHJpdmF0ZToKKyAgICAgICAgRmlsdGVyKEZpbHRlckVmZmVjdCogZWZmZWN0KSA6IG1fZWZmZWN0
KGVmZmVjdCkge30KKyAgICAKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9lZmZlY3Q7
CisgICAgfTsKKyAgICAKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9G
aWx0ZXJCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBBbGV4IE1hdGhl
d3MgPHBvc3Nlc3NlZHBlbmd1aW5ib2JAZ21haWwuY29tPgorICAgIAorICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIEZpbHRl
ckJ1aWxkZXJfaAorI2RlZmluZSBGaWx0ZXJCdWlsZGVyX2gKKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmls
dGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIAorICAgIGNsYXNzIEZpbHRlckJ1aWxkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWx0
ZXJCdWlsZGVyPiB7CisgICAgcHVibGljOgorICAgICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcm
IGlkLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KSB7IG1fbmFtZWRFZmZlY3RzLnNl
dChpZCwgZWZmZWN0KTsgfQorICAgICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29u
c3QgU3RyaW5nJiBpZCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkKS5nZXQo
KTsgfQorICAgICAgICAKKyAgICAgICAgUGFzc1JlZlB0cjxGaWx0ZXI+IGZpbHRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsdGVyOyB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1fbmFtZWRFZmZlY3RzOworICAg
ICAgICAKKyAgICAgICAgUmVmUHRyPEZpbHRlcj4gbV9maWx0ZXI7CisgICAgfTsKKyAgICAKK30g
Ly9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQorI2VuZGlmCisKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3Vp
bmJvYkBnbWFpbC5jb20+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIEZpbHRlckVmZmVjdF9oCisjZGVmaW5lIEZpbHRl
ckVmZmVjdF9oCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEZpbHRlckVmZmVjdCA6IHB1YmxpYyBSZWZD
b3VudGVkPEZpbHRlckVmZmVjdD4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Rmls
dGVyRWZmZWN0KCkgeyB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCkgPSAwOworICAgICAgICAKKyAgICBwcm90
ZWN0ZWQ6CisgICAgICAgIEZpbHRlckVmZmVjdCgpIHsgfQorICAgIH07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKKworI2VuZGlmIC8vIEZpbHRlckVmZmVjdF9oCg==
</data>
<flag name="review"
          id="9697"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22035</attachid>
            <date>2008-07-01 16:29:33 -0700</date>
            <delta_ts>2008-07-01 20:28:17 -0700</delta_ts>
            <desc>Few New Files with change</desc>
            <filename>output2.diff</filename>
            <type>text/plain</type>
            <size>14866</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDkzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMDctMDEgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFByZXAgZm9yIG1vcmUgRmlsdGVyIGNsYXNzIG5hbWUgY2hhbmdlcy4gQWRkZWQg
dGhlIGZpcnN0IGZldyBmaWxlcyBmb3IKKyAgICAgICAgdGhlIG5ldyBGaWx0ZXIgYXJjaGl0ZWN0
dXJlIHRvIGNvbWUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogc3ZnL0ZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHN2Zy9GaWx0ZXIuaDogQWRkZWQuCisgICAgICAgICogc3ZnL0ZpbHRlckJ1aWxkZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJCdWlsZGVyOjphZGQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJCdWlsZGVyOjpmaWx0ZXIpOgorICAgICAgICAqIHN2Zy9GaWx0ZXJFZmZlY3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6fkZpbHRlckVmZmVjdCk6CisgICAg
ICAgICogc3ZnL0ZpbHRlckVmZmVjdC5oOiBBZGRlZC4KKwogMjAwOC0wNy0wMSAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDM0OTI4KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0OSw2ICs0NDksMTEgQEAKIAkJNEUxOTU5MkMwQTM5REFDQzAw
MjIwRkU1IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1
ZXJ5RXZhbHVhdG9yLmggKi87IH07CiAJCTRFMTk1OTJEMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRp
YVF1ZXJ5RXhwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRFMTk1OTI3MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLzsgfTsK
IAkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI4MEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi87IH07CisJCTUwQTVERjc1MEUxQTEzQzkwMDBBMDNB
RSAvKiBGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUwQTVERjczMEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXIuaCAqLzsgfTsKKwkJNTBBNURG
NzYwRTFBMTNDOTAwMEEwM0FFIC8qIEZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwQTVERjc0MEUxQTEzQzkwMDBBMDNBRSAvKiBG
aWx0ZXJCdWlsZGVyLmggKi87IH07CisJCTUwQTVFMjEwMEUxQUJBRjIwMDBBMDNBRSAvKiBGaWx0
ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUwQTVFMjBGMEUxQUJBRjIwMDBBMDNBRSAvKiBGaWx0ZXJFZmZlY3QuaCAqLzsgfTsKKwkJNTBB
NUU0NzIwRTFBRUYzQTAwMEEwM0FFIC8qIEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEE1RTQ3MTBFMUFFRjNBMDAwQTAzQUUgLyogRmls
dGVyLmNwcCAqLzsgfTsKKwkJNTBBNUU0NzQwRTFBRUY4NDAwMEEwM0FFIC8qIEZpbHRlckVmZmVj
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEE1
RTQ3MzBFMUFFRjg0MDAwQTAzQUUgLyogRmlsdGVyRWZmZWN0LmNwcCAqLzsgfTsKIAkJNTEwMTg0
NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4
MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OwogCQk1MTE2RDk3NzBDRjE3N0JEMDBDMkI4NEQg
LyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ5NjIs
NiArNDk2NywxMSBAQAogCQk0RTE5NTkyNjBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2
YWx1YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVyeUV2
YWx1YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RTE5NTkyNzBBMzlEQUND
MDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFRdWVyeUV4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUwQTVERjczMEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUwQTVERjc0MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXJCdWlsZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckJ1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBBNUUyMEYwRTFBQkFGMjAwMEEwM0FFIC8qIEZpbHRl
ckVmZmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBBNUU0NzEwRTFBRUYzQTAwMEEwM0FF
IC8qIEZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEE1RTQ3MzBFMUFFRjg0MDAw
QTAzQUUgLyogRmlsdGVyRWZmZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpbHRlckVmZmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFp
bHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VEZXRhaWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM5OSw2ICsxMTQwOSw5IEBACiAJCQkJ
QjIyMjc3Q0MwRDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuaCAqLywKIAkJCQlFNDE1
RjE4MzBEOUExQTgzMDAzM0NFOTcgLyogRWxlbWVudFRpbWVDb250cm9sLmggKi8sCiAJCQkJRTQx
NUYxMEMwRDlBMDU4NzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5pZGwgKi8sCisJCQkJ
NTBBNURGNzMwRTFBMTNDOTAwMEEwM0FFIC8qIEZpbHRlci5oICovLAorCQkJCTUwQTVERjc0MEUx
QTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXJCdWlsZGVyLmggKi8sCisJCQkJNTBBNUUyMEYwRTFBQkFG
MjAwMEEwM0FFIC8qIEZpbHRlckVmZmVjdC5oICovLAogCQkJCUIyMjI3N0NEMEQwMEJGMUYwMDcx
Qjc4MiAvKiBHcmFkaWVudEF0dHJpYnV0ZXMuaCAqLywKIAkJCQlCMjIyNzdDRTBEMDBCRjFGMDA3
MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggKi8sCiAJCQkJQjIyMjc3REIwRDAw
QkYxRjAwNzFCNzgyIC8qIFBhdHRlcm5BdHRyaWJ1dGVzLmggKi8sCkBAIC0xMTQ2NSw3ICsxMTQ3
OCw5IEBACiAJCQkJQjIyMjc4MTUwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0RlZmluaXRpb25TcmNF
bGVtZW50LmggKi8sCiAJCQkJQjIyMjc4MTYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0RlZmluaXRp
b25TcmNFbGVtZW50LmlkbCAqLywKIAkJCQlCMjIyNzgxNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
RGVmc0VsZW1lbnQuY3BwICovLAorCQkJCTUwQTVFNDcxMEUxQUVGM0EwMDBBMDNBRSAvKiBGaWx0
ZXIuY3BwICovLAogCQkJCUIyMjI3ODE4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVu
dC5oICovLAorCQkJCTUwQTVFNDczMEUxQUVGODQwMDBBMDNBRSAvKiBGaWx0ZXJFZmZlY3QuY3Bw
ICovLAogCQkJCUIyMjI3ODE5MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5pZGwg
Ki8sCiAJCQkJQjIyMjc4MUEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0Rlc2NFbGVtZW50LmNwcCAq
LywKIAkJCQlCMjIyNzgxQjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQuaCAqLywK
QEAgLTE1MjU0LDYgKzE1MjY5LDkgQEAKIAkJCQlCQzY4NkNCQjBFMEMzNDlEMDBERThBMDggLyog
RE9NQ1NTVmFyaWFibGVzRGVjbGFyYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM2ODZDQkMwRTBDMzQ5RDAwREU4QTA4IC8qIERPTUNTU1ZhcmlhYmxlc1J1bGVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzc4NEMzNEIwRTExQUEzNDAwN0Q4RDQ4IC8qIEZvbnRUcmFp
dHNNYXNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEE1REY3NTBFMUExM0M5MDAwQTAzQUUgLyog
RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEE1REY3NjBFMUExM0M5MDAwQTAzQUUgLyog
RmlsdGVyQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBBNUUyMTAwRTFBQkFGMjAwMEEw
M0FFIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzAyNiw2ICsxNzA0NCw4
IEBACiAJCQkJQkM2ODZDQjMwRTBDMzQzOTAwREU4QTA4IC8qIERPTUNTU1ZhcmlhYmxlc0RlY2xh
cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2ODZDQjYwRTBDMzQzOTAwREU4QTA4IC8q
IERPTUNTU1ZhcmlhYmxlc1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzc5NTE1NTBFMTVE
QkZGMDBBODk4QUIgLyogSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUwQTVFNDcyMEUxQUVGM0EwMDBBMDNBRSAvKiBGaWx0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTBBNUU0NzQwRTFBRUY4NDAwMEEwM0FFIC8qIEZpbHRlckVmZmVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvRmlsdGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL0ZpbHRl
ci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+CisgICAg
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitG
aWx0ZXI6OkZpbHRlcihGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKKyAgICA6IG1fZWZmZWN0KGVmZmVj
dCkKK3sKK30KKworUGFzc1JlZlB0cjxGaWx0ZXI+IEZpbHRlcjo6Y3JlYXRlKEZpbHRlckVmZmVj
dCogZWZmZWN0KQoreyAKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRlcihlZmZlY3QpKTsK
K30KKworfSAvL25hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL0Zp
bHRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAwOCBBbGV4IE1hdGhld3MgPHBvc3Nlc3NlZHBlbmd1aW5ib2JAZ21haWwuY29tPgorICAg
IAorICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaWZuZGVmIEZpbHRlcl9oCisjZGVmaW5lIEZpbHRlcl9oCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBGaWx0
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWx0ZXI+IHsKKyAgICBwdWJsaWM6ICAgIAorICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxGaWx0ZXI+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqKTsKKyAgICAg
ICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgRmlsdGVyKEZpbHRlckVmZmVjdCogZWZmZWN0KTsK
KyAgICAKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9lZmZlY3Q7CisgICAgfTsKKyAg
ICAKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBBbGV4IE1hdGhld3MgPHBvc3Nlc3Nl
ZHBlbmd1aW5ib2JAZ21haWwuY29tPgorICAgIAorICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIEZpbHRlckJ1aWxkZXJfaAor
I2RlZmluZSBGaWx0ZXJCdWlsZGVyX2gKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCisKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBGaWx0ZXJCdWlsZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8RmlsdGVyQnVpbGRlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBh
ZGQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkgeyBt
X25hbWVkRWZmZWN0cy5zZXQoaWQsIGVmZmVjdCk7IH0KKyAgICAgICAgRmlsdGVyRWZmZWN0KiBn
ZXRFZmZlY3RCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRFZmZl
Y3RzLmdldChpZCkuZ2V0KCk7IH0KKyAgICAgICAgCisgICAgICAgIFBhc3NSZWZQdHI8RmlsdGVy
PiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcjsgfQorICAgICAgICAKKyAgICBwcml2
YXRlOgorICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEZpbHRlckVmZmVjdD4gPiBtX25h
bWVkRWZmZWN0czsKKyAgICAgICAgCisgICAgICAgIFJlZlB0cjxGaWx0ZXI+IG1fZmlsdGVyOwor
ICAgIH07CisgICAgCit9IC8vbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvRmls
dGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIEFsZXggTWF0aGV3cyA8
cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVy
RWZmZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsdGVyRWZmZWN0OjpGaWx0ZXJF
ZmZlY3QoKQoreworfQorCitGaWx0ZXJFZmZlY3Q6On5GaWx0ZXJFZmZlY3QoKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
c3ZnL0ZpbHRlckVmZmVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAwOCBBbGV4IE1hdGhld3MgPHBvc3Nlc3NlZHBlbmd1aW5ib2JAZ21h
aWwuY29tPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2lmbmRlZiBGaWx0ZXJFZmZlY3RfaAorI2RlZmluZSBGaWx0ZXJFZmZlY3Rf
aAorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEZpbHRl
ckVmZmVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckVmZmVjdD4geworICAgIHB1YmxpYzoK
KyAgICAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0KCk7CisgICAgICAgIAorICAgICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHkoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCkgPSAwOwor
ICAgICAgICAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEZpbHRlckVmZmVjdCgpOworICAgIH07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKKworI2VuZGlmIC8vIEZpbHRlckVmZmVjdF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22038</attachid>
            <date>2008-07-01 23:10:01 -0700</date>
            <delta_ts>2008-07-01 23:40:32 -0700</delta_ts>
            <desc>Rename SVGFEBlend class</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>18714</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDk0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDgtMDctMDEgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbmFtaW5nIG9mIGNsYXNzIFNWR0ZFQmxlbmQgdG8gRkVCbGVuZCBhcyB3ZWxs
IGFzIHJlbW92aW5nCisgICAgICAgIGEgbGl0dGxlIGJpdCBvZiBhbnRpcXVhdGVkIGNvZGUuIFRo
aXMgaW5jbHVkZXMgdGhlIHJlbW92YWwgb2YKKyAgICAgICAgU1ZHRkVCbGVuZENnLm1tOyB0aGUg
ZmVCbGVuZCBmaWx0ZXIgZWxlbWVudCB3aWxsIG5vdyBubyBsb25nZXIKKyAgICAgICAgcmVuZGVy
LiAKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBzdmcvRmlsdGVyQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRl
cjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVCbGVuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpGRUJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjppbjIpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVCbGVuZDo6c2V0SW4yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6
OmJsZW5kTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpzZXRCbGVuZE1vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVC
bGVuZDo6ZHVtcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVCbGVuZC5o
OgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9TVkdGRUJsZW5kQ2cubW06IFJlbW92ZWQuCisKIDIwMDgtMDctMDEgIERhbiBCZXJuc3RlaW4g
IDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAz
NDk0NCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDAxLDcgKzMwMDEsNiBAQAogCQlCMjU1OTkzMzBEMDBEOEJBMDBCQjgy
NUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291
cmNlQ2xpcHBlckNnLmNwcCAqLzsgfTsKIAkJQjI1NTk5MzUwRDAwRDhCQTAwQkI4MjVDIC8qIFNW
R1Jlc291cmNlRmlsdGVyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjU1OTg5OTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJD
Zy5tbSAqLzsgfTsKIAkJQjI1NTk5MzcwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlTWFz
a2VyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjU1OTg5QjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbSAqLzsgfTsK
LQkJQjI1NTk5MzgwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQmxlbmRDZy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODlFMEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdGRUJsZW5kQ2cubW0gKi87IH07CiAJCUIyNTU5OTM5MEQwMEQ4QkEwMEJCODI1
QyAvKiBTVkdGRUNvbG9yTWF0cml4Q2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5RjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb2xvck1h
dHJpeENnLm1tICovOyB9OwogCQlCMjU1OTkzQTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckNnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI1NTk4QTAwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJDZy5tbSAqLzsgfTsKIAkJQjI1NTk5M0IwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9z
aXRlQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjU1OThBMTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb21wb3NpdGVDZy5tbSAqLzsgfTsKQEAg
LTczNTMsNyArNzM1Miw2IEBACiAJCUIyNTU5ODk3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNv
dXJjZUNsaXBwZXJDZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MjU1OTg5OTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdSZXNvdXJjZUZpbHRlckNnLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5QjBEMDBEOEI4MDBCQjgyNUMg
LyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBTVkdSZXNvdXJjZU1hc2tlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjU1OTg5RTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVCbGVuZENnLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFQmxlbmRDZy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4OUYwRDAwRDhCODAwQkI4MjVDIC8qIFNW
R0ZFQ29sb3JNYXRyaXhDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTVkdGRUNvbG9yTWF0cml4Q2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNTU5OEEwMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyQ2cubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThBMTBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHRkVDb21wb3NpdGVDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUNvbXBvc2l0ZUNnLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTE0MTUsOCArMTE0MTMsMTAgQEAKIAkJCQlCMjIyNzdDQzBEMDBCRjFG
MDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5oICovLAogCQkJCUU0MTVGMTgzMEQ5QTFBODMwMDMz
Q0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wuaCAqLywKIAkJCQlFNDE1RjEwQzBEOUEwNTg3MDAz
M0NFOTcgLyogRWxlbWVudFRpbWVDb250cm9sLmlkbCAqLywKKwkJCQk1MEE1RTQ3MTBFMUFFRjNB
MDAwQTAzQUUgLyogRmlsdGVyLmNwcCAqLywKIAkJCQk1MEE1REY3MzBFMUExM0M5MDAwQTAzQUUg
LyogRmlsdGVyLmggKi8sCiAJCQkJNTBBNURGNzQwRTFBMTNDOTAwMEEwM0FFIC8qIEZpbHRlckJ1
aWxkZXIuaCAqLywKKwkJCQk1MEE1RTQ3MzBFMUFFRjg0MDAwQTAzQUUgLyogRmlsdGVyRWZmZWN0
LmNwcCAqLywKIAkJCQk1MEE1RTIwRjBFMUFCQUYyMDAwQTAzQUUgLyogRmlsdGVyRWZmZWN0Lmgg
Ki8sCiAJCQkJQjIyMjc3Q0QwRDAwQkYxRjAwNzFCNzgyIC8qIEdyYWRpZW50QXR0cmlidXRlcy5o
ICovLAogCQkJCUIyMjI3N0NFMEQwMEJGMUYwMDcxQjc4MiAvKiBMaW5lYXJHcmFkaWVudEF0dHJp
YnV0ZXMuaCAqLywKQEAgLTExNDg0LDkgKzExNDg0LDcgQEAKIAkJCQlCMjIyNzgxNTBEMDBCRjFG
MDA3MUI3ODIgLyogU1ZHRGVmaW5pdGlvblNyY0VsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzgxNjBE
MDBCRjFGMDA3MUI3ODIgLyogU1ZHRGVmaW5pdGlvblNyY0VsZW1lbnQuaWRsICovLAogCQkJCUIy
MjI3ODE3MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5jcHAgKi8sCi0JCQkJNTBB
NUU0NzEwRTFBRUYzQTAwMEEwM0FFIC8qIEZpbHRlci5jcHAgKi8sCiAJCQkJQjIyMjc4MTgwRDAw
QkYxRjAwNzFCNzgyIC8qIFNWR0RlZnNFbGVtZW50LmggKi8sCi0JCQkJNTBBNUU0NzMwRTFBRUY4
NDAwMEEwM0FFIC8qIEZpbHRlckVmZmVjdC5jcHAgKi8sCiAJCQkJQjIyMjc4MTkwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0RlZnNFbGVtZW50LmlkbCAqLywKIAkJCQlCMjIyNzgxQTBEMDBCRjFGMDA3
MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3ODFCMEQwMEJGMUYwMDcx
Qjc4MiAvKiBTVkdEZXNjRWxlbWVudC5oICovLApAQCAtMTE5NDYsNyArMTE5NDQsNiBAQAogCQlC
MjU1OTg5RDBEMDBEOEI4MDBCQjgyNUMgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCUIyNTU5ODlFMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUJs
ZW5kQ2cubW0gKi8sCiAJCQkJQjI1NTk4OUYwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29sb3JN
YXRyaXhDZy5tbSAqLywKIAkJCQlCMjU1OThBMDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckNnLm1tICovLAogCQkJCUIyNTU5OEExMEQwMEQ4QjgwMEJCODI1QyAvKiBT
VkdGRUNvbXBvc2l0ZUNnLm1tICovLApAQCAtMTY1NjgsNyArMTY1NjUsNiBAQAogCQkJCUIyMjI3
OUJGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFbGxpcHNlRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyNzlDNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk3MjBEMDBEOEJBMDBCQjgyNUMg
LyogU1ZHRkVCbGVuZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzODBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHRkVCbGVuZENnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5QzcwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyNTU5OTc0MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbG9yTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyNTU5OTM5MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbG9yTWF0cml4
Q2cubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgJKHJldmlzaW9uIDM0OTQ0
KQorKysgV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwx
MyArMzQsMTMgQEAKICAgICAKICAgICBjbGFzcyBGaWx0ZXJCdWlsZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8RmlsdGVyQnVpbGRlcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBhZGQoY29u
c3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkgeyBtX25hbWVk
RWZmZWN0cy5zZXQoaWQsIGVmZmVjdCk7IH0KLSAgICAgICAgRmlsdGVyRWZmZWN0KiBnZXRFZmZl
Y3RCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdl
dChpZCkuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkgeyBtX25hbWVkRWZmZWN0cy5zZXQoaWQuaW1wbCgp
LCBlZmZlY3QpOyB9CisgICAgICAgIEZpbHRlckVmZmVjdCogZ2V0RWZmZWN0QnlJZChjb25zdCBT
dHJpbmcmIGlkKSBjb25zdCB7IHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWQuaW1wbCgpKS5n
ZXQoKTsgfQogICAgICAgICAKICAgICAgICAgUGFzc1JlZlB0cjxGaWx0ZXI+IGZpbHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsdGVyOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1fbmFtZWRFZmZlY3RzOwor
ICAgICAgICBIYXNoTWFwPFN0cmluZ0ltcGwqLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1fbmFt
ZWRFZmZlY3RzOwogICAgICAgICAKICAgICAgICAgUmVmUHRyPEZpbHRlcj4gbV9maWx0ZXI7CiAg
ICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDM0OTQ0KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBACiAKIFNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1fbW9kZShT
VkdfRkVCTEVORF9NT0RFX05PUk1BTCkKKyAgICAsIG1fbW9kZShGRUJMRU5EX01PREVfTk9STUFM
KQogICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KQEAgLTQ5LDE1ICs0OSwxNSBAQAogICAg
IGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6Om1vZGVBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAibm9ybWFs
IikKLSAgICAgICAgICAgIHNldE1vZGVCYXNlVmFsdWUoU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwp
OworICAgICAgICAgICAgc2V0TW9kZUJhc2VWYWx1ZShGRUJMRU5EX01PREVfTk9STUFMKTsKICAg
ICAgICAgZWxzZSBpZiAodmFsdWUgPT0gIm11bHRpcGx5IikKLSAgICAgICAgICAgIHNldE1vZGVC
YXNlVmFsdWUoU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSk7CisgICAgICAgICAgICBzZXRNb2Rl
QmFzZVZhbHVlKEZFQkxFTkRfTU9ERV9NVUxUSVBMWSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVl
ID09ICJzY3JlZW4iKQotICAgICAgICAgICAgc2V0TW9kZUJhc2VWYWx1ZShTVkdfRkVCTEVORF9N
T0RFX1NDUkVFTik7CisgICAgICAgICAgICBzZXRNb2RlQmFzZVZhbHVlKEZFQkxFTkRfTU9ERV9T
Q1JFRU4pOwogICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiZGFya2VuIikKLSAgICAgICAgICAg
IHNldE1vZGVCYXNlVmFsdWUoU1ZHX0ZFQkxFTkRfTU9ERV9EQVJLRU4pOworICAgICAgICAgICAg
c2V0TW9kZUJhc2VWYWx1ZShGRUJMRU5EX01PREVfREFSS0VOKTsKICAgICAgICAgZWxzZSBpZiAo
dmFsdWUgPT0gImxpZ2h0ZW4iKQotICAgICAgICAgICAgc2V0TW9kZUJhc2VWYWx1ZShTVkdfRkVC
TEVORF9NT0RFX0xJR0hURU4pOworICAgICAgICAgICAgc2V0TW9kZUJhc2VWYWx1ZShGRUJMRU5E
X01PREVfTElHSFRFTik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OmluQXR0cikKICAgICAgICAgc2V0SW4xQmFzZVZhbHVlKHZhbHVlKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluMkF0dHIpCkBAIC02NiwxNiArNjYsMjQgQEAKICAg
ICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVCbGVuZCogU1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZmZWN0
KiBTVkdGRUJsZW5kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJF
ZmZlY3QgPSBTVkdGRUJsZW5kOjpjcmVhdGUoZmlsdGVyKTsKKyAgICAvL1RFTVBPUkFSWSBGSVgg
VE8gUFJFVkVOVCBCVUlMRCBCUkVBS0FHRSEhISAKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBT
VkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAg
IEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7Cisg
ICAgCisgICAgaWYoIWlucHV0MSB8fCAhaW5wdXQyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShp
bnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8QmxlbmRNb2RlVHlwZT4gKG1vZGUoKSkpOworICAg
IGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKICAgICAKLSAg
ICBtX2ZpbHRlckVmZmVjdC0+c2V0QmxlbmRNb2RlKChTVkdCbGVuZE1vZGVUeXBlKSBtb2RlKCkp
OwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3Qt
PnNldEluMihpbjIoKSk7Ci0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0
LmdldCgpKTsKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkocmV2aXNpb24gMzQ5NDQp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAjZGVmaW5lIFNWR0ZFQmxlbmRFbGVtZW50X2gKIAogI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAj
aW5jbHVkZSAiU1ZHRkVCbGVuZC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oIgogCkBAIC0zNiw3ICszNyw4IEBACiAgICAgICAgIHZpcnR1YWwgflNW
R0ZFQmxlbmRFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFQmxlbmQqIGZp
bHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNW
R0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Cisg
ICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdGhpczsgfQpAQCAtNDYsNyArNDgsNyBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBJbjIsIGlu
MikKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVt
ZW50LCBpbnQsIGludCwgTW9kZSwgbW9kZSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdG
RUJsZW5kPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVCbGVuZD4g
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgJKHJldmlzaW9uIDM0OTQ0KQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFz
cyBGaWx0ZXJFZmZlY3Q7CiAgICAgY2xhc3MgU1ZHRmlsdGVyRWZmZWN0OwogICAgIGNsYXNzIFNW
R1Jlc291cmNlRmlsdGVyOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFQmxlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVCbGVuZC5jcHAJKHJldmlzaW9uIDM0OTQ0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUJsZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNjUgKzI3LDQ1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVCbGVuZDo6U1ZHRkVCbGVuZChTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAs
IG1fbW9kZShTVkdfRkVCTEVORF9NT0RFX1VOS05PV04pCitGRUJsZW5kOjpGRUJsZW5kKEZpbHRl
ckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yLCBCbGVuZE1vZGVUeXBlIG1vZGUpCisgICAg
OiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1faW4yKGluMikKKyAgICAs
IG1fbW9kZShtb2RlKQogewogfQogCi1QYXNzUmVmUHRyPFNWR0ZFQmxlbmQ+IFNWR0ZFQmxlbmQ6
OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1JlZlB0cjxGRUJsZW5kPiBG
RUJsZW5kOjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIsIEJsZW5k
TW9kZVR5cGUgbW9kZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFQmxlbmQoZmls
dGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUJsZW5kKGluLCBpbjIsIG1vZGUpKTsK
IH0KIAotU3RyaW5nIFNWR0ZFQmxlbmQ6OmluMigpIGNvbnN0CitGaWx0ZXJFZmZlY3QqIEZFQmxl
bmQ6OmluMigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW4yOworICAgIHJldHVybiBtX2luMi5n
ZXQoKTsKIH0KIAotdm9pZCBTVkdGRUJsZW5kOjpzZXRJbjIoY29uc3QgU3RyaW5nJiBpbjIpCit2
b2lkIEZFQmxlbmQ6OnNldEluMihGaWx0ZXJFZmZlY3QqIGluMikKIHsKICAgICBtX2luMiA9IGlu
MjsKIH0KIAotU1ZHQmxlbmRNb2RlVHlwZSBTVkdGRUJsZW5kOjpibGVuZE1vZGUoKSBjb25zdAor
QmxlbmRNb2RlVHlwZSBGRUJsZW5kOjpibGVuZE1vZGUoKSBjb25zdAogewogICAgIHJldHVybiBt
X21vZGU7CiB9CiAKLXZvaWQgU1ZHRkVCbGVuZDo6c2V0QmxlbmRNb2RlKFNWR0JsZW5kTW9kZVR5
cGUgbW9kZSkKK3ZvaWQgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5cGUgbW9kZSkK
IHsKICAgICBtX21vZGUgPSBtb2RlOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgU1ZHQmxlbmRNb2RlVHlwZSB0KQordm9pZCBGRUJsZW5kOjphcHBs
eSgpCit7Cit9CisKK3ZvaWQgRkVCbGVuZDo6ZHVtcCgpCiB7Ci0gICAgc3dpdGNoICh0KQotICAg
IHsKLSAgICAgICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX1VOS05PV046Ci0gICAgICAgICAgICB0
cyA8PCAiVU5LTk9XTiI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19GRUJMRU5EX01PREVfTk9S
TUFMOgotICAgICAgICAgICAgdHMgPDwgIk5PUk1BTCI7IGJyZWFrOwotICAgICAgICBjYXNlIFNW
R19GRUJMRU5EX01PREVfTVVMVElQTFk6Ci0gICAgICAgICAgICB0cyA8PCAiTVVMVElQTFkiOyBi
cmVhazsKLSAgICAgICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTjoKLSAgICAgICAgICAg
IHRzIDw8ICJTQ1JFRU4iOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX0RB
UktFTjoKLSAgICAgICAgICAgIHRzIDw8ICJEQVJLRU4iOyBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdfRkVCTEVORF9NT0RFX0xJR0hURU46Ci0gICAgICAgICAgICB0cyA8PCAiTElHSFRFTiI7IGJy
ZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIFNWR0ZFQmxlbmQ6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgdHMg
PDwgIlt0eXBlPUJMRU5EXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbih0cyk7Ci0gICAgaWYgKCFtX2luMi5pc0VtcHR5KCkpCi0gICAgICAgIHRzIDw8ICIg
W2luMj1cIiIgPDwgbV9pbjIgPDwgIlwiXSI7Ci0gICAgdHMgPDwgIiBbYmxlbmQgbW9kZT0iIDw8
IG1fbW9kZSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQmxlbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQmxlbmQuaAkocmV2
aXNpb24gMzQ5NDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQmxlbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDEgKzIzLDQwIEBACiAjZGVmaW5lIFNWR0ZFQmxlbmRf
aAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWVudW0gU1ZHQmxlbmRNb2RlVHlwZSB7Ci0gICAgU1ZHX0ZFQkxFTkRfTU9E
RV9VTktOT1dOICA9IDAsCi0gICAgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgICA9IDEsCi0gICAg
U1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSA9IDIsCi0gICAgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JF
RU4gICA9IDMsCi0gICAgU1ZHX0ZFQkxFTkRfTU9ERV9EQVJLRU4gICA9IDQsCi0gICAgU1ZHX0ZF
QkxFTkRfTU9ERV9MSUdIVEVOICA9IDUKLX07Ci0KLWNsYXNzIFNWR0ZFQmxlbmQgOiBwdWJsaWMg
U1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUJs
ZW5kPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLSAgICAKLSAgICBTdHJpbmcgaW4yKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRJbjIoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBTVkdCbGVuZE1v
ZGVUeXBlIGJsZW5kTW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0QmxlbmRNb2RlKFNWR0JsZW5k
TW9kZVR5cGUpOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwg
Q0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5k
aWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRUJsZW5kKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAg
ICBTVkdCbGVuZE1vZGVUeXBlIG1fbW9kZTsKLSAgICBTdHJpbmcgbV9pbjI7Ci19OworICAgIGVu
dW0gQmxlbmRNb2RlVHlwZSB7CisgICAgICAgIEZFQkxFTkRfTU9ERV9VTktOT1dOICA9IDAsCisg
ICAgICAgIEZFQkxFTkRfTU9ERV9OT1JNQUwgICA9IDEsCisgICAgICAgIEZFQkxFTkRfTU9ERV9N
VUxUSVBMWSA9IDIsCisgICAgICAgIEZFQkxFTkRfTU9ERV9TQ1JFRU4gICA9IDMsCisgICAgICAg
IEZFQkxFTkRfTU9ERV9EQVJLRU4gICA9IDQsCisgICAgICAgIEZFQkxFTkRfTU9ERV9MSUdIVEVO
ICA9IDUKKyAgICB9OworCisgICAgY2xhc3MgRkVCbGVuZCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVCbGVuZD4gY3JlYXRl
KEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIEJsZW5kTW9kZVR5cGUpOworICAgICAgICAK
KyAgICAgICAgRmlsdGVyRWZmZWN0KiBpbjIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRJbjIo
RmlsdGVyRWZmZWN0Kik7CisKKyAgICAgICAgQmxlbmRNb2RlVHlwZSBibGVuZE1vZGUoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZSk7CisgICAgICAgIAor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAo
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZFQmxlbmQoRmlsdGVyRWZmZWN0KiwgRmlsdGVy
RWZmZWN0KiwgQmxlbmRNb2RlVHlwZSk7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
bV9pbjsKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjI7CisgICAgICAgIEJsZW5k
TW9kZVR5cGUgbV9tb2RlOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUJsZW5kQ2cubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUJsZW5kQ2cubW0J
KHJldmlzaW9uIDM0OTQ0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RUJsZW5kQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0K
LSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNs
dWRlICJTVkdGRUJsZW5kLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVCbGVuZDo6Z2V0Q0lGaWx0ZXIoY29uc3Qg
RmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0
ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyogZmls
dGVyUGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURh
dGFNYWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsKLSAgICBDSUZpbHRlciogZmlsdGVy
ID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHN3aXRjaCAo
YmxlbmRNb2RlKCkpIHsKLSAgICBjYXNlIFNWR19GRUJMRU5EX01PREVfVU5LTk9XTjoKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBjYXNlIFNWR19GRUJMRU5EX01PREVfTk9STUFMOgotICAgICAg
ICAvLyBGSVhNRTogSSB0aGluayB0aGlzIGlzIGNvcnJlY3QuLi4uCi0gICAgICAgIGZpbHRlciA9
IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJU291cmNlT3ZlckNvbXBvc2l0aW5nIl07Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWToKLSAgICAg
ICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lNdWx0aXBseUJsZW5kTW9k
ZSJdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19GRUJMRU5EX01PREVfU0NSRUVOOgot
ICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNjcmVlbkJsZW5k
TW9kZSJdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19GRUJMRU5EX01PREVfREFSS0VO
OgotICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSURhcmtlbkJs
ZW5kTW9kZSJdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19GRUJMRU5EX01PREVfTElH
SFRFTjoKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lMaWdo
dGVuQmxlbmRNb2RlIl07Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIExP
R19FUlJPUigiVW5oYW5kbGVkIGJsZW5kIG1vZGU6ICVpIiwgYmxlbmRNb2RlKCkpOwotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotCi0gICAg
Q0lJbWFnZSogaW5wdXRJbWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW5wdXRJbWFnZSh0aGlz
KTsKLSAgICBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQoaW5wdXRJbWFnZSk7Ci0gICAgW2ZpbHRlciBz
ZXRWYWx1ZTppbnB1dEltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKLQotICAgIENJSW1hZ2Uq
IGJhY2tncm91bmRJbWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW1hZ2VGb3JOYW1lKGluMigp
KTsKLSAgICBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQoYmFja2dyb3VuZEltYWdlKTsKLSAgICBbZmls
dGVyIHNldFZhbHVlOmJhY2tncm91bmRJbWFnZSBmb3JLZXk6QCJpbnB1dEJhY2tncm91bmRJbWFn
ZSJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVB
UlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykK
</data>
<flag name="review"
          id="9700"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22039</attachid>
            <date>2008-07-01 23:40:32 -0700</date>
            <delta_ts>2008-07-02 22:56:21 -0700</delta_ts>
            <desc>SVGFEBlend Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>18259</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDk0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDgtMDctMDEgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbmFtaW5nIG9mIGNsYXNzIFNWR0ZFQmxlbmQgdG8gRkVCbGVuZCBhcyB3ZWxs
IGFzIHJlbW92aW5nCisgICAgICAgIGEgbGl0dGxlIGJpdCBvZiBhbnRpcXVhdGVkIGNvZGUuIFRo
aXMgaW5jbHVkZXMgdGhlIHJlbW92YWwgb2YKKyAgICAgICAgU1ZHRkVCbGVuZENnLm1tOyB0aGUg
ZmVCbGVuZCBlbGVtZW50IHdpbGwgbm93IG5vIGxvbmdlcgorICAgICAgICByZW5kZXIuIAorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2
Zy9GaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJCdWlsZGVyOjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
QmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUJsZW5kRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJsZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFQmxlbmQ6OkZFQmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmluMik6CisgICAgICAgIChXZWJD
b3JlOjpGRUJsZW5kOjpzZXRJbjIpOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6YmxlbmRN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnNldEJsZW5kTW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRUJsZW5kOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpk
dW1wKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJsZW5kLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZF
QmxlbmRDZy5tbTogUmVtb3ZlZC4KKwogMjAwOC0wNy0wMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM0OTQ0KQor
KysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTMwMDEsNyArMzAwMSw2IEBACiAJCUIyNTU5OTMzMEQwMEQ4QkEwMEJCODI1QyAvKiBT
VkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlw
cGVyQ2cuY3BwICovOyB9OwogCQlCMjU1OTkzNTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3Vy
Y2VGaWx0ZXJDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNTU5ODk5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tICov
OyB9OwogCQlCMjU1OTkzNzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODlC
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tICovOyB9OwotCQlCMjU1
OTkzODBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVCbGVuZENnLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OUUwRDAwRDhCODAwQkI4MjVDIC8q
IFNWR0ZFQmxlbmRDZy5tbSAqLzsgfTsKIAkJQjI1NTk5MzkwRDAwRDhCQTAwQkI4MjVDIC8qIFNW
R0ZFQ29sb3JNYXRyaXhDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNTU5ODlGMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbG9yTWF0cml4Q2cu
bW0gKi87IH07CiAJCUIyNTU5OTNBMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbXBvbmVudFRy
YW5zZmVyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjU1OThBMDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckNnLm1t
ICovOyB9OwogCQlCMjU1OTkzQjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb21wb3NpdGVDZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEEx
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbXBvc2l0ZUNnLm1tICovOyB9OwpAQCAtNzM1Myw3
ICs3MzUyLDYgQEAKIAkJQjI1NTk4OTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291cmNlQ2xp
cHBlckNnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdSZXNv
dXJjZUNsaXBwZXJDZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5ODk5
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR1Jlc291cmNlRmlsdGVyQ2cubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5ODlCMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdS
ZXNvdXJjZU1hc2tlckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNWR1Jlc291cmNlTWFza2VyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUIyNTU5ODlFMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUJsZW5kQ2cubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVCbGVuZENnLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5RjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb2xv
ck1hdHJpeENnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNW
R0ZFQ29sb3JNYXRyaXhDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4
QTAwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJDZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUNvbXBvbmVudFRyYW5zZmVy
Q2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEExMEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdGRUNvbXBvc2l0ZUNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNWR0ZFQ29tcG9zaXRlQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMTQxNSw4ICsxMTQxMywxMCBAQAogCQkJCUIyMjI3N0NDMEQwMEJGMUYwMDcxQjc4
MiAvKiBDb2xvckRpc3RhbmNlLmggKi8sCiAJCQkJRTQxNUYxODMwRDlBMUE4MzAwMzNDRTk3IC8q
IEVsZW1lbnRUaW1lQ29udHJvbC5oICovLAogCQkJCUU0MTVGMTBDMEQ5QTA1ODcwMDMzQ0U5NyAv
KiBFbGVtZW50VGltZUNvbnRyb2wuaWRsICovLAorCQkJCTUwQTVFNDcxMEUxQUVGM0EwMDBBMDNB
RSAvKiBGaWx0ZXIuY3BwICovLAogCQkJCTUwQTVERjczMEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0
ZXIuaCAqLywKIAkJCQk1MEE1REY3NDBFMUExM0M5MDAwQTAzQUUgLyogRmlsdGVyQnVpbGRlci5o
ICovLAorCQkJCTUwQTVFNDczMEUxQUVGODQwMDBBMDNBRSAvKiBGaWx0ZXJFZmZlY3QuY3BwICov
LAogCQkJCTUwQTVFMjBGMEUxQUJBRjIwMDBBMDNBRSAvKiBGaWx0ZXJFZmZlY3QuaCAqLywKIAkJ
CQlCMjIyNzdDRDBEMDBCRjFGMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggKi8sCiAJ
CQkJQjIyMjc3Q0UwRDAwQkYxRjAwNzFCNzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmlidXRlcy5o
ICovLApAQCAtMTE0ODQsOSArMTE0ODQsNyBAQAogCQkJCUIyMjI3ODE1MEQwMEJGMUYwMDcxQjc4
MiAvKiBTVkdEZWZpbml0aW9uU3JjRWxlbWVudC5oICovLAogCQkJCUIyMjI3ODE2MEQwMEJGMUYw
MDcxQjc4MiAvKiBTVkdEZWZpbml0aW9uU3JjRWxlbWVudC5pZGwgKi8sCiAJCQkJQjIyMjc4MTcw
RDAwQkYxRjAwNzFCNzgyIC8qIFNWR0RlZnNFbGVtZW50LmNwcCAqLywKLQkJCQk1MEE1RTQ3MTBF
MUFFRjNBMDAwQTAzQUUgLyogRmlsdGVyLmNwcCAqLywKIAkJCQlCMjIyNzgxODBEMDBCRjFGMDA3
MUI3ODIgLyogU1ZHRGVmc0VsZW1lbnQuaCAqLywKLQkJCQk1MEE1RTQ3MzBFMUFFRjg0MDAwQTAz
QUUgLyogRmlsdGVyRWZmZWN0LmNwcCAqLywKIAkJCQlCMjIyNzgxOTBEMDBCRjFGMDA3MUI3ODIg
LyogU1ZHRGVmc0VsZW1lbnQuaWRsICovLAogCQkJCUIyMjI3ODFBMEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdEZXNjRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc4MUIwRDAwQkYxRjAwNzFCNzgyIC8q
IFNWR0Rlc2NFbGVtZW50LmggKi8sCkBAIC0xMTk0Niw3ICsxMTk0NCw2IEBACiAJCUIyNTU5ODlE
MEQwMEQ4QjgwMEJCODI1QyAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJQjI1NTk4OUUwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQmxlbmRDZy5t
bSAqLywKIAkJCQlCMjU1OTg5RjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb2xvck1hdHJpeENn
Lm1tICovLAogCQkJCUIyNTU5OEEwMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbXBvbmVudFRy
YW5zZmVyQ2cubW0gKi8sCiAJCQkJQjI1NTk4QTEwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29t
cG9zaXRlQ2cubW0gKi8sCkBAIC0xNjU2OCw3ICsxNjU2NSw2IEBACiAJCQkJQjIyMjc5QkYwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0VsbGlwc2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyMjI3OUM0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTcyMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdG
RUJsZW5kLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTM4MEQwMEQ4QkEwMEJCODI1QyAv
KiBTVkdGRUJsZW5kQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlDNzBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5
NzQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29sb3JNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjI1NTk5MzkwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29sb3JNYXRyaXhDZy5tbSBp
biBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAkocmV2aXNpb24gMzQ5NDQpCisrKyBX
ZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwx
MyBAQAogICAgIAogICAgIGNsYXNzIEZpbHRlckJ1aWxkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxG
aWx0ZXJCdWlsZGVyPiB7CiAgICAgcHVibGljOgotICAgICAgICB2b2lkIGFkZChjb25zdCBTdHJp
bmcmIGlkLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KSB7IG1fbmFtZWRFZmZlY3Rz
LnNldChpZCwgZWZmZWN0KTsgfQotICAgICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQo
Y29uc3QgU3RyaW5nJiBpZCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkKS5n
ZXQoKTsgfQorICAgICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0KSB7IG1fbmFtZWRFZmZlY3RzLnNldChpZC5pbXBsKCksIGVmZmVj
dCk7IH0KKyAgICAgICAgRmlsdGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IFN0cmluZyYg
aWQpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChpZC5pbXBsKCkpLmdldCgpOyB9
CiAgICAgICAgIAogICAgICAgICBQYXNzUmVmUHRyPEZpbHRlcj4gZmlsdGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWx0ZXI7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gbV9uYW1lZEVmZmVjdHM7CisgICAgICAg
IEhhc2hNYXA8U3RyaW5nSW1wbCosIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gbV9uYW1lZEVmZmVj
dHM7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8RmlsdGVyPiBtX2ZpbHRlcjsKICAgICB9OwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkocmV2aXNpb24gMzQ5NDQpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKIAogU1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxlbmRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwgbV9tb2RlKFNWR19GRUJM
RU5EX01PREVfTk9STUFMKQorICAgICwgbV9tb2RlKEZFQkxFTkRfTU9ERV9OT1JNQUwpCiAgICAg
LCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQpAQCAtNDksMTUgKzQ5LDE1IEBACiAgICAgY29uc3Qg
U3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6bW9kZUF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlID09ICJub3JtYWwiKQotICAg
ICAgICAgICAgc2V0TW9kZUJhc2VWYWx1ZShTVkdfRkVCTEVORF9NT0RFX05PUk1BTCk7CisgICAg
ICAgICAgICBzZXRNb2RlQmFzZVZhbHVlKEZFQkxFTkRfTU9ERV9OT1JNQUwpOwogICAgICAgICBl
bHNlIGlmICh2YWx1ZSA9PSAibXVsdGlwbHkiKQotICAgICAgICAgICAgc2V0TW9kZUJhc2VWYWx1
ZShTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZKTsKKyAgICAgICAgICAgIHNldE1vZGVCYXNlVmFs
dWUoRkVCTEVORF9NT0RFX01VTFRJUExZKTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gInNj
cmVlbiIpCi0gICAgICAgICAgICBzZXRNb2RlQmFzZVZhbHVlKFNWR19GRUJMRU5EX01PREVfU0NS
RUVOKTsKKyAgICAgICAgICAgIHNldE1vZGVCYXNlVmFsdWUoRkVCTEVORF9NT0RFX1NDUkVFTik7
CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJkYXJrZW4iKQotICAgICAgICAgICAgc2V0TW9k
ZUJhc2VWYWx1ZShTVkdfRkVCTEVORF9NT0RFX0RBUktFTik7CisgICAgICAgICAgICBzZXRNb2Rl
QmFzZVZhbHVlKEZFQkxFTkRfTU9ERV9EQVJLRU4pOwogICAgICAgICBlbHNlIGlmICh2YWx1ZSA9
PSAibGlnaHRlbiIpCi0gICAgICAgICAgICBzZXRNb2RlQmFzZVZhbHVlKFNWR19GRUJMRU5EX01P
REVfTElHSFRFTik7CisgICAgICAgICAgICBzZXRNb2RlQmFzZVZhbHVlKEZFQkxFTkRfTU9ERV9M
SUdIVEVOKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aW5BdHRy
KQogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6aW4yQXR0cikKQEAgLTY2LDE2ICs2NiwyNCBAQAogICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQogCi1TVkdGRUJsZW5kKiBTVkdGRUJsZW5kRWxlbWVudDo6ZmlsdGVyRWZmZWN0
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZF
QmxlbmRFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29u
c3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9
IFNWR0ZFQmxlbmQ6OmNyZWF0ZShmaWx0ZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAK
KyAgICByZXR1cm4gMDsKK30KKworYm9vbCBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoRmlsdGVy
QnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXIt
PmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRl
ci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CisgICAgCisgICAgaWYoIWlucHV0MSB8fCAhaW5wdXQy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRl
ZEVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8Qmxl
bmRNb2RlVHlwZT4gKG1vZGUoKSkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRF
ZmZlY3QucmVsZWFzZSgpKTsKICAgICAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0QmxlbmRNb2Rl
KChTVkdCbGVuZE1vZGVUeXBlKSBtb2RlKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihp
bjEoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluMihpbjIoKSk7Ci0gICAgc2V0U3RhbmRh
cmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKLSAgICByZXR1cm4gbV9maWx0ZXJF
ZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaAkocmV2aXNpb24gMzQ5NDQpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIFNWR0ZFQmxl
bmRFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
bmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHRkVCbGVuZC5oIgogI2luY2x1
ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkBAIC0zNiw3ICsz
Nyw4IEBACiAgICAgICAgIHZpcnR1YWwgflNWR0ZFQmxlbmRFbGVtZW50KCk7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAg
ICAgICB2aXJ0dWFsIFNWR0ZFQmxlbmQqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciop
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNW
R1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRl
ciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDYsNyArNDgsNyBA
QAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1l
bnQsIFN0cmluZywgU3RyaW5nLCBJbjIsIGluMikKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBpbnQsIGludCwgTW9kZSwgbW9kZSkKIAot
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRUJsZW5kPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8RkVCbGVuZD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUJsZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFQmxlbmQuY3BwCShyZXZpc2lvbiAzNDk0NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVCbGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDY1ICsyNyw0NSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFQmxlbmQ6OlNWR0ZFQmxlbmQoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAg
LCBtX21vZGUoU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOKQorRkVCbGVuZDo6RkVCbGVuZChGaWx0
ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgQmxlbmRNb2RlVHlwZSBtb2RlKQorICAg
IDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX2luMihpbjIpCisgICAg
LCBtX21vZGUobW9kZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUJsZW5kPiBTVkdGRUJsZW5k
OjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVCbGVuZD4g
RkVCbGVuZDo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yLCBCbGVu
ZE1vZGVUeXBlIG1vZGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGRUJsZW5kKGZp
bHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVCbGVuZChpbiwgaW4yLCBtb2RlKSk7
CiB9CiAKLVN0cmluZyBTVkdGRUJsZW5kOjppbjIoKSBjb25zdAorRmlsdGVyRWZmZWN0KiBGRUJs
ZW5kOjppbjIoKSBjb25zdAogewotICAgIHJldHVybiBtX2luMjsKKyAgICByZXR1cm4gbV9pbjIu
Z2V0KCk7CiB9CiAKLXZvaWQgU1ZHRkVCbGVuZDo6c2V0SW4yKGNvbnN0IFN0cmluZyYgaW4yKQor
dm9pZCBGRUJsZW5kOjpzZXRJbjIoRmlsdGVyRWZmZWN0KiBpbjIpCiB7CiAgICAgbV9pbjIgPSBp
bjI7CiB9CiAKLVNWR0JsZW5kTW9kZVR5cGUgU1ZHRkVCbGVuZDo6YmxlbmRNb2RlKCkgY29uc3QK
K0JsZW5kTW9kZVR5cGUgRkVCbGVuZDo6YmxlbmRNb2RlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9tb2RlOwogfQogCi12b2lkIFNWR0ZFQmxlbmQ6OnNldEJsZW5kTW9kZShTVkdCbGVuZE1vZGVU
eXBlIG1vZGUpCit2b2lkIEZFQmxlbmQ6OnNldEJsZW5kTW9kZShCbGVuZE1vZGVUeXBlIG1vZGUp
CiB7CiAgICAgbV9tb2RlID0gbW9kZTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIFNWR0JsZW5kTW9kZVR5cGUgdCkKK3ZvaWQgRkVCbGVuZDo6YXBw
bHkoKQoreworfQorCit2b2lkIEZFQmxlbmQ6OmR1bXAoKQogewotICAgIHN3aXRjaCAodCkKLSAg
ICB7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOOgotICAgICAgICAgICAg
dHMgPDwgIlVOS05PV04iOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX05P
Uk1BTDoKLSAgICAgICAgICAgIHRzIDw8ICJOT1JNQUwiOyBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdfRkVCTEVORF9NT0RFX01VTFRJUExZOgotICAgICAgICAgICAgdHMgPDwgIk1VTFRJUExZIjsg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU46Ci0gICAgICAgICAg
ICB0cyA8PCAiU0NSRUVOIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQkxFTkRfTU9ERV9E
QVJLRU46Ci0gICAgICAgICAgICB0cyA8PCAiREFSS0VOIjsgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U1ZHX0ZFQkxFTkRfTU9ERV9MSUdIVEVOOgotICAgICAgICAgICAgdHMgPDwgIkxJR0hURU4iOyBi
cmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1UZXh0U3RyZWFtJiBTVkdGRUJsZW5k
OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIHRz
IDw8ICJbdHlwZT1CTEVORF0gIjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVz
ZW50YXRpb24odHMpOwotICAgIGlmICghbV9pbjIuaXNFbXB0eSgpKQotICAgICAgICB0cyA8PCAi
IFtpbjI9XCIiIDw8IG1faW4yIDw8ICJcIl0iOwotICAgIHRzIDw8ICIgW2JsZW5kIG1vZGU9IiA8
PCBtX21vZGUgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJsZW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJsZW5kLmgJKHJl
dmlzaW9uIDM0OTQ0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJsZW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDQxICsyMyw0MCBAQAogI2RlZmluZSBTVkdGRUJsZW5k
X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJG
aWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1lbnVtIFNWR0JsZW5kTW9kZVR5cGUgewotICAgIFNWR19GRUJMRU5EX01P
REVfVU5LTk9XTiAgPSAwLAotICAgIFNWR19GRUJMRU5EX01PREVfTk9STUFMICAgPSAxLAotICAg
IFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyLAotICAgIFNWR19GRUJMRU5EX01PREVfU0NS
RUVOICAgPSAzLAotICAgIFNWR19GRUJMRU5EX01PREVfREFSS0VOICAgPSA0LAotICAgIFNWR19G
RUJMRU5EX01PREVfTElHSFRFTiAgPSA1Ci19OwotCi1jbGFzcyBTVkdGRUJsZW5kIDogcHVibGlj
IFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVC
bGVuZD4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0gICAgCi0gICAgU3RyaW5nIGluMigp
IGNvbnN0OwotICAgIHZvaWQgc2V0SW4yKGNvbnN0IFN0cmluZyYpOwotCi0gICAgU1ZHQmxlbmRN
b2RlVHlwZSBibGVuZE1vZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldEJsZW5kTW9kZShTVkdCbGVu
ZE1vZGVUeXBlKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9STShDSSkKLSAgICB2aXJ0dWFs
IENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0OwotI2Vu
ZGlmCi0KLXByaXZhdGU6Ci0gICAgU1ZHRkVCbGVuZChTVkdSZXNvdXJjZUZpbHRlciopOwotCi0g
ICAgU1ZHQmxlbmRNb2RlVHlwZSBtX21vZGU7Ci0gICAgU3RyaW5nIG1faW4yOwotfTsKKyAgICBl
bnVtIEJsZW5kTW9kZVR5cGUgeworICAgICAgICBGRUJMRU5EX01PREVfVU5LTk9XTiAgPSAwLAor
ICAgICAgICBGRUJMRU5EX01PREVfTk9STUFMICAgPSAxLAorICAgICAgICBGRUJMRU5EX01PREVf
TVVMVElQTFkgPSAyLAorICAgICAgICBGRUJMRU5EX01PREVfU0NSRUVOICAgPSAzLAorICAgICAg
ICBGRUJMRU5EX01PREVfREFSS0VOICAgPSA0LAorICAgICAgICBGRUJMRU5EX01PREVfTElHSFRF
TiAgPSA1CisgICAgfTsKKworICAgIGNsYXNzIEZFQmxlbmQgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFQmxlbmQ+IGNyZWF0
ZShGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBCbGVuZE1vZGVUeXBlKTsKKyAgICAgICAg
CisgICAgICAgIEZpbHRlckVmZmVjdCogaW4yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SW4y
KEZpbHRlckVmZmVjdCopOworCisgICAgICAgIEJsZW5kTW9kZVR5cGUgYmxlbmRNb2RlKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5cGUpOworICAgICAgICAK
KyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1w
KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRUJsZW5kKEZpbHRlckVmZmVjdCosIEZpbHRl
ckVmZmVjdCosIEJsZW5kTW9kZVR5cGUpOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IG1faW47CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW4yOworICAgICAgICBCbGVu
ZE1vZGVUeXBlIG1fbW9kZTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVCbGVuZENnLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVCbGVuZENnLm1t
CShyZXZpc2lvbiAzNDk0NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZH
RkVCbGVuZENnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgot
Ci0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5j
bHVkZSAiU1ZHRkVCbGVuZC5oIgotI2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZFQmxlbmQ6OmdldENJRmlsdGVyKGNvbnN0
IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmls
dGVyID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZp
bHRlclBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1E
YXRhTWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgQ0lGaWx0ZXIqIGZpbHRl
ciA9IG5pbDsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBzd2l0Y2gg
KGJsZW5kTW9kZSgpKSB7Ci0gICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX1VOS05PV046Ci0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX05PUk1BTDoKLSAgICAg
ICAgLy8gRklYTUU6IEkgdGhpbmsgdGhpcyBpcyBjb3JyZWN0Li4uLgotICAgICAgICBmaWx0ZXIg
PSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZU92ZXJDb21wb3NpdGluZyJdOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19GRUJMRU5EX01PREVfTVVMVElQTFk6Ci0gICAg
ICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJTXVsdGlwbHlCbGVuZE1v
ZGUiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTjoK
LSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lTY3JlZW5CbGVu
ZE1vZGUiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX0RBUktF
TjoKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lEYXJrZW5C
bGVuZE1vZGUiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfRkVCTEVORF9NT0RFX0xJ
R0hURU46Ci0gICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJTGln
aHRlbkJsZW5kTW9kZSJdOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBM
T0dfRVJST1IoIlVuaGFuZGxlZCBibGVuZCBtb2RlOiAlaSIsIGJsZW5kTW9kZSgpKTsKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBbZmlsdGVyIHNldERlZmF1bHRzXTsKLQotICAg
IENJSW1hZ2UqIGlucHV0SW1hZ2UgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhp
cyk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIFtmaWx0ZXIg
c2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0KLSAgICBDSUltYWdl
KiBiYWNrZ3JvdW5kSW1hZ2UgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmltYWdlRm9yTmFtZShpbjIo
KSk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGJhY2tncm91bmRJbWFnZSk7Ci0gICAgW2Zp
bHRlciBzZXRWYWx1ZTpiYWNrZ3JvdW5kSW1hZ2UgZm9yS2V5OkAiaW5wdXRCYWNrZ3JvdW5kSW1h
Z2UiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FV
QVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22061</attachid>
            <date>2008-07-02 23:54:31 -0700</date>
            <delta_ts>2008-07-03 17:00:31 -0700</delta_ts>
            <desc>SVGFEColorMatrix Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>20266</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDk3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDgtMDctMDIgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbmFtZSBjbGFzcyBTVkdGRUNvbG9yTWF0cml4IHRvIEZFQ29sb3JNYXRyaXgu
IEFsc28sIGZvcmdvdCB0byByZW1vdmUKKyAgICAgICAgdGhlICNpbmNsdWRlICJTVkdGaWx0ZXJF
ZmZlY3QuaCIgZnJvbSBGRUJsZW5kIHdoZW4gcmVuYW1pbmcuIEFkZGVkCisgICAgICAgIFBhc3NS
ZWZQdHIgYW5kIFJlZlB0ciB0byBGaWx0ZXJFZmZlY3QuaCBmb3Igc2ltcGxpY2l0eSBhbmQgYmVj
YXVzZQorICAgICAgICBTVkdGaWx0ZXJFZmZlY3QuaCB3YXMgcHJvdmlkaW5nIHRoZW0gYmVmb3Jl
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHN2Zy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVCbGVu
ZC5jcHA6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVCbGVuZC5oOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1h
dHJpeDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpzZXRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnZhbHVlcyk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbG9yTWF0cml4OjpzZXRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xv
ck1hdHJpeDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6ZHVtcCk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb2xvck1hdHJpeC5oOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RUNvbG9yTWF0cml4Q2cubW06IFJlbW92ZWQuCisKIDIwMDgtMDctMDIgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1pdHogUGV0dGVsIGFu
ZCBKb2huIFN1bGxpdmFuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMzQ5NzIpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAwMSw3ICszMDAxLDYgQEAKIAkJQjI1
NTk5MzMwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlQ2xpcHBlckNnLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODk3MEQwMEQ4Qjgw
MEJCODI1QyAvKiBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAgKi87IH07CiAJCUIyNTU5OTM1MEQw
MEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OTkwRDAwRDhCODAwQkI4MjVDIC8q
IFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gKi87IH07CiAJCUIyNTU5OTM3MEQwMEQ4QkEwMEJCODI1
QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OUIwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291cmNl
TWFza2VyQ2cubW0gKi87IH07Ci0JCUIyNTU5OTM5MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNv
bG9yTWF0cml4Q2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjU1OTg5RjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb2xvck1hdHJpeENnLm1tICov
OyB9OwogCQlCMjU1OTkzQTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckNnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1
NTk4QTAwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJDZy5tbSAqLzsg
fTsKIAkJQjI1NTk5M0IwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9zaXRlQ2cubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBMTBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHRkVDb21wb3NpdGVDZy5tbSAqLzsgfTsKIAkJQjI1NTk5M0MwRDAw
RDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBMjBEMDBEOEI4MDBCQjgyNUMg
LyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbSAqLzsgfTsKQEAgLTczNTIsNyArNzM1MSw2IEBA
CiAJCUIyNTU5ODk3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VDbGlwcGVy
Q2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5OTBEMDBEOEI4MDBC
QjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTVkdSZXNvdXJjZUZpbHRlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMjU1OTg5QjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNr
ZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdSZXNv
dXJjZU1hc2tlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OTg5RjBE
MDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb2xvck1hdHJpeENnLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFQ29sb3JNYXRyaXhDZy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QTAwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyNTU5OEExMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbXBvc2l0ZUNnLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFQ29tcG9zaXRlQ2cu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1
QyAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMTk0NCw3ICsxMTk0Miw2IEBACiAJCUIyNTU5ODlEMEQwMEQ4Qjgw
MEJCODI1QyAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJQjI1NTk4OUYwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29sb3JNYXRyaXhDZy5tbSAq
LywKIAkJCQlCMjU1OThBMDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckNnLm1tICovLAogCQkJCUIyNTU5OEExMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbXBvc2l0
ZUNnLm1tICovLAogCQkJCUIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpZmZ1c2VM
aWdodGluZ0NnLm1tICovLApAQCAtMTY1NjcsNyArMTY1NjQsNiBAQAogCQkJCUIyNTU5OTcyMEQw
MEQ4QkEwMEJCODI1QyAvKiBTVkdGRUJsZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3
OUM3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUJsZW5kRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjU1OTk3NDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb2xvck1hdHJpeC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzOTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb2xv
ck1hdHJpeENnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5Q0EwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5
OTc2MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyNTU5OTNBMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbXBvbmVudFRy
YW5zZmVyQ2cubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCShyZXZpc2lvbiAz
NDk3MikKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MSw3ICsyMSw5IEBACiAjZGVmaW5lIEZpbHRlckVmZmVjdF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3R5cGUoU1ZHX0ZFQ09MT1JNQVRSSVhf
VFlQRV9VTktOT1dOKQorICAgICwgbV90eXBlKEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOKQog
ICAgICwgbV92YWx1ZXMoU1ZHTnVtYmVyTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp2YWx1ZXNBdHRy
KSkKICAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CkBAIC01MiwxMyArNTIsMTMgQEAKICAgICBj
b25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjp0eXBlQXR0cikgewogICAgICAgICBpZiAodmFsdWUgPT0gIm1hdHJpeCIp
Ci0gICAgICAgICAgICBzZXRUeXBlQmFzZVZhbHVlKFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFU
UklYKTsKKyAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoRkVDT0xPUk1BVFJJWF9UWVBFX01B
VFJJWCk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJzYXR1cmF0ZSIpCi0gICAgICAgICAg
ICBzZXRUeXBlQmFzZVZhbHVlKFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUpOworICAg
ICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUpOwog
ICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiaHVlUm90YXRlIikKLSAgICAgICAgICAgIHNldFR5
cGVCYXNlVmFsdWUoU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUpOworICAgICAgICAg
ICAgc2V0VHlwZUJhc2VWYWx1ZShGRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFKTsKICAgICAg
ICAgZWxzZSBpZiAodmFsdWUgPT0gImx1bWluYW5jZVRvQWxwaGEiKQotICAgICAgICAgICAgc2V0
VHlwZUJhc2VWYWx1ZShTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEpOwor
ICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShGRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNF
VE9BTFBIQSk7CiAgICAgfQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
aW5BdHRyKQogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwpAQCAtNjgsMTQgKzY4LDE5
IEBACiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZFQ29sb3JNYXRyaXgqIFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29u
c3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbHRlckVmZmVj
dChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJF
ZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVDb2xvck1hdHJpeDo6Y3JlYXRl
KGZpbHRlcik7Ci0gICAgICAgIAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7Ci0g
ICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAorYm9vbCBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIAorICAg
IGlmKCFpbnB1dDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBWZWN0b3I8Zmxv
YXQ+IF92YWx1ZXM7CiAgICAgU1ZHTnVtYmVyTGlzdCogbnVtYmVycyA9IHZhbHVlcygpOwogCkBA
IC04NCwxMyArODksMTMgQEAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDtpIDwgbnI7aSsr
KQogICAgICAgICBfdmFsdWVzLmFwcGVuZChudW1iZXJzLT5nZXRJdGVtKGksIGVjKSk7CiAKLSAg
ICBtX2ZpbHRlckVmZmVjdC0+c2V0VmFsdWVzKF92YWx1ZXMpOwotICAgIG1fZmlsdGVyRWZmZWN0
LT5zZXRUeXBlKChTVkdDb2xvck1hdHJpeFR5cGUpIHR5cGUoKSk7CisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoaW5wdXQxLCBzdGF0
aWNfY2FzdDxDb2xvck1hdHJpeFR5cGU+ICh0eXBlKCkpLCBfdmFsdWVzKTsKKyAgICBidWlsZGVy
LT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCi0gICAgcmV0dXJu
IG1fZmlsdGVyRWZmZWN0LmdldCgpOworICAgIHJldHVybiB0cnVlOwogfQogCi19Cit9IC8vbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24gMzQ5NzIpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3
IEBACiAjZGVmaW5lIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5j
bHVkZSAiU1ZHRkVDb2xvck1hdHJpeC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oIgogCkBAIC0zOCw3ICszOSw4IEBACiAgICAgICAgIHZpcnR1YWwg
flNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZF
Q29sb3JNYXRyaXgqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAg
ICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmls
dGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDgsNyArNTAsNyBAQAogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIGlu
dCwgaW50LCBUeXBlLCB0eXBlKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR051bWJlckxpc3QqLCBSZWZQdHI8U1ZHTnVt
YmVyTGlzdD4sIFZhbHVlcywgdmFsdWVzKQogCi0gICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0ZF
Q29sb3JNYXRyaXg+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUNv
bG9yTWF0cml4PiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQmxlbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVCbGVuZC5jcHAJ
KHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJs
ZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogCiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFQmxlbmQuaCIKLSNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJsZW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJsZW5kLmgJKHJldmlzaW9uIDM0OTcyKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUJsZW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDcgKzI0LDYgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFQ29sb3JNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb2xvck1hdHJpeC5jcHAJKHJldmlzaW9uIDM0OTcyKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbG9yTWF0cml4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNjIgKzI2LDQ1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZH
RkVDb2xvck1hdHJpeDo6U1ZHRkVDb2xvck1hdHJpeChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVy
KQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1fdHlwZShTVkdfRkVDT0xP
Uk1BVFJJWF9UWVBFX1VOS05PV04pCitGRUNvbG9yTWF0cml4OjpGRUNvbG9yTWF0cml4KEZpbHRl
ckVmZmVjdCogaW4sIENvbG9yTWF0cml4VHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2
YWx1ZXMpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1fdHlw
ZSh0eXBlKQorICAgICwgbV92YWx1ZXModmFsdWVzKQogewogfQogCi1QYXNzUmVmUHRyPFNWR0ZF
Q29sb3JNYXRyaXg+IFNWR0ZFQ29sb3JNYXRyaXg6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyKQorUGFzc1JlZlB0cjxGRUNvbG9yTWF0cml4PiBGRUNvbG9yTWF0cml4OjpjcmVhdGUo
RmlsdGVyRWZmZWN0KiBpbiwgQ29sb3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIHZhbHVlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFQ29sb3JNYXRyaXgo
ZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUNvbG9yTWF0cml4KGluLCB0eXBl
LCB2YWx1ZXMpKTsKIH0KIAotU1ZHQ29sb3JNYXRyaXhUeXBlIFNWR0ZFQ29sb3JNYXRyaXg6OnR5
cGUoKSBjb25zdAorQ29sb3JNYXRyaXhUeXBlIEZFQ29sb3JNYXRyaXg6OnR5cGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3R5cGU7CiB9CiAKLXZvaWQgU1ZHRkVDb2xvck1hdHJpeDo6c2V0VHlw
ZShTVkdDb2xvck1hdHJpeFR5cGUgdHlwZSkKK3ZvaWQgRkVDb2xvck1hdHJpeDo6c2V0VHlwZShD
b2xvck1hdHJpeFR5cGUgdHlwZSkKIHsKICAgICBtX3R5cGUgPSB0eXBlOwogfQogCi1jb25zdCBW
ZWN0b3I8ZmxvYXQ+JiBTVkdGRUNvbG9yTWF0cml4Ojp2YWx1ZXMoKSBjb25zdAorY29uc3QgVmVj
dG9yPGZsb2F0PiYgRkVDb2xvck1hdHJpeDo6dmFsdWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV92YWx1ZXM7CiB9CiAKLXZvaWQgU1ZHRkVDb2xvck1hdHJpeDo6c2V0VmFsdWVzKGNvbnN0IFZl
Y3RvcjxmbG9hdD4gJnZhbHVlcykKK3ZvaWQgRkVDb2xvck1hdHJpeDo6c2V0VmFsdWVzKGNvbnN0
IFZlY3RvcjxmbG9hdD4gJnZhbHVlcykKIHsKICAgICBtX3ZhbHVlcyA9IHZhbHVlczsKIH0KIAot
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNWR0NvbG9yTWF0
cml4VHlwZSB0KQordm9pZCBGRUNvbG9yTWF0cml4OjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVD
b2xvck1hdHJpeDo6ZHVtcCgpCiB7Ci0gICAgc3dpdGNoICh0KQotICAgIHsKLSAgICAgICAgY2Fz
ZSBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV046Ci0gICAgICAgICAgICB0cyA8PCAiVU5L
Tk9XTiI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklY
OgotICAgICAgICAgICAgdHMgPDwgIkNNVF9NQVRSSVgiOyBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdfRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFOgotICAgICAgICAgICAgdHMgPDwgIkNNVF9T
QVRVUkFURSI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVF
Uk9UQVRFOgotICAgICAgICAgICAgdHMgPDwgIkhVRS1ST1RBVEUiOyBicmVhazsKLSAgICAgICAg
Y2FzZSBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEE6Ci0gICAgICAgICAg
ICB0cyA8PCAiTFVNSU5BTkNFLVRPLUFMUEhBIjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0
czsKLX0KLQotVGV4dFN0cmVhbSYgU1ZHRkVDb2xvck1hdHJpeDo6ZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cyA8PCAiW3R5cGU9Q09MT1ItTUFU
UklYXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7
Ci0gICAgdHMgPDwgIiBbY29sb3IgbWF0cml4IHR5cGU9IiA8PCB0eXBlKCkgPDwgIl0iCi0gICAg
ICAgIDw8ICIgW3ZhbHVlcz0iIDw8IHZhbHVlcygpIDw8ICJdIjsKLSAgICByZXR1cm4gdHM7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVDb2xvck1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVDb2xvck1hdHJpeC5oCShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb2xvck1hdHJpeC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw0MSArMjMsMzkgQEAKICNkZWZpbmUgU1ZHRkVDb2xvck1hdHJpeF9oCiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZm
ZWN0LmgiCi0jaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1lbnVtIFNWR0NvbG9yTWF0cml4VHlwZSB7Ci0gICAgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQ
RV9VTktOT1dOICAgICAgICAgID0gMCwKLSAgICBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJ
WCAgICAgICAgICAgPSAxLAotICAgIFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgICAg
ICAgICA9IDIsCi0gICAgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUgICAgICAgID0g
MywKLSAgICBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEgPSA0Ci19Owot
Ci1jbGFzcyBTVkdGRUNvbG9yTWF0cml4IDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb2xvck1hdHJpeD4gY3JlYXRlKFNWR1Jl
c291cmNlRmlsdGVyKik7Ci0KLSAgICBTVkdDb2xvck1hdHJpeFR5cGUgdHlwZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0VHlwZShTVkdDb2xvck1hdHJpeFR5cGUpOwotCi0gICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgdmFsdWVzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9y
PGZsb2F0PiYpOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwg
Q0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5k
aWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRUNvbG9yTWF0cml4KFNWR1Jlc291cmNlRmlsdGVyKik7
Ci0KLSAgICBTVkdDb2xvck1hdHJpeFR5cGUgbV90eXBlOwotICAgIFZlY3RvcjxmbG9hdD4gbV92
YWx1ZXM7Ci19OworICAgIGVudW0gQ29sb3JNYXRyaXhUeXBlIHsKKyAgICAgICAgRkVDT0xPUk1B
VFJJWF9UWVBFX1VOS05PV04gICAgICAgICAgPSAwLAorICAgICAgICBGRUNPTE9STUFUUklYX1RZ
UEVfTUFUUklYICAgICAgICAgICA9IDEsCisgICAgICAgIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRV
UkFURSAgICAgICAgID0gMiwKKyAgICAgICAgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSAg
ICAgICAgPSAzLAorICAgICAgICBGRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9
IDQKKyAgICB9OworCisgICAgY2xhc3MgRkVDb2xvck1hdHJpeCA6IHB1YmxpYyBGaWx0ZXJFZmZl
Y3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVDb2xvck1hdHJp
eD4gY3JlYXRlKEZpbHRlckVmZmVjdCosIENvbG9yTWF0cml4VHlwZSwgY29uc3QgVmVjdG9yPGZs
b2F0PiYpOworCisgICAgICAgIENvbG9yTWF0cml4VHlwZSB0eXBlKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0VHlwZShDb2xvck1hdHJpeFR5cGUpOworCisgICAgICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIHZhbHVlcygpIGNvbnN0OworICAgICAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0
b3I8ZmxvYXQ+Jik7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZFQ29s
b3JNYXRyaXgoRmlsdGVyRWZmZWN0KiwgQ29sb3JNYXRyaXhUeXBlLCBjb25zdCBWZWN0b3I8Zmxv
YXQ+Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgQ29s
b3JNYXRyaXhUeXBlIG1fdHlwZTsKKyAgICAgICAgVmVjdG9yPGZsb2F0PiBtX3ZhbHVlczsKKyAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb2xvck1hdHJpeENnLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb2xvck1hdHJpeENnLm1tCShyZXZpc2lv
biAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb2xvck1h
dHJpeENnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExMSArMCwwIEBACi0vKgotICAgIENvcHly
aWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQot
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1
ZGUgIlNWR0ZFQ29sb3JNYXRyaXguaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi0j
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVm
aW5lIENNVmFsdWVzQ2hlY2soZXhwZWN0ZWQsIHR5cGUpIFwKLSAgICBpZiAodmFsdWVzKCkuc2l6
ZSgpICE9IGV4cGVjdGVkKSB7IFwKLSAgICAgICAgTlNMb2coQCJFcnJvciwgaW5jb3JyZWN0IG51
bWJlciBvZiB2YWx1ZXMgaW4gQ29sb3JNYXRyaXggZm9yIHR5cGUgXCIlc1wiLCBleHBlY3RlZDog
JWkgYWN0dWFsOiAlaSwgaWdub3JpbmcgZmlsdGVyLiAgVmFsdWVzOiIsIHR5cGUsIGV4cGVjdGVk
LCB2YWx1ZXMoKS5zaXplKCkpOyBcCi0gICAgICAgIGZvciAodW5zaWduZWQgeD0wOyB4IDwgdmFs
dWVzKCkuc2l6ZSgpOyB4KyspIGZwcmludGYoc3RkZXJyLCAiICVmIiwgdmFsdWVzKClbeF0pOyBc
Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsgXAotICAgICAgICByZXR1cm4gbmlsOyBc
Ci0gICAgfQotCi1DSUZpbHRlciogU1ZHRkVDb2xvck1hdHJpeDo6Z2V0Q0lGaWx0ZXIoY29uc3Qg
RmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0
ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyogZmls
dGVyUGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURh
dGFNYWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsKLSAgICBDSUZpbHRlciogZmlsdGVy
ID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBzd2l0Y2ggKHR5
cGUoKSkgewotICAgIGNhc2UgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgotICAgICAg
ICByZXR1cm4gbmlsOyAgICAgCi0gICAgY2FzZSBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJ
WDoKLSAgICB7Ci0gICAgICAgIENNVmFsdWVzQ2hlY2soMjAsICJtYXRyaXgiKTsKLSAgICAgICAg
ZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvck1hdHJpeCJdOwotICAg
ICAgICBbZmlsdGVyIHNldERlZmF1bHRzXTsKLSAgICAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYg
diA9IHZhbHVlcygpOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JX
aXRoWDp2WzBdIFk6dlsxXSBaOnZbMl0gVzp2WzNdXSBmb3JLZXk6QCJpbnB1dFJWZWN0b3IiXTsK
LSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dls1XSBZOnZb
Nl0gWjp2WzddIFc6dls4XV0gZm9yS2V5OkAiaW5wdXRHVmVjdG9yIl07Ci0gICAgICAgIFtmaWx0
ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOnZbMTBdIFk6dlsxMV0gWjp2WzEyXSBX
OnZbMTNdXSBmb3JLZXk6QCJpbnB1dEJWZWN0b3IiXTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1
ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dlsxNV0gWTp2WzE2XSBaOnZbMTddIFc6dlsxOF1dIGZv
cktleTpAImlucHV0QVZlY3RvciJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3Rv
ciB2ZWN0b3JXaXRoWDp2WzRdIFk6dls5XSBaOnZbMTRdIFc6dlsxOV1dIGZvcktleTpAImlucHV0
Qmlhc1ZlY3RvciJdOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBTVkdfRkVDT0xP
Uk1BVFJJWF9UWVBFX1NBVFVSQVRFOgotICAgIHsKLSAgICAgICAgQ01WYWx1ZXNDaGVjaygxLCAi
c2F0dXJhdGUiKTsKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAi
Q0lDb2xvckNvbnRyb2xzIl07Ci0gICAgICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAgICAg
ICBmbG9hdCBzYXR1cmF0aW9uID0gdmFsdWVzKClbMF07Ci0gICAgICAgIGlmICgoc2F0dXJhdGlv
biA8IDAuMCkgfHwgKHNhdHVyYXRpb24gPiAzLjApKQotICAgICAgICAgICAgTlNMb2coQCJXQVJO
SU5HOiBTYXR1cmF0aW9uIGFkanVzdG1lbnQ6ICVmIG91dHNpZGUgc3VwcG9ydGVkIHJhbmdlLiIp
OwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c2F0
dXJhdGlvbl0gZm9yS2V5OkAiaW5wdXRTYXR1cmF0aW9uIl07Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFOgotICAgIHsKLSAg
ICAgICAgQ01WYWx1ZXNDaGVjaygxLCAiaHVlUm90YXRlIik7Ci0gICAgICAgIGZpbHRlciA9IFtD
SUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJSHVlQWRqdXN0Il07Ci0gICAgICAgIFtmaWx0ZXIg
c2V0RGVmYXVsdHNdOwotICAgICAgICBmbG9hdCByYWRpYW5zID0gZGVnMnJhZCh2YWx1ZXMoKVsw
XSk7Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpy
YWRpYW5zXSBmb3JLZXk6QCJpbnB1dEFuZ2xlIl07Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBjYXNlIFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQToKLSAgICB7Ci0g
ICAgICAgIENNVmFsdWVzQ2hlY2soMCwgImx1bWluYW5jZVRvQWxwaGEiKTsKLSAgICAgICAgLy8g
RklYTUU6IEkgYmV0IHRoZXJlIGlzIGFuIGVhc3kgZmlsdGVyIHRvIGRvIHRoaXMuCi0gICAgICAg
IGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29sb3JNYXRyaXgiXTsKLSAg
ICAgICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAgICAgIENHRmxvYXQgemVyb1s0XSA9IHsw
LCAwLCAwLCAwfTsKLSAgICAgICAgQ0dGbG9hdCBhbHBoYVs0XSA9IHswLjIxMjVmLCAwLjcxNTRm
LCAwLjA3MjFmLCAwfTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9y
V2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0UlZlY3RvciJdOwotICAgICAg
ICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6
NF0gZm9yS2V5OkAiaW5wdXRHVmVjdG9yIl07Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W0NJ
VmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEJWZWN0
b3IiXTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVl
czphbHBoYSBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEFWZWN0b3IiXTsKLSAgICAgICAgW2ZpbHRl
ciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktl
eTpAImlucHV0Qmlhc1ZlY3RvciJdOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVs
dDoKLSAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCBDb2xvck1hdHJpeCB0eXBlOiAlaSIsIHR5cGUo
KSk7Ci0gICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IGZp
bHRlclBsYXRmb3JtRGF0YS0+aW5wdXRJbWFnZSh0aGlzKTsKLSAgICBGRV9RVUFSVFpfQ0hFQ0tf
SU5QVVQoaW5wdXRJbWFnZSk7Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTppbnB1dEltYWdlIGZvcktl
eTpAImlucHV0SW1hZ2UiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gp
OwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22073</attachid>
            <date>2008-07-03 15:39:13 -0700</date>
            <delta_ts>2008-07-03 17:00:31 -0700</delta_ts>
            <desc>SVGFEComponentTransfer Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>25784</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDk4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDgtMDctMDMgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbmFtZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyIHRvIEZFQ29tcG9uZW50VHJh
bnNmZXIgYW5kIGFsbAorICAgICAgICBvdGhlciBjaGFuZ2VzIHJlcXVpcmVkIHRvIGJ1aWxkIGFn
YWluLiBSZW1vdmVkIHRoZSBDb3JlSW1hZ2UKKyAgICAgICAgU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckNnLm1tIGZpbGUuIFNWR0NvbXBvbmVudFRyYW5zZmVyIGlzIG5vdworICAgICAgICBicm9rZW4u
CisKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dDo6dHJhbnNmZXJGdW5jdGlvbik6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OkZF
Q29tcG9uZW50VHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OnJlZEZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OnNldFJlZEZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OmdyZWVuRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6c2V0R3JlZW5G
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpibHVlRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6c2V0Qmx1ZUZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OmFscGhhRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6c2V0QWxwaGFG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjphcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpkdW1wKToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bjo6Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckNnLm1tOiBSZW1vdmVkLgorCiAyMDA4LTA3
LTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29y
ZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBk
b2MpCi0gICAgLCBtX3R5cGUoU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOKQor
ICAgICwgbV90eXBlKEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOKQogICAgICwgbV90
YWJsZVZhbHVlcyhTVkdOdW1iZXJMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0
cikpCiAgICAgLCBtX3Nsb3BlKDEuMGYpCiAgICAgLCBtX2ludGVyY2VwdCgwLjBmKQpAQCAtNjEs
MTUgKzYxLDE1IEBACiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dHlwZUF0dHIp
CiAgICAgewogICAgICAgICBpZiAodmFsdWUgPT0gImlkZW50aXR5IikKLSAgICAgICAgICAgIHNl
dFR5cGVCYXNlVmFsdWUoU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSk7Cisg
ICAgICAgICAgICBzZXRUeXBlQmFzZVZhbHVlKEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVO
VElUWSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJ0YWJsZSIpCi0gICAgICAgICAgICBz
ZXRUeXBlQmFzZVZhbHVlKFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUpOworICAg
ICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUp
OwogICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiZGlzY3JldGUiKQotICAgICAgICAgICAgc2V0
VHlwZUJhc2VWYWx1ZShTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFKTsKKyAg
ICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NS
RVRFKTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImxpbmVhciIpCi0gICAgICAgICAgICBz
ZXRUeXBlQmFzZVZhbHVlKFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSKTsKKyAg
ICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVB
Uik7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJnYW1tYSIpCi0gICAgICAgICAgICBzZXRU
eXBlQmFzZVZhbHVlKFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEpOworICAgICAg
ICAgICAgc2V0VHlwZUJhc2VWYWx1ZShGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEpOwog
ICAgIH0KICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnRhYmxlVmFsdWVz
QXR0cikKICAgICAgICAgdGFibGVWYWx1ZXNCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUpOwpAQCAt
ODcsMTAgKzg3LDEwIEBACiAgICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQogCi1TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3QKK0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24gU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnRy
YW5zZmVyRnVuY3Rpb24oKSBjb25zdAogewotICAgIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24gZnVuYzsKLSAgICBmdW5jLnR5cGUgPSAoU1ZHQ29tcG9uZW50VHJhbnNmZXJUeXBlKSB0eXBl
KCk7CisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBmdW5jOworICAgIGZ1bmMudHlwZSA9
IChDb21wb25lbnRUcmFuc2ZlclR5cGUpIHR5cGUoKTsKICAgICBmdW5jLnNsb3BlID0gc2xvcGUo
KTsKICAgICBmdW5jLmludGVyY2VwdCA9IGludGVyY2VwdCgpOwogICAgIGZ1bmMuYW1wbGl0dWRl
ID0gYW1wbGl0dWRlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJKHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAvLyBEZXJpdmVkIGZyb206
ICdFbGVtZW50JwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgCi0gICAgICAgIFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0OworICAgICAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb24oKSBjb25zdDsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCwgaW50LCBpbnQsIFR5cGUsIHR5cGUpCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNDk3
MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMjYgKzU3LDM5IEBACiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNW
R0ZFQ29tcG9uZW50VHJhbnNmZXIqIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0
ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVj
dCogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAg
ICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRl
cik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wg
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxk
ZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlk
KGluMSgpKTsKICAgICAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIHNl
dFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7CisgICAgaWYoIWlucHV0
MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biByZWQ7CisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBncmVlbjsKKyAgICBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIGJsdWU7CisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBh
bHBoYTsKICAgICAKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9
IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlRnVuY1JUYWcpKQotICAgICAgICAgICAgbV9maWx0ZXJFZmZlY3QtPnNldFJlZEZ1bmN0aW9u
KHN0YXRpY19jYXN0PFNWR0ZFRnVuY1JFbGVtZW50Kj4obiktPnRyYW5zZmVyRnVuY3Rpb24oKSk7
CisgICAgICAgICAgICByZWQgPSBzdGF0aWNfY2FzdDxTVkdGRUZ1bmNSRWxlbWVudCo+KG4pLT50
cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgICAgIGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlRnVuY0dUYWcpKQotICAgICAgICAgICAgbV9maWx0ZXJFZmZlY3QtPnNldEdyZWVuRnVu
Y3Rpb24oc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jR0VsZW1lbnQqPihuKS0+dHJhbnNmZXJGdW5jdGlv
bigpKTsKKyAgICAgICAgICAgIGdyZWVuID0gc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jR0VsZW1lbnQq
PihuKS0+dHJhbnNmZXJGdW5jdGlvbigpOwogICAgICAgICBlbHNlIGlmIChuLT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpmZUZ1bmNCVGFnKSkKLSAgICAgICAgICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRC
bHVlRnVuY3Rpb24oc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jQkVsZW1lbnQqPihuKS0+dHJhbnNmZXJG
dW5jdGlvbigpKTsKKyAgICAgICAgICAgYmx1ZSA9IHN0YXRpY19jYXN0PFNWR0ZFRnVuY0JFbGVt
ZW50Kj4obiktPnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICAgICAgZWxzZSBpZiAobi0+aGFzVGFn
TmFtZShTVkdOYW1lczo6ZmVGdW5jQVRhZykpCi0gICAgICAgICAgICBtX2ZpbHRlckVmZmVjdC0+
c2V0QWxwaGFGdW5jdGlvbihzdGF0aWNfY2FzdDxTVkdGRUZ1bmNBRWxlbWVudCo+KG4pLT50cmFu
c2ZlckZ1bmN0aW9uKCkpOworICAgICAgICAgICAgYWxwaGEgPSBzdGF0aWNfY2FzdDxTVkdGRUZ1
bmNBRWxlbWVudCo+KG4pLT50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQotCi0gICAgcmV0dXJu
IG1fZmlsdGVyRWZmZWN0LmdldCgpOworICAgIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFk
ZGVkRWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGlucHV0MSwgcmVkLCBncmVl
biwgYmx1ZSwgYWxwaGEpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3Qu
cmVsZWFzZSgpKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiAzNDk3MikK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1
ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdGRUNvbXBvbmVudFRyYW5zZmVyLmgiCiAKQEAg
LTM3LDcgKzM4LDggQEAKICAgICAgICAgdmlydHVhbCB+U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRkVDb21wb25lbnRUcmFuc2Zlciog
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
U1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsK
KyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiB0aGlzOyB9CkBAIC00NSw3ICs0Nyw3IEBACiAgICAgcHJpdmF0ZToKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LCBTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8
U1ZHRkVDb21wb25lbnRUcmFuc2Zlcj4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUg
UmVmUHRyPEZFQ29tcG9uZW50VHJhbnNmZXI+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyLmNwcAkocmV2aXNpb24gMzQ5NzIp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMjMgKzIzLDcyIEBACiAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ci5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
VkdGRUNvbXBvbmVudFRyYW5zZmVyOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyKFNWR1Jlc291cmNl
RmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQorRkVDb21wb25l
bnRUcmFuc2Zlcjo6RkVDb21wb25lbnRUcmFuc2ZlcihGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jLCAKKyAgICBjb25zdCBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIGJsdWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMp
CisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1fcmVkRnVuYyhy
ZWRGdW5jKQorICAgICwgbV9ncmVlbkZ1bmMoZ3JlZW5GdW5jKQorICAgICwgbV9ibHVlRnVuYyhi
bHVlRnVuYykKKyAgICAsIG1fYWxwaGFGdW5jKGFscGhhRnVuYykKIHsKIH0KIAotUGFzc1JlZlB0
cjxTVkdGRUNvbXBvbmVudFRyYW5zZmVyPiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUo
U1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVDb21wb25lbnRUcmFuc2Zl
cj4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIAorICAgIGNvbnN0IENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biYgYmx1ZUZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuYykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXIoZmlsdGVy
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUNvbXBvbmVudFRyYW5zZmVyKGluLCByZWRG
dW5jLCBncmVlbkZ1bmMsIGJsdWVGdW5jLCBhbHBoYUZ1bmMpKTsKIH0KIAotU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjpyZWRGdW5jdGlvbigpIGNv
bnN0CitDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIEZFQ29tcG9uZW50VHJhbnNmZXI6OnJlZEZ1
bmN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZWRGdW5jOwogfQogCi12b2lkIFNWR0ZF
Q29tcG9uZW50VHJhbnNmZXI6OnNldFJlZEZ1bmN0aW9uKGNvbnN0IFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24mIGZ1bmMpCit2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnNldFJlZEZ1bmN0
aW9uKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMpCiB7CiAgICAgbV9yZWRG
dW5jID0gZnVuYzsKIH0KIAotU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBTVkdGRUNvbXBv
bmVudFRyYW5zZmVyOjpncmVlbkZ1bmN0aW9uKCkgY29uc3QKK0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gRkVDb21wb25lbnRUcmFuc2Zlcjo6Z3JlZW5GdW5jdGlvbigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fZ3JlZW5GdW5jOwogfQogCi12b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXI6OnNl
dEdyZWVuRnVuY3Rpb24oY29uc3QgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYykK
K3ZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6c2V0R3JlZW5GdW5jdGlvbihjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jKQogewogICAgIG1fZ3JlZW5GdW5jID0gZnVuYzsKIH0K
IAotU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjpi
bHVlRnVuY3Rpb24oKSBjb25zdAorQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBGRUNvbXBvbmVu
dFRyYW5zZmVyOjpibHVlRnVuY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2JsdWVGdW5j
OwogfQogCi12b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEJsdWVGdW5jdGlvbihjb25z
dCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jKQordm9pZCBGRUNvbXBvbmVudFRy
YW5zZmVyOjpzZXRCbHVlRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYg
ZnVuYykKIHsKICAgICBtX2JsdWVGdW5jID0gZnVuYzsKIH0KIAotU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjphbHBoYUZ1bmN0aW9uKCkgY29uc3QK
K0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gRkVDb21wb25lbnRUcmFuc2Zlcjo6YWxwaGFGdW5j
dGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYWxwaGFGdW5jOwogfQogCi12b2lkIFNWR0ZF
Q29tcG9uZW50VHJhbnNmZXI6OnNldEFscGhhRnVuY3Rpb24oY29uc3QgU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiYgZnVuYykKK3ZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6c2V0QWxwaGFG
dW5jdGlvbihjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jKQogewogICAgIG1f
YWxwaGFGdW5jID0gZnVuYzsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIFNWR0NvbXBvbmVudFRyYW5zZmVyVHlwZSB0KQordm9pZCBGRUNvbXBvbmVu
dFRyYW5zZmVyOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6ZHVt
cCgpCiB7Ci0gICAgc3dpdGNoICh0KQotICAgIHsKLSAgICAgICAgY2FzZSBTVkdfRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX1VOS05PV046Ci0gICAgICAgICAgICB0cyA8PCAiVU5LTk9XTiI7IGJy
ZWFrOwotICAgICAgICBjYXNlIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFk6
Ci0gICAgICAgICAgICB0cyA8PCAiSURFTlRJVFkiOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdf
RkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFOgotICAgICAgICAgICAgdHMgPDwgIlRBQkxF
IjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVND
UkVURToKLSAgICAgICAgICAgIHRzIDw8ICJESVNDUkVURSI7IGJyZWFrOwotICAgICAgICBjYXNl
IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOgotICAgICAgICAgICAgdHMgPDwg
IkxJTkVBUiI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZ
UEVfR0FNTUE6Ci0gICAgICAgICAgICB0cyA8PCAiR0FNTUEiOyBicmVhazsKLSAgICB9Ci0gICAg
cmV0dXJuIHRzOwotfQotCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiAmZnVuYykKLXsKLSAgICB0
cyA8PCAiW3R5cGU9IiA8PCBmdW5jLnR5cGUgPDwgIl0iOwotICAgIHN3aXRjaCAoZnVuYy50eXBl
KSB7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOOgot
ICAgICAgICBjYXNlIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFk6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBF
X1RBQkxFOgotICAgICAgICBjYXNlIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JF
VEU6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRzIDw8ICIgW3RhYmxlIHZhbHVlcz0iOwotICAg
ICAgICAgICAgVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgaXRyPWZ1bmMudGFibGVWYWx1
ZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGlmIChpdHIgIT0gZnVuYy50YWJsZVZhbHVlcy5lbmQo
KSkgewotICAgICAgICAgICAgICAgIHRzIDw8ICppdHIrKzsKLSAgICAgICAgICAgICAgICBmb3Ig
KDsgaXRyIT1mdW5jLnRhYmxlVmFsdWVzLmVuZCgpOyBpdHIrKykgewotICAgICAgICAgICAgICAg
ICAgICB0cyA8PCAiICIgPDwgKml0cjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB0cyA8PCAiXSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOgotICAgICAg
ICAgICAgdHMgPDwgIiBbc2xvcGU9IiA8PCBmdW5jLnNsb3BlIDw8ICJdIgotICAgICAgICAgICAg
ICAgPDwgIiBbaW50ZXJjZXB0PSIgPDwgZnVuYy5pbnRlcmNlcHQgPDwgIl0iOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1N
QToKLSAgICAgICAgICAgIHRzIDw8ICIgW2FtcGxpdHVkZT0iIDw8IGZ1bmMuYW1wbGl0dWRlIDw8
ICJdIgotICAgICAgICAgICAgICAgPDwgIiBbZXhwb25lbnQ9IiA8PCBmdW5jLmV4cG9uZW50IDw8
ICJdIgotICAgICAgICAgICAgICAgPDwgIiBbb2Zmc2V0PSIgPDwgZnVuYy5vZmZzZXQgPDwgIl0i
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotVGV4dFN0
cmVhbSYgU1ZHRkVDb21wb25lbnRUcmFuc2Zlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cyA8PCAiW3R5cGU9Q09NUE9ORU5ULVRSQU5TRkVS
XSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0g
ICAgdHMgPDwgIiBbcmVkIGZ1bmM9IiA8PCByZWRGdW5jdGlvbigpIDw8ICJdIgotICAgICAgICA8
PCAiIFtncmVlbiBmdW5jPSIgPDwgZ3JlZW5GdW5jdGlvbigpIDw8ICJdIgotICAgICAgICA8PCAi
IFtibHVlIGZ1bmM9IiA8PCBibHVlRnVuY3Rpb24oKSA8PCAiXSIKLSAgICAgICAgPDwgIiBbYWxw
aGEgZnVuYz0iIDw8IGFscGhhRnVuY3Rpb24oKSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXIuaAkocmV2aXNpb24gMzQ5NzIp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsODcgKzIzLDc0IEBACiAjZGVmaW5lIFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgor
I2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFw
LmgiCiAKLSNpZiBQTEFURk9STShDSSkKLSNpZmRlZiBfX09CSkNfXwotQGNsYXNzIENJSW1hZ2U7
Ci1AY2xhc3MgQ0lGaWx0ZXI7Ci0jZWxzZQotY2xhc3MgQ0lJbWFnZTsKLWNsYXNzIENJRmlsdGVy
OwotI2VuZGlmCi0jZW5kaWYKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotZW51bSBTVkdDb21wb25lbnRUcmFuc2ZlclR5cGUgewotICAgIFNWR19GRUNP
TVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiAgPSAwLAotICAgIFNWR19GRUNPTVBPTkVOVFRS
QU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxLAotICAgIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZ
UEVfVEFCTEUgICAgPSAyLAotICAgIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JF
VEUgPSAzLAotICAgIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSICAgPSA0LAot
ICAgIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgICAgPSA1Ci19OwotCi1zdHJ1
Y3QgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB7Ci0gICAgU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbigpCi0gICAgICAgIDogdHlwZShTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBF
X1VOS05PV04pCi0gICAgICAgICwgc2xvcGUoMC4wZikKLSAgICAgICAgLCBpbnRlcmNlcHQoMC4w
ZikKLSAgICAgICAgLCBhbXBsaXR1ZGUoMC4wZikKLSAgICAgICAgLCBleHBvbmVudCgwLjBmKQot
ICAgICAgICAsIG9mZnNldCgwLjBmKQotICAgIHsKLSAgICB9Ci0KLSAgICBTVkdDb21wb25lbnRU
cmFuc2ZlclR5cGUgdHlwZTsKLQotICAgIGZsb2F0IHNsb3BlOwotICAgIGZsb2F0IGludGVyY2Vw
dDsKLSAgICBmbG9hdCBhbXBsaXR1ZGU7Ci0gICAgZmxvYXQgZXhwb25lbnQ7Ci0gICAgZmxvYXQg
b2Zmc2V0OwotCi0gICAgVmVjdG9yPGZsb2F0PiB0YWJsZVZhbHVlczsKLX07Ci0KLWNsYXNzIFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXIgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbXBvbmVudFRyYW5zZmVyPiBjcmVhdGUoU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gcmVk
RnVuY3Rpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldFJlZEZ1bmN0aW9uKGNvbnN0IFNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKLQotICAgIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24gZ3JlZW5GdW5jdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0R3JlZW5GdW5jdGlvbihjb25z
dCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7Ci0KLSAgICBTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uIGJsdWVGdW5jdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0Qmx1ZUZ1bmN0
aW9uKGNvbnN0IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKLQotICAgIFNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24gYWxwaGFGdW5jdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0
QWxwaGFGdW5jdGlvbihjb25zdCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7Ci0KLSAg
ICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYp
IGNvbnN0OwotCi0jaWYgUExBVEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lG
aWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBDSUZp
bHRlciogZ2V0RnVuY3Rpb25GaWx0ZXIoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSwgQ0lJbWFnZSog
aW5wdXRJbWFnZSkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uIG1fcmVkRnVuYzsKLSAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG1f
Z3JlZW5GdW5jOwotICAgIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbV9ibHVlRnVuYzsK
LSAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG1fYWxwaGFGdW5jOwotfTsKKyAgICBl
bnVtIENvbXBvbmVudFRyYW5zZmVyVHlwZSB7CisgICAgICAgIEZFQ09NUE9ORU5UVFJBTlNGRVJf
VFlQRV9VTktOT1dOICA9IDAsCisgICAgICAgIEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVO
VElUWSA9IDEsCisgICAgICAgIEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSAgICA9IDIs
CisgICAgICAgIEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSA9IDMsCisgICAgICAg
IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVIgICA9IDQsCisgICAgICAgIEZFQ09NUE9O
RU5UVFJBTlNGRVJfVFlQRV9HQU1NQSAgICA9IDUKKyAgICB9OworCisgICAgc3RydWN0IENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24geworICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
KCkKKyAgICAgICAgICAgIDogdHlwZShGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTikK
KyAgICAgICAgICAgICwgc2xvcGUoMC4wZikKKyAgICAgICAgICAgICwgaW50ZXJjZXB0KDAuMGYp
CisgICAgICAgICAgICAsIGFtcGxpdHVkZSgwLjBmKQorICAgICAgICAgICAgLCBleHBvbmVudCgw
LjBmKQorICAgICAgICAgICAgLCBvZmZzZXQoMC4wZikKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJUeXBlIHR5cGU7CisKKyAgICAgICAgZmxvYXQgc2xv
cGU7CisgICAgICAgIGZsb2F0IGludGVyY2VwdDsKKyAgICAgICAgZmxvYXQgYW1wbGl0dWRlOwor
ICAgICAgICBmbG9hdCBleHBvbmVudDsKKyAgICAgICAgZmxvYXQgb2Zmc2V0OworCisgICAgICAg
IFZlY3RvcjxmbG9hdD4gdGFibGVWYWx1ZXM7CisgICAgfTsKKworICAgIGNsYXNzIEZFQ29tcG9u
ZW50VHJhbnNmZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZFQ29tcG9uZW50VHJhbnNmZXI+IGNyZWF0ZShGaWx0ZXJFZmZl
Y3QqLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiwgCisgICAgICAgICAgICAgICAg
Y29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24mLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7CisKKyAgICAgICAg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiByZWRGdW5jdGlvbigpIGNvbnN0OworICAgICAgICB2
b2lkIHNldFJlZEZ1bmN0aW9uKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKKwor
ICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGdyZWVuRnVuY3Rpb24oKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXRHcmVlbkZ1bmN0aW9uKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mKTsKKworICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGJsdWVGdW5jdGlv
bigpIGNvbnN0OworICAgICAgICB2b2lkIHNldEJsdWVGdW5jdGlvbihjb25zdCBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uJik7CisKKyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBh
bHBoYUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0QWxwaGFGdW5jdGlvbihjb25z
dCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHByaXZh
dGU6CisgICAgICAgIEZFQ29tcG9uZW50VHJhbnNmZXIoRmlsdGVyRWZmZWN0Kixjb25zdCBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYs
CisgICAgICAgICAgICAgICAgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYsIGNvbnN0
IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKKworICAgICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBtX2luOworICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG1fcmVkRnVuYzsK
KyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBtX2dyZWVuRnVuYzsKKyAgICAgICAg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBtX2JsdWVGdW5jOworICAgICAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIG1fYWxwaGFGdW5jOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckNnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckNnLm1tCShyZXZpc2lvbiAzNDk3MikKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckNnLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2NyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZF
Q29tcG9uZW50VHJhbnNmZXIuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi0jaW1w
b3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgiCi0jaW1wb3J0ICJXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIuaCIKLSNpbXBvcnQgIldLVGFibGVUcmFuc2ZlckZpbHRlci5oIgotI2ltcG9ydCAi
V0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgiCi0jaW1wb3J0ICJXS0xpbmVhclRyYW5zZmVyRmls
dGVyLmgiCi0jaW1wb3J0ICJXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgQ0lJbWFnZSogZ2VuSW1hZ2VGcm9tVGFibGUoY29uc3QgVmVjdG9y
PGZsb2F0PiYgdGFibGUpCi17Ci0gICAgaW50IGxlbmd0aCA9IHRhYmxlLnNpemUoKTsKLSAgICBp
bnQgbkJ5dGVzID0gbGVuZ3RoICogNCAqIHNpemVvZihmbG9hdCk7Ci0gICAgZmxvYXQqIHRhYmxl
U3RvcmUgPSAoZmxvYXQgKikgbWFsbG9jKG5CeXRlcyk7Ci0gICAgTlNEYXRhKiBiaXRtYXBEYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OnRhYmxlU3RvcmUgbGVuZ3RoOm5CeXRlc107
Ci0gICAgZm9yIChWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRhYmxlLmJlZ2lu
KCk7IGl0ICE9IHRhYmxlLmVuZCgpOyBpdCsrKSB7Ci0gICAgICAgIGNvbnN0IGZsb2F0IHZhbHVl
ID0gKml0OwotICAgICAgICAqdGFibGVTdG9yZSsrID0gdmFsdWU7Ci0gICAgICAgICp0YWJsZVN0
b3JlKysgPSB2YWx1ZTsKLSAgICAgICAgKnRhYmxlU3RvcmUrKyA9IHZhbHVlOwotICAgICAgICAq
dGFibGVTdG9yZSsrID0gdmFsdWU7Ci0gICAgfQotICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdp
dGhCaXRtYXBEYXRhOmJpdG1hcERhdGEgYnl0ZXNQZXJSb3c6bkJ5dGVzIHNpemU6Q0dTaXplTWFr
ZShsZW5ndGgsIDEpIGZvcm1hdDprQ0lGb3JtYXRSR0JBZiBjb2xvclNwYWNlOm5pbF07Ci19Ci0K
LXN0YXRpYyB2b2lkIHNldFBhcmFtZXRlcnNGb3JDb21wb25lbnRGdW5jKENJRmlsdGVyKiBmaWx0
ZXIsIGNvbnN0IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMsIENJVmVjdG9yKiBj
aGFubmVsU2VsZWN0b3IpCi17Ci0gICAgc3dpdGNoIChmdW5jLnR5cGUpIHsKLSAgICBjYXNlIFNW
R19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTjoKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRToKLSAgICAgICAgW2ZpbHRl
ciBzZXRWYWx1ZTpnZW5JbWFnZUZyb21UYWJsZShmdW5jLnRhYmxlVmFsdWVzKSBmb3JLZXk6QCJp
bnB1dFRhYmxlIl07Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2hhbm5lbFNlbGVjdG9yIGZv
cktleTpAImlucHV0U2VsZWN0b3IiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfRkVD
T01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFOgotICAgICAgICBbZmlsdGVyIHNldFZhbHVl
OmdlbkltYWdlRnJvbVRhYmxlKGZ1bmMudGFibGVWYWx1ZXMpIGZvcktleTpAImlucHV0VGFibGUi
XTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpjaGFubmVsU2VsZWN0b3IgZm9yS2V5OkAiaW5w
dXRTZWxlY3RvciJdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19GRUNPTVBPTkVOVFRS
QU5TRkVSX1RZUEVfTElORUFSOgotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoRmxvYXQ6ZnVuYy5zbG9wZV0gZm9yS2V5OkAiaW5wdXRTbG9wZSJdOwotICAgICAg
ICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5pbnRlcmNl
cHRdIGZvcktleTpAImlucHV0SW50ZXJjZXB0Il07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
U1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQToKLSAgICAgICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuYW1wbGl0dWRlXSBmb3JLZXk6QCJp
bnB1dEFtcGxpdHVkZSJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1i
ZXJXaXRoRmxvYXQ6ZnVuYy5leHBvbmVudF0gZm9yS2V5OkAiaW5wdXRFeHBvbmVudCJdOwotICAg
ICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5vZmZz
ZXRdIGZvcktleTpAImlucHV0T2Zmc2V0Il07Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIC8vIGlkZW50aXR5IGhhcyBubyBhcmdzCi0gICAgICAgIGJyZWFrOwotICAgIH0K
LX0KLQotc3RhdGljIENJRmlsdGVyKiBmaWx0ZXJGb3JDb21wb25lbnRGdW5jKGNvbnN0IFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMpCi17Ci0gICAgQ0lGaWx0ZXIgKmZpbHRlcjsK
LSAgICBzd2l0Y2ggKGZ1bmMudHlwZSkgewotICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNG
RVJfVFlQRV9VTktOT1dOOgotICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9J
REVOVElUWToKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tJ
ZGVudGl0eVRyYW5zZmVyIl07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHX0ZFQ09NUE9O
RU5UVFJBTlNGRVJfVFlQRV9UQUJMRToKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRl
cldpdGhOYW1lOkAiV0tUYWJsZVRyYW5zZmVyRmlsdGVyIl07Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURToKLSAgICAgICAgZmls
dGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVy
Il07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQ
RV9MSU5FQVI6Ci0gICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldL
TGluZWFyVHJhbnNmZXIiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0dBTU1BOgotICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVy
V2l0aE5hbWU6QCJXS0dhbW1hVHJhbnNmZXIiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgTlNMb2coQCJXQVJOSU5HOiBVbmtub3duIGZ1bmN0aW9uIHR5cGUgZm9yIGZl
Q29tcG9uZW50VHJhbnNmZXIiKTsKLSAgICAgICAgLy9hbmQgdG8gcHJldmVudCB0aGUgZW50aXJl
IHN2ZyBmcm9tIGZhaWxpbmcgYXMgYSByZXN1bHQKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiV0tJZGVudGl0eVRyYW5zZmVyIl07Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICByZXR1cm4gZmlsdGVyOwotfQotCi1zdGF0aWMgQ0lGaWx0ZXIqIGdldEZpbHRl
ckZvckZ1bmMoY29uc3QgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYywgQ0lJbWFn
ZSogaW5wdXRJbWFnZSwgQ0lWZWN0b3IqIGNoYW5uZWxTZWxlY3RvcikKLXsKLSAgICBDSUZpbHRl
ciogZmlsdGVyID0gZmlsdGVyRm9yQ29tcG9uZW50RnVuYyhmdW5jKTsKLSAgICBbZmlsdGVyIHNl
dERlZmF1bHRzXTsKLQotICAgIHNldFBhcmFtZXRlcnNGb3JDb21wb25lbnRGdW5jKGZpbHRlciwg
ZnVuYywgY2hhbm5lbFNlbGVjdG9yKTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0SW1hZ2Ug
Zm9yS2V5OkAiaW5wdXRJbWFnZSJdOwotICAgIHJldHVybiBmaWx0ZXI7Ci19Ci0KLUNJRmlsdGVy
KiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjpnZXRGdW5jdGlvbkZpbHRlcihTVkdDaGFubmVsU2Vs
ZWN0b3JUeXBlIGNoYW5uZWwsIENJSW1hZ2UqIGlucHV0SW1hZ2UpIGNvbnN0Ci17Ci0gICAgc3dp
dGNoIChjaGFubmVsKSB7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfUjoKLSAgICAgICAgICAg
IHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhyZWRGdW5jdGlvbigpLCBpbnB1dEltYWdlLCBnZXRW
ZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Ci0g
ICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfRzoKLSAgICAgICAgICAgIHJldHVybiBbZ2V0RmlsdGVy
Rm9yRnVuYyhncmVlbkZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIGdldFZlY3RvckZvckNoYW5uZWwo
Y2hhbm5lbCkpIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKLSAgICAgICAgY2FzZSBTVkdf
Q0hBTk5FTF9COgotICAgICAgICAgICAgcmV0dXJuIFtnZXRGaWx0ZXJGb3JGdW5jKGJsdWVGdW5j
dGlvbigpLCBpbnB1dEltYWdlLCBnZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1ZUZv
cktleTpAIm91dHB1dEltYWdlIl07Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfQToKLSAgICAg
ICAgICAgIHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhhbHBoYUZ1bmN0aW9uKCksIGlucHV0SW1h
Z2UsIGdldFZlY3RvckZvckNoYW5uZWwoY2hhbm5lbCkpIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1h
Z2UiXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
fQotCi1DSUZpbHRlciogU1ZHRkVDb21wb25lbnRUcmFuc2Zlcjo6Z2V0Q0lGaWx0ZXIoY29uc3Qg
RmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFtXS0NvbXBvbmVudE1lcmdlRmlsdGVyIGNs
YXNzXTsKLSAgICBbV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyIGNsYXNzXTsKLSAgICBbV0tUYWJs
ZVRyYW5zZmVyRmlsdGVyIGNsYXNzXTsKLSAgICBbV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIGNs
YXNzXTsKLSAgICBbV0tMaW5lYXJUcmFuc2ZlckZpbHRlciBjbGFzc107Ci0gICAgW1dLR2FtbWFU
cmFuc2ZlckZpbHRlciBjbGFzc107Ci0KLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVy
ID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRl
clBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRh
TWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgQ0lGaWx0ZXIqIGZpbHRlciA9
IG5pbDsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgZmlsdGVyID0gW0NJ
RmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tDb21wb25lbnRNZXJnZSJdOwotICAgIGlmICghZmls
dGVyKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAg
IENJSW1hZ2UqIGlucHV0SW1hZ2UgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhp
cyk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotCi0gICAgW2ZpbHRl
ciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihTVkdfQ0hBTk5FTF9SLCBpbnB1dEltYWdlKSBm
b3JLZXk6QCJpbnB1dEZ1bmNSIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZp
bHRlcihTVkdfQ0hBTk5FTF9HLCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1bmNHIl07Ci0g
ICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihTVkdfQ0hBTk5FTF9CLCBpbnB1
dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1bmNCIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRG
dW5jdGlvbkZpbHRlcihTVkdfQ0hBTk5FTF9BLCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1
bmNBIl07Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94KTsKLSAgICBGRV9R
VUFSVFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22076</attachid>
            <date>2008-07-03 16:22:00 -0700</date>
            <delta_ts>2008-07-03 17:00:31 -0700</delta_ts>
            <desc>SVGFEComposite Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>20477</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDk4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDgtMDctMDMgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbmFtZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgdG8gRkVDb21wb3NpdGVFbGVt
ZW50IGFuZCBjaGFuZ2VzIG5lZWRlZAorICAgICAgICB0byBidWlsZCBhZnRlciB0aGUgcmVuYW1l
LiBSZW1vdmVkIFNWR0ZFQ29tcG9zaXRlQ2cubW0gc28gbm93IHRoZQorICAgICAgICBwcmV2aW91
cyBpbXBsZW1lbnRhdGlvbiBvZiBGRUNvbXBvc2l0ZSBpcyBicm9rZW4uCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3ZnL1NWR0ZFQ29t
cG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29tcG9zaXRlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbXBvc2l0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6RkVDb21wb3NpdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbXBvc2l0ZTo6b3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpz
ZXRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OmsxKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpzZXRLMSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6azIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnNldEsyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjprMyk6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6c2V0SzMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6Oms0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpzZXRLNCk6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbXBvc2l0ZTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OmR1bXAp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29tcG9zaXRlLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZF
Q29tcG9zaXRlQ2cubW06IFJlbW92ZWQuCisKIDIwMDgtMDctMDMgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM0
OTcyKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMwMDEsOSArMzAwMSw2IEBACiAJCUIyNTU5OTMzMEQwMEQ4QkEwMEJCODI1
QyAvKiBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3Vy
Y2VDbGlwcGVyQ2cuY3BwICovOyB9OwogCQlCMjU1OTkzNTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZH
UmVzb3VyY2VGaWx0ZXJDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNTU5ODk5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNn
Lm1tICovOyB9OwogCQlCMjU1OTkzNzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNr
ZXJDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NTU5ODlCMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tICovOyB9Owot
CQlCMjU1OTkzOTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb2xvck1hdHJpeENnLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OUYwRDAwRDhC
ODAwQkI4MjVDIC8qIFNWR0ZFQ29sb3JNYXRyaXhDZy5tbSAqLzsgfTsKLQkJQjI1NTk5M0EwRDAw
RDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJDZy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEEwMEQwMEQ4QjgwMEJCODI1
QyAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyQ2cubW0gKi87IH07Ci0JCUIyNTU5OTNCMEQwMEQ4
QkEwMEJCODI1QyAvKiBTVkdGRUNvbXBvc2l0ZUNnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTEwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZF
Q29tcG9zaXRlQ2cubW0gKi87IH07CiAJCUIyNTU5OTNDMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdG
RURpZmZ1c2VMaWdodGluZ0NnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI1NTk4QTIwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nQ2cubW0gKi87IH07CiAJCUIyNTU5OTNEMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRURpc3Bs
YWNlbWVudE1hcENnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI1NTk4QTMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwQ2cu
bW0gKi87IH07CiAJCUIyNTU5OTNFMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBNDBE
MDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVGbG9vZENnLm1tICovOyB9OwpAQCAtNzM1Miw5ICs3MzQ5
LDYgQEAKIAkJQjI1NTk4OTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291cmNlQ2xpcHBlckNn
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdSZXNvdXJjZUNs
aXBwZXJDZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5ODk5MEQwMEQ4
QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR1Jlc291cmNlRmlsdGVyQ2cubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5ODlCMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJj
ZU1hc2tlckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNW
R1Jlc291cmNlTWFza2VyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5
ODlGMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbG9yTWF0cml4Q2cubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVDb2xvck1hdHJpeENnLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThBMDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQjI1NTk4QTEwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9zaXRlQ2cu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVDb21wb3Np
dGVDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QTIwRDAwRDhCODAw
QkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QTMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlz
cGxhY2VtZW50TWFwQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUZsb29kQ2cubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTk0NCw5ICsxMTkzOCw2IEBACiAJCUIyNTU5ODlEMEQw
MEQ4QjgwMEJCODI1QyAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJQjI1NTk4OUYwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29sb3JNYXRyaXhD
Zy5tbSAqLywKLQkJCQlCMjU1OThBMDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckNnLm1tICovLAotCQkJCUIyNTU5OEExMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNv
bXBvc2l0ZUNnLm1tICovLAogCQkJCUIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURp
ZmZ1c2VMaWdodGluZ0NnLm1tICovLAogCQkJCUIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1QyAvKiBT
VkdGRURpc3BsYWNlbWVudE1hcENnLm1tICovLAogCQkJCUIyNTU5OEE0MEQwMEQ4QjgwMEJCODI1
QyAvKiBTVkdGRUZsb29kQ2cubW0gKi8sCkBAIC0xNjU2NywxMyArMTY1NTgsMTAgQEAKIAkJCQlC
MjU1OTk3MjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVCbGVuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjIyNzlDNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5NzQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29sb3JN
YXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5MzkwRDAwRDhCQTAwQkI4MjVDIC8q
IFNWR0ZFQ29sb3JNYXRyaXhDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUNBMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjU1OTk3NjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb21wb25lbnRUcmFuc2Zlci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzQTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckNnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5Q0QwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyNTU5OTc4MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbXBvc2l0ZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzQjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb21w
b3NpdGVDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUQwMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5N0Ew
RDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29udm9sdmVNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjI1NTk5N0MwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogU1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX19vcGVyYXRvcihTVkdfRkVDT01QT1NJVEVfT1BFUkFU
T1JfT1ZFUikKKyAgICAsIG1fX29wZXJhdG9yKEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIpCiAg
ICAgLCBtX2sxKDAuMGYpCiAgICAgLCBtX2syKDAuMGYpCiAgICAgLCBtX2szKDAuMGYpCkBAIC01
OCwxNyArNTgsMTcgQEAKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsK
ICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpIHsKICAgICAg
ICAgaWYgKHZhbHVlID09ICJvdmVyIikKLSAgICAgICAgICAgIHNldF9vcGVyYXRvckJhc2VWYWx1
ZShTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUik7CisgICAgICAgICAgICBzZXRfb3BlcmF0
b3JCYXNlVmFsdWUoRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUik7CiAgICAgICAgIGVsc2UgaWYg
KHZhbHVlID09ICJpbiIpCi0gICAgICAgICAgICBzZXRfb3BlcmF0b3JCYXNlVmFsdWUoU1ZHX0ZF
Q09NUE9TSVRFX09QRVJBVE9SX0lOKTsKKyAgICAgICAgICAgIHNldF9vcGVyYXRvckJhc2VWYWx1
ZShGRUNPTVBPU0lURV9PUEVSQVRPUl9JTik7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJv
dXQiKQotICAgICAgICAgICAgc2V0X29wZXJhdG9yQmFzZVZhbHVlKFNWR19GRUNPTVBPU0lURV9P
UEVSQVRPUl9PVVQpOworICAgICAgICAgICAgc2V0X29wZXJhdG9yQmFzZVZhbHVlKEZFQ09NUE9T
SVRFX09QRVJBVE9SX09VVCk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJhdG9wIikKLSAg
ICAgICAgICAgIHNldF9vcGVyYXRvckJhc2VWYWx1ZShTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1Jf
QVRPUCk7CisgICAgICAgICAgICBzZXRfb3BlcmF0b3JCYXNlVmFsdWUoRkVDT01QT1NJVEVfT1BF
UkFUT1JfQVRPUCk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJ4b3IiKQotICAgICAgICAg
ICAgc2V0X29wZXJhdG9yQmFzZVZhbHVlKFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1IpOwor
ICAgICAgICAgICAgc2V0X29wZXJhdG9yQmFzZVZhbHVlKEZFQ09NUE9TSVRFX09QRVJBVE9SX1hP
Uik7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJhcml0aG1ldGljIikKLSAgICAgICAgICAg
IHNldF9vcGVyYXRvckJhc2VWYWx1ZShTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJ
Qyk7CisgICAgICAgICAgICBzZXRfb3BlcmF0b3JCYXNlVmFsdWUoRkVDT01QT1NJVEVfT1BFUkFU
T1JfQVJJVEhNRVRJQyk7CiAgICAgfQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6aW5BdHRyKQogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwpAQCAtODYsMjEg
Kzg2LDI1IEBACiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZFQ29tcG9zaXRlKiBTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBj
b25zdAorU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmZpbHRlckVmZmVj
dChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJF
ZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVDb21wb3NpdGU6OmNyZWF0ZShm
aWx0ZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCiti
b29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikK
K3sKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjIoKSk7CisgICAgCisgICAgaWYoIWlucHV0MSB8fCAhaW5wdXQyKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldE9wZXJhdGlvbigoU1ZHQ29tcG9z
aXRlT3BlcmF0aW9uVHlwZSkgX29wZXJhdG9yKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJ
bihpbjEoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluMihpbjIoKSk7Ci0gICAgbV9maWx0
ZXJFZmZlY3QtPnNldEsxKGsxKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLMihrMigpKTsK
LSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SzMoazMoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNl
dEs0KGs0KCkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVDb21w
b3NpdGU6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0
aW9uVHlwZT4gKF9vcGVyYXRvcigpKSwKKyAgICAgICAgazEoKSwgazIoKSwgazMoKSwgazQoKSk7
CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOwogCi0g
ICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKLSAgICByZXR1
cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsy
NCw3IEBACiAjZGVmaW5lIFNWR0ZFQ29tcG9zaXRlRWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2lu
Y2x1ZGUgIlNWR0ZFQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgiCiAKQEAgLTM3LDcgKzM4LDggQEAKICAgICAgICAgdmlydHVhbCB+
U1ZHRkVDb21wb3NpdGVFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFQ29t
cG9zaXRlKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciop
IGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTUxLDcgKzUzLDcgQEAKICAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIGZs
b2F0LCBLMywgazMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBmbG9hdCwgSzQsIGs0KQogCi0gICAgICAgIG11dGFi
bGUgUmVmUHRyPFNWR0ZFQ29tcG9zaXRlPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJs
ZSBSZWZQdHI8RkVDb21wb3NpdGU+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVD
b21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVDb21wb3NpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw5MyAr
MjMsODQgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNs
dWRlICJTVkdGRUNvbXBvc2l0ZS5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TVkdGRUNvbXBvc2l0ZTo6U1ZHRkVDb21wb3NpdGUoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAgLCBt
X29wZXJhdGlvbihTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTikKLSAgICAsIG1fazEo
MC4wZikKLSAgICAsIG1fazIoMC4wZikKLSAgICAsIG1fazMoMC4wZikKLSAgICAsIG1fazQoMC4w
ZikKK0ZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZl
Y3QqIGluMiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwKKyAgICBjb25zdCBm
bG9hdCYgazEsIGNvbnN0IGZsb2F0JiBrMiwgY29uc3QgZmxvYXQmIGszLCBjb25zdCBmbG9hdCYg
azQpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1faW4yKGlu
MikKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9rMShrMSkKKyAgICAsIG1fazIoazIpCisg
ICAgLCBtX2szKGszKQorICAgICwgbV9rNChrNCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUNv
bXBvc2l0ZT4gU1ZHRkVDb21wb3NpdGU6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVy
KQorUGFzc1JlZlB0cjxGRUNvbXBvc2l0ZT4gRkVDb21wb3NpdGU6OmNyZWF0ZShGaWx0ZXJFZmZl
Y3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYg
dHlwZSwKKyAgICBjb25zdCBmbG9hdCYgazEsIGNvbnN0IGZsb2F0JiBrMiwgY29uc3QgZmxvYXQm
IGszLCBjb25zdCBmbG9hdCYgazQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGRUNv
bXBvc2l0ZShmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFQ29tcG9zaXRlKGlu
LCBpbjIsIHR5cGUsIGsxLCBrMiwgazMsIGs0KSk7CiB9CiAKLVN0cmluZyBTVkdGRUNvbXBvc2l0
ZTo6aW4yKCkgY29uc3QKK0NvbXBvc2l0ZU9wZXJhdGlvblR5cGUgRkVDb21wb3NpdGU6Om9wZXJh
dGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW4yOworICAgIHJldHVybiBtX3R5cGU7CiB9
CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGU6OnNldEluMihjb25zdCBTdHJpbmcmIGluMikKK3ZvaWQg
RkVDb21wb3NpdGU6OnNldE9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRpb25UeXBlIHR5cGUpCiB7
Ci0gICAgbV9pbjIgPSBpbjI7CisgICAgbV90eXBlID0gdHlwZTsKIH0KIAotU1ZHQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSBTVkdGRUNvbXBvc2l0ZTo6b3BlcmF0aW9uKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9vcGVyYXRpb247Ci19Ci0KLXZvaWQgU1ZHRkVDb21wb3NpdGU6OnNldE9wZXJhdGlv
bihTVkdDb21wb3NpdGVPcGVyYXRpb25UeXBlIG9wZXIpCi17Ci0gICAgbV9vcGVyYXRpb24gPSBv
cGVyOwotfQotCi1mbG9hdCBTVkdGRUNvbXBvc2l0ZTo6azEoKSBjb25zdAorZmxvYXQgRkVDb21w
b3NpdGU6OmsxKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rMTsKIH0KIAotdm9pZCBTVkdGRUNv
bXBvc2l0ZTo6c2V0SzEoZmxvYXQgazEpCit2b2lkIEZFQ29tcG9zaXRlOjpzZXRLMShmbG9hdCBr
MSkKIHsKICAgICBtX2sxID0gazE7CiB9CiAKLWZsb2F0IFNWR0ZFQ29tcG9zaXRlOjprMigpIGNv
bnN0CitmbG9hdCBGRUNvbXBvc2l0ZTo6azIoKSBjb25zdAogewogICAgIHJldHVybiBtX2syOwog
fQogCi12b2lkIFNWR0ZFQ29tcG9zaXRlOjpzZXRLMihmbG9hdCBrMikKK3ZvaWQgRkVDb21wb3Np
dGU6OnNldEsyKGZsb2F0IGsyKQogewogICAgIG1fazIgPSBrMjsKIH0KIAotZmxvYXQgU1ZHRkVD
b21wb3NpdGU6OmszKCkgY29uc3QKK2Zsb2F0IEZFQ29tcG9zaXRlOjprMygpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fazM7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGU6OnNldEszKGZsb2F0IGsz
KQordm9pZCBGRUNvbXBvc2l0ZTo6c2V0SzMoZmxvYXQgazMpCiB7CiAgICAgbV9rMyA9IGszOwog
fQogCi1mbG9hdCBTVkdGRUNvbXBvc2l0ZTo6azQoKSBjb25zdAorZmxvYXQgRkVDb21wb3NpdGU6
Oms0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rNDsKIH0KIAotdm9pZCBTVkdGRUNvbXBvc2l0
ZTo6c2V0SzQoZmxvYXQgazQpCit2b2lkIEZFQ29tcG9zaXRlOjpzZXRLNChmbG9hdCBrNCkKIHsK
ICAgICBtX2s0ID0gazQ7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFQ29tcG9zaXRlOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAordm9pZCBGRUNvbXBvc2l0ZTo6
YXBwbHkoKQoreworfQorCit2b2lkIEZFQ29tcG9zaXRlOjpkdW1wKCkKIHsKLSAgICB0cyA8PCAi
W3R5cGU9Q09NUE9TSVRFXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbih0cyk7Ci0gICAgaWYgKCFpbjIoKS5pc0VtcHR5KCkpCi0gICAgICAgIHRzIDw8ICIg
W2luMj1cIiIgPDwgaW4yKCkgPDwgIlwiXSI7Ci0gICAgdHMgPDwgIiBbazE9IiA8PCBrMSgpIDw8
ICIgazI9IiA8PCBrMigpIDw8ICIgazM9IiA8PCBrMygpIDw8ICIgazQ9IiA8PCBrNCgpIDw8ICJd
IjsKLSAgICByZXR1cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9u
IDM0OTcyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbXBvc2l0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw1OCArMjMsNTYgQEAKICNkZWZpbmUgU1ZHRkVDb21wb3Np
dGVfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUg
IlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBTVkdDb21w
b3NpdGVPcGVyYXRpb25UeXBlIHsKLSAgICBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9X
TiAgICA9IDAsIAotICAgIFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSICAgICAgID0gMSwK
LSAgICBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gICAgICAgICA9IDIsCi0gICAgU1ZHX0ZF
Q09NUE9TSVRFX09QRVJBVE9SX09VVCAgICAgICAgPSAzLAotICAgIFNWR19GRUNPTVBPU0lURV9P
UEVSQVRPUl9BVE9QICAgICAgID0gNCwKLSAgICBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9S
ICAgICAgICA9IDUsCi0gICAgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2
Ci19OwotCi1jbGFzcyBTVkdGRUNvbXBvc2l0ZSA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3Qgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9zaXRlPiBjcmVhdGUoU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIFN0cmluZyBpbjIoKSBjb25zdDsKLSAgICB2b2lkIHNl
dEluMihjb25zdCBTdHJpbmcmKTsKLQotICAgIFNWR0NvbXBvc2l0ZU9wZXJhdGlvblR5cGUgb3Bl
cmF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRPcGVyYXRpb24oU1ZHQ29tcG9zaXRlT3BlcmF0
aW9uVHlwZSk7Ci0KLSAgICBmbG9hdCBrMSgpIGNvbnN0OwotICAgIHZvaWQgc2V0SzEoZmxvYXQp
OwotCi0gICAgZmxvYXQgazIoKSBjb25zdDsKLSAgICB2b2lkIHNldEsyKGZsb2F0KTsKLQotICAg
IGZsb2F0IGszKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLMyhmbG9hdCk7Ci0KLSAgICBmbG9hdCBr
NCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SzQoZmxvYXQpOwotCi0gICAgdmlydHVhbCBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBM
QVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0
UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRUNvbXBvc2l0
ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgU1ZHQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBt
X29wZXJhdGlvbjsKLSAgICBmbG9hdCBtX2sxOwotICAgIGZsb2F0IG1fazI7Ci0gICAgZmxvYXQg
bV9rMzsKLSAgICBmbG9hdCBtX2s0OwotICAgIFN0cmluZyBtX2luMjsKLX07CisgICAgZW51bSBD
b21wb3NpdGVPcGVyYXRpb25UeXBlIHsKKyAgICAgICAgRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5L
Tk9XTiAgICA9IDAsIAorICAgICAgICBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSICAgICAgID0g
MSwKKyAgICAgICAgRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gICAgICAgICA9IDIsCisgICAgICAg
IEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCAgICAgICAgPSAzLAorICAgICAgICBGRUNPTVBPU0lU
RV9PUEVSQVRPUl9BVE9QICAgICAgID0gNCwKKyAgICAgICAgRkVDT01QT1NJVEVfT1BFUkFUT1Jf
WE9SICAgICAgICA9IDUsCisgICAgICAgIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMg
PSA2CisgICAgfTsKKworICAgIGNsYXNzIEZFQ29tcG9zaXRlIDogcHVibGljIEZpbHRlckVmZmVj
dCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUNvbXBvc2l0ZT4g
Y3JlYXRlKEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IENvbXBvc2l0ZU9wZXJh
dGlvblR5cGUmLAorICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBj
b25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgQ29tcG9zaXRlT3BlcmF0aW9u
VHlwZSBvcGVyYXRpb24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRPcGVyYXRpb24oQ29tcG9z
aXRlT3BlcmF0aW9uVHlwZSk7CisKKyAgICAgICAgZmxvYXQgazEoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRLMShmbG9hdCk7CisKKyAgICAgICAgZmxvYXQgazIoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRLMihmbG9hdCk7CisKKyAgICAgICAgZmxvYXQgazMoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRLMyhmbG9hdCk7CisKKyAgICAgICAgZmxvYXQgazQoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRLNChmbG9hdCk7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHko
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHByaXZhdGU6CisgICAgICAg
IEZFQ29tcG9zaXRlKEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IENvbXBvc2l0
ZU9wZXJhdGlvblR5cGUmLAorICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxv
YXQmLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gbV9pbjsKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjI7CisgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgbV90eXBlOworICAgICAgICBmbG9hdCBtX2sxOwor
ICAgICAgICBmbG9hdCBtX2syOworICAgICAgICBmbG9hdCBtX2szOworICAgICAgICBmbG9hdCBt
X2s0OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb21wb3NpdGVDZy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFQ29tcG9zaXRlQ2cubW0JKHJldmlz
aW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUNvbXBv
c2l0ZUNnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0g
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVk
ZSAiU1ZHRkVDb21wb3NpdGUuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi0jaW1w
b3J0ICJXS0FyaXRobWV0aWNGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZp
bHRlciogU1ZHRkVDb21wb3NpdGU6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkg
Y29uc3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVyKCk7Ci0g
ICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRlclBsYXRmb3JtRGF0YSA9
IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKj4oc3ZnRmlsdGVy
LT5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgQ0lGaWx0ZXIqIGZpbHRlciA9IG5pbDsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBzd2l0Y2ggKG9wZXJhdGlvbigpKSB7Ci0g
ICAgY2FzZSBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTjoKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICBjYXNlIFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSOgotICAgICAgICBm
aWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZU92ZXJDb21wb3NpdGlu
ZyJdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9J
TjoKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lTb3VyY2VJ
bkNvbXBvc2l0aW5nIl07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHX0ZFQ09NUE9TSVRF
X09QRVJBVE9SX09VVDoKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1l
OkAiQ0lTb3VyY2VPdXRDb21wb3NpdGluZyJdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNW
R19GRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIg
ZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZUF0b3BDb21wb3NpdGluZyJdOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1I6Ci0gICAgICAgIC8vRklY
TUU6IEknbSBub3Qgc3VyZSB0aGlzIGlzIHJpZ2h0Li4uCi0gICAgICAgIGZpbHRlciA9IFtDSUZp
bHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJRXhjbHVzaW9uQmxlbmRNb2RlIl07Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUM6Ci0gICAg
ICAgIFtXS0FyaXRobWV0aWNGaWx0ZXIgY2xhc3NdOwotICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0
ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0FyaXRobWV0aWNGaWx0ZXIiXTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAgQ0lJbWFnZSogaW5wdXRJ
bWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW5wdXRJbWFnZSh0aGlzKTsKLSAgICBDSUltYWdl
KiBiYWNrZ3JvdW5kSW1hZ2UgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmltYWdlRm9yTmFtZShpbjIo
KSk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIEZFX1FVQVJU
Wl9DSEVDS19JTlBVVChiYWNrZ3JvdW5kSW1hZ2UpOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5w
dXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpiYWNr
Z3JvdW5kSW1hZ2UgZm9yS2V5OkAiaW5wdXRCYWNrZ3JvdW5kSW1hZ2UiXTsKLSAgICAvL0ZJWE1F
OiB0aGlzIHNlZW1zIHVnbHkKLSAgICBpZiAob3BlcmF0aW9uKCkgPT0gU1ZHX0ZFQ09NUE9TSVRF
X09QRVJBVE9SX0FSSVRITUVUSUMpIHsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEZsb2F0OmsxKCldIGZvcktleTpAImlucHV0SzEiXTsKLSAgICAgICAgW2Zp
bHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmsyKCldIGZvcktleTpAImlu
cHV0SzIiXTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZs
b2F0OmszKCldIGZvcktleTpAImlucHV0SzMiXTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpb
TlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Oms0KCldIGZvcktleTpAImlucHV0SzQiXTsKLSAgICB9
Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94KTsKLSAgICBGRV9RVUFSVFpf
T1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22077</attachid>
            <date>2008-07-03 17:00:31 -0700</date>
            <delta_ts>2008-07-03 18:10:52 -0700</delta_ts>
            <desc>Combined Color, Component, and Composite</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>61441</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDk5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODQgQEAKKzIwMDgtMDctMDMgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3NlZHBlbmd1
aW5ib2JAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzNQor
ICAgICAgICBGaXJzdCBmZXcgY2xhc3MgcmVuYW1lcyBmcm9tIGFuZCByZWZhY3RvcmluZyBpbiBw
cmVwYXJhdGlvbgorICAgICAgICBmb3IgdGhlIGNyb3NzLXBsYXRmb3JtIGZpbHRlcnMgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogc3ZnL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0cmFuc2ZlckZ1bmN0aW9uKToKKyAgICAg
ICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVu
dDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQmxlbmQuY3Bw
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQmxlbmQuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFQ29sb3JNYXRyaXg6OkZFQ29sb3JNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb2xvck1hdHJpeDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6
OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6c2V0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4Ojp2YWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb2xvck1hdHJpeDo6c2V0VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRy
aXg6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OmR1bXApOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAg
KFdlYkNvcmU6Oik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb21wb25l
bnRUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpG
RUNvbXBvbmVudFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpyZWRG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpzZXRSZWRG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpncmVlbkZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEdyZWVu
RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6Ymx1ZUZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEJsdWVG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjphbHBoYUZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEFscGhh
RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6ZHVtcCk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b246OkNvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRl
OjpGRUNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpvcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb21wb3NpdGU6OnNldE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6azEpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnNldEsxKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjprMik6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6c2V0SzIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OmszKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpzZXRLMyk6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbXBvc2l0ZTo6azQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnNldEs0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjphcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUNvbXBvc2l0ZTo6ZHVtcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVDb21wb3NpdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb2xvck1hdHJpeENnLm1tOiBSZW1vdmVkLgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJDZy5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUNvbXBvc2l0ZUNn
Lm1tOiBSZW1vdmVkLgorCiAyMDA4LTA3LTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzNDk3MikKKysrIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDAxLDkgKzMwMDEsNiBAQAogCQlCMjU1OTkzMzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVz
b3VyY2VDbGlwcGVyQ2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI1NTk4OTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291cmNlQ2xpcHBlckNn
LmNwcCAqLzsgfTsKIAkJQjI1NTk5MzUwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmls
dGVyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjU1OTg5OTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLzsgfTsK
IAkJQjI1NTk5MzcwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlTWFza2VyQ2cubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5QjBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbSAqLzsgfTsKLQkJQjI1NTk5Mzkw
RDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29sb3JNYXRyaXhDZy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODlGMEQwMEQ4QjgwMEJCODI1QyAv
KiBTVkdGRUNvbG9yTWF0cml4Q2cubW0gKi87IH07Ci0JCUIyNTU5OTNBMEQwMEQ4QkEwMEJCODI1
QyAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBMDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckNnLm1tICovOyB9OwotCQlCMjU1OTkzQjBEMDBEOEJBMDBCQjgyNUMg
LyogU1ZHRkVDb21wb3NpdGVDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyNTU5OEExMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbXBvc2l0ZUNn
Lm1tICovOyB9OwogCQlCMjU1OTkzQzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGln
aHRpbmdDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tICov
OyB9OwogCQlCMjU1OTkzRDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBD
Zy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5
OEEzMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1tICovOyB9Owog
CQlCMjU1OTkzRTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVGbG9vZENnLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTQwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLzsgfTsKQEAgLTczNTIsOSArNzM0OSw2IEBACiAJCUIy
NTU5ODk3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5OTBEMDBEOEI4MDBCQjgyNUMg
LyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBTVkdSZXNvdXJjZUZpbHRlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMjU1OTg5QjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdSZXNvdXJjZU1h
c2tlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OTg5RjBEMDBEOEI4
MDBCQjgyNUMgLyogU1ZHRkVDb2xvck1hdHJpeENnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFQ29sb3JNYXRyaXhDZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTAwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUIyNTU5OEExMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbXBvc2l0ZUNnLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFQ29tcG9zaXRlQ2cubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBT
VkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1h
cENnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFRGlz
cGxhY2VtZW50TWFwQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEE0
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVGbG9vZENnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTE5NDQsOSArMTE5MzgsNiBAQAogCQlCMjU1OTg5RDBEMDBEOEI4MDBCQjgy
NUMgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUIyNTU5ODlGMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUNvbG9yTWF0cml4Q2cubW0gKi8sCi0J
CQkJQjI1NTk4QTAwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJDZy5t
bSAqLywKLQkJCQlCMjU1OThBMTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVDb21wb3NpdGVDZy5t
bSAqLywKIAkJCQlCMjU1OThBMjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRp
bmdDZy5tbSAqLywKIAkJCQlCMjU1OThBMzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBDZy5tbSAqLywKIAkJCQlCMjU1OThBNDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVG
bG9vZENnLm1tICovLApAQCAtMTY1NjcsMTMgKzE2NTU4LDEwIEBACiAJCQkJQjI1NTk5NzIwRDAw
RDhCQTAwQkI4MjVDIC8qIFNWR0ZFQmxlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5
QzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyNTU5OTc0MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbG9yTWF0cml4LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUIyNTU5OTM5MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbG9y
TWF0cml4Q2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlDQTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5
NzYwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQjI1NTk5M0EwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUNEMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjU1OTk3ODBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb21wb3NpdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQjI1NTk5M0IwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29tcG9zaXRlQ2cubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlEMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTdBMEQwMEQ4QkEwMEJC
ODI1QyAvKiBTVkdGRUNvbnZvbHZlTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5
OTdDMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRURpZmZ1c2VMaWdodGluZy5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3Zn
L0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw5IEBACiAjZGVmaW5l
IEZpbHRlckVmZmVjdF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMp
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
CiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvYykKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV90eXBlKFNWR19G
RUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTikKKyAgICAsIG1fdHlwZShGRUNPTVBPTkVO
VFRSQU5TRkVSX1RZUEVfVU5LTk9XTikKICAgICAsIG1fdGFibGVWYWx1ZXMoU1ZHTnVtYmVyTGlz
dDo6Y3JlYXRlKFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpKQogICAgICwgbV9zbG9wZSgxLjBm
KQogICAgICwgbV9pbnRlcmNlcHQoMC4wZikKQEAgLTYxLDE1ICs2MSwxNSBAQAogICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKQogICAgIHsKICAgICAgICAgaWYgKHZh
bHVlID09ICJpZGVudGl0eSIpCi0gICAgICAgICAgICBzZXRUeXBlQmFzZVZhbHVlKFNWR19GRUNP
TVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkpOworICAgICAgICAgICAgc2V0VHlwZUJhc2VW
YWx1ZShGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkpOwogICAgICAgICBlbHNlIGlm
ICh2YWx1ZSA9PSAidGFibGUiKQotICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShTVkdfRkVD
T01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFKTsKKyAgICAgICAgICAgIHNldFR5cGVCYXNlVmFs
dWUoRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFKTsKICAgICAgICAgZWxzZSBpZiAodmFs
dWUgPT0gImRpc2NyZXRlIikKLSAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoU1ZHX0ZFQ09N
UE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSk7CisgICAgICAgICAgICBzZXRUeXBlQmFzZVZh
bHVlKEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSk7CiAgICAgICAgIGVsc2UgaWYg
KHZhbHVlID09ICJsaW5lYXIiKQotICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShTVkdfRkVD
T01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUik7CisgICAgICAgICAgICBzZXRUeXBlQmFzZVZh
bHVlKEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVIpOwogICAgICAgICBlbHNlIGlmICh2
YWx1ZSA9PSAiZ2FtbWEiKQotICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShTVkdfRkVDT01Q
T05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BKTsKKyAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUo
RkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BKTsKICAgICB9CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpCiAgICAgICAgIHRhYmxlVmFs
dWVzQmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlKTsKQEAgLTg3LDEwICs4NywxMCBAQAogICAgICAg
ICBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6
dHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0CitDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3QK
IHsKLSAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGZ1bmM7Ci0gICAgZnVuYy50eXBl
ID0gKFNWR0NvbXBvbmVudFRyYW5zZmVyVHlwZSkgdHlwZSgpOworICAgIENvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24gZnVuYzsKKyAgICBmdW5jLnR5cGUgPSAoQ29tcG9uZW50VHJhbnNmZXJUeXBl
KSB0eXBlKCk7CiAgICAgZnVuYy5zbG9wZSA9IHNsb3BlKCk7CiAgICAgZnVuYy5pbnRlcmNlcHQg
PSBpbnRlcmNlcHQoKTsKICAgICBmdW5jLmFtcGxpdHVkZSA9IGFtcGxpdHVkZSgpOwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5o
CShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgICAg
Ly8gRGVyaXZlZCBmcm9tOiAnRWxlbWVudCcKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7CiAgICAgICAgIAotICAgICAgICBT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb24oKSBjb25zdDsKKyAg
ICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGludCwgaW50LCBUeXBlLCB0eXBl
KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24g
MzQ5NzIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFn
TmFtZSwgZG9jKQotICAgICwgbV90eXBlKFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTikK
KyAgICAsIG1fdHlwZShGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTikKICAgICAsIG1fdmFsdWVz
KFNWR051bWJlckxpc3Q6OmNyZWF0ZShTVkdOYW1lczo6dmFsdWVzQXR0cikpCiAgICAgLCBtX2Zp
bHRlckVmZmVjdCgwKQogewpAQCAtNTIsMTMgKzUyLDEzIEBACiAgICAgY29uc3QgU3RyaW5nJiB2
YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
dHlwZUF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlID09ICJtYXRyaXgiKQotICAgICAgICAgICAg
c2V0VHlwZUJhc2VWYWx1ZShTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCk7CisgICAgICAg
ICAgICBzZXRUeXBlQmFzZVZhbHVlKEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgpOwogICAgICAg
ICBlbHNlIGlmICh2YWx1ZSA9PSAic2F0dXJhdGUiKQotICAgICAgICAgICAgc2V0VHlwZUJhc2VW
YWx1ZShTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFKTsKKyAgICAgICAgICAgIHNldFR5
cGVCYXNlVmFsdWUoRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFKTsKICAgICAgICAgZWxzZSBp
ZiAodmFsdWUgPT0gImh1ZVJvdGF0ZSIpCi0gICAgICAgICAgICBzZXRUeXBlQmFzZVZhbHVlKFNW
R19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFKTsKKyAgICAgICAgICAgIHNldFR5cGVCYXNl
VmFsdWUoRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSk7CiAgICAgICAgIGVsc2UgaWYgKHZh
bHVlID09ICJsdW1pbmFuY2VUb0FscGhhIikKLSAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUo
U1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBKTsKKyAgICAgICAgICAgIHNl
dFR5cGVCYXNlVmFsdWUoRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEpOwogICAg
IH0KICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluQXR0cikKICAgICAg
ICAgc2V0SW4xQmFzZVZhbHVlKHZhbHVlKTsKQEAgLTY4LDE0ICs2OCwxOSBAQAogICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQogCi1TVkdGRUNvbG9yTWF0cml4KiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJF
ZmZlY3QqIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAg
ICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIpOwotICAg
ICAgICAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIHNldFN0YW5kYXJk
QXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIDA7Cit9CiAKK2Jvb2wgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1
aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICAKKyAgICBpZighaW5wdXQxKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgVmVjdG9yPGZsb2F0PiBfdmFsdWVzOwog
ICAgIFNWR051bWJlckxpc3QqIG51bWJlcnMgPSB2YWx1ZXMoKTsKIApAQCAtODQsMTMgKzg5LDEz
IEBACiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7aSA8IG5yO2krKykKICAgICAgICAgX3Zh
bHVlcy5hcHBlbmQobnVtYmVycy0+Z2V0SXRlbShpLCBlYykpOwogCi0gICAgbV9maWx0ZXJFZmZl
Y3QtPnNldFZhbHVlcyhfdmFsdWVzKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0VHlwZSgoU1ZH
Q29sb3JNYXRyaXhUeXBlKSB0eXBlKCkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVk
RWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGlucHV0MSwgc3RhdGljX2Nhc3Q8Q29sb3JN
YXRyaXhUeXBlPiAodHlwZSgpKSwgX3ZhbHVlcyk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgp
LCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOwogICAgIAotICAgIHJldHVybiBtX2ZpbHRlckVmZmVj
dC5nZXQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotfQorfSAvL25hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmgJKHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBT
VkdGRUNvbG9yTWF0cml4RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR0ZFQ29s
b3JNYXRyaXguaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaCIKIApAQCAtMzgsNyArMzksOCBAQAogICAgICAgICB2aXJ0dWFsIH5TVkdGRUNvbG9yTWF0
cml4RWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGRUNvbG9yTWF0cml4KiBm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBT
VkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0Owor
ICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHRoaXM7IH0KQEAgLTQ4LDcgKzUwLDcgQEAKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBpbnQsIGludCwgVHlwZSwg
dHlwZSkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LCBTVkdOdW1iZXJMaXN0KiwgUmVmUHRyPFNWR051bWJlckxpc3Q+LCBWYWx1
ZXMsIHZhbHVlcykKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRUNvbG9yTWF0cml4PiBt
X2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVDb2xvck1hdHJpeD4gbV9m
aWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24g
MzQ5NzIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDI2ICs1NywzOSBAQAogICAgICAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQog
Ci1TVkdGRUNvbXBvbmVudFRyYW5zZmVyKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJF
ZmZlY3QqIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQot
ICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShm
aWx0ZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCiti
b29sIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBi
dWlsZGVyKQoreworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjEoKSk7CiAgICAgCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluMSgpKTsKLSAg
ICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QuZ2V0KCkpOworICAgIGlmKCFp
bnB1dDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gcmVkOworICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gZ3JlZW47CisgICAgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiBibHVlOworICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24gYWxwaGE7CiAgICAgCiAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuICE9IDA7
IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpmZUZ1bmNSVGFnKSkKLSAgICAgICAgICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRSZWRGdW5j
dGlvbihzdGF0aWNfY2FzdDxTVkdGRUZ1bmNSRWxlbWVudCo+KG4pLT50cmFuc2ZlckZ1bmN0aW9u
KCkpOworICAgICAgICAgICAgcmVkID0gc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jUkVsZW1lbnQqPihu
KS0+dHJhbnNmZXJGdW5jdGlvbigpOwogICAgICAgICBlbHNlIGlmIChuLT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpmZUZ1bmNHVGFnKSkKLSAgICAgICAgICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRHcmVl
bkZ1bmN0aW9uKHN0YXRpY19jYXN0PFNWR0ZFRnVuY0dFbGVtZW50Kj4obiktPnRyYW5zZmVyRnVu
Y3Rpb24oKSk7CisgICAgICAgICAgICBncmVlbiA9IHN0YXRpY19jYXN0PFNWR0ZFRnVuY0dFbGVt
ZW50Kj4obiktPnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICAgICAgZWxzZSBpZiAobi0+aGFzVGFn
TmFtZShTVkdOYW1lczo6ZmVGdW5jQlRhZykpCi0gICAgICAgICAgICBtX2ZpbHRlckVmZmVjdC0+
c2V0Qmx1ZUZ1bmN0aW9uKHN0YXRpY19jYXN0PFNWR0ZFRnVuY0JFbGVtZW50Kj4obiktPnRyYW5z
ZmVyRnVuY3Rpb24oKSk7CisgICAgICAgICAgIGJsdWUgPSBzdGF0aWNfY2FzdDxTVkdGRUZ1bmNC
RWxlbWVudCo+KG4pLT50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgICAgIGVsc2UgaWYgKG4tPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZlRnVuY0FUYWcpKQotICAgICAgICAgICAgbV9maWx0ZXJFZmZl
Y3QtPnNldEFscGhhRnVuY3Rpb24oc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jQUVsZW1lbnQqPihuKS0+
dHJhbnNmZXJGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGFscGhhID0gc3RhdGljX2Nhc3Q8U1ZH
RkVGdW5jQUVsZW1lbnQqPihuKS0+dHJhbnNmZXJGdW5jdGlvbigpOwogICAgIH0KLQotICAgIHJl
dHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKKyAgICAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBhZGRlZEVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShpbnB1dDEsIHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZm
ZWN0LnJlbGVhc2UoKSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkocmV2aXNpb24gMzQ5
NzIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
bmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb21wb25lbnRUcmFuc2Zlci5oIgog
CkBAIC0zNyw3ICszOCw4IEBACiAgICAgICAgIHZpcnR1YWwgflNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXIqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29u
c3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDUsNyArNDcsNyBAQAogICAgIHByaXZhdGU6CiAgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQogCi0gICAgICAgIG11dGFibGUgUmVm
UHRyPFNWR0ZFQ29tcG9uZW50VHJhbnNmZXI+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRh
YmxlIFJlZlB0cjxGRUNvbXBvbmVudFRyYW5zZmVyPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1fX29wZXJhdG9yKFNWR19GRUNPTVBPU0lU
RV9PUEVSQVRPUl9PVkVSKQorICAgICwgbV9fb3BlcmF0b3IoRkVDT01QT1NJVEVfT1BFUkFUT1Jf
T1ZFUikKICAgICAsIG1fazEoMC4wZikKICAgICAsIG1fazIoMC4wZikKICAgICAsIG1fazMoMC4w
ZikKQEAgLTU4LDE3ICs1OCwxNyBAQAogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52
YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikg
ewogICAgICAgICBpZiAodmFsdWUgPT0gIm92ZXIiKQotICAgICAgICAgICAgc2V0X29wZXJhdG9y
QmFzZVZhbHVlKFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSKTsKKyAgICAgICAgICAgIHNl
dF9vcGVyYXRvckJhc2VWYWx1ZShGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSKTsKICAgICAgICAg
ZWxzZSBpZiAodmFsdWUgPT0gImluIikKLSAgICAgICAgICAgIHNldF9vcGVyYXRvckJhc2VWYWx1
ZShTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4pOworICAgICAgICAgICAgc2V0X29wZXJhdG9y
QmFzZVZhbHVlKEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOKTsKICAgICAgICAgZWxzZSBpZiAodmFs
dWUgPT0gIm91dCIpCi0gICAgICAgICAgICBzZXRfb3BlcmF0b3JCYXNlVmFsdWUoU1ZHX0ZFQ09N
UE9TSVRFX09QRVJBVE9SX09VVCk7CisgICAgICAgICAgICBzZXRfb3BlcmF0b3JCYXNlVmFsdWUo
RkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUKTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImF0
b3AiKQotICAgICAgICAgICAgc2V0X29wZXJhdG9yQmFzZVZhbHVlKFNWR19GRUNPTVBPU0lURV9P
UEVSQVRPUl9BVE9QKTsKKyAgICAgICAgICAgIHNldF9vcGVyYXRvckJhc2VWYWx1ZShGRUNPTVBP
U0lURV9PUEVSQVRPUl9BVE9QKTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gInhvciIpCi0g
ICAgICAgICAgICBzZXRfb3BlcmF0b3JCYXNlVmFsdWUoU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9S
X1hPUik7CisgICAgICAgICAgICBzZXRfb3BlcmF0b3JCYXNlVmFsdWUoRkVDT01QT1NJVEVfT1BF
UkFUT1JfWE9SKTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImFyaXRobWV0aWMiKQotICAg
ICAgICAgICAgc2V0X29wZXJhdG9yQmFzZVZhbHVlKFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9B
UklUSE1FVElDKTsKKyAgICAgICAgICAgIHNldF9vcGVyYXRvckJhc2VWYWx1ZShGRUNPTVBPU0lU
RV9PUEVSQVRPUl9BUklUSE1FVElDKTsKICAgICB9CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjppbkF0dHIpCiAgICAgICAgIHNldEluMUJhc2VWYWx1ZSh2YWx1ZSk7CkBA
IC04NiwyMSArODYsMjUgQEAKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVDb21wb3NpdGUq
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBm
aWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6Zmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRUNvbXBvc2l0ZTo6
Y3JlYXRlKGZpbHRlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK2Jvb2wgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBi
dWlsZGVyKQoreworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjEoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBidWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMigpKTsKKyAgICAKKyAgICBpZighaW5wdXQxIHx8ICFpbnB1dDIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0T3BlcmF0aW9uKChT
VkdDb21wb3NpdGVPcGVyYXRpb25UeXBlKSBfb3BlcmF0b3IoKSk7Ci0gICAgbV9maWx0ZXJFZmZl
Y3QtPnNldEluKGluMSgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4yKGluMigpKTsKLSAg
ICBtX2ZpbHRlckVmZmVjdC0+c2V0SzEoazEoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEsy
KGsyKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLMyhrMygpKTsKLSAgICBtX2ZpbHRlckVm
ZmVjdC0+c2V0SzQoazQoKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3Qg
PSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDb21wb3Np
dGVPcGVyYXRpb25UeXBlPiAoX29wZXJhdG9yKCkpLAorICAgICAgICBrMSgpLCBrMigpLCBrMygp
LCBrNCgpKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2Uo
KSk7CiAKLSAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QuZ2V0KCkpOwot
ICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
fQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHJldmlzaW9uIDM0OTcyKQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgU1ZHRkVDb21wb3NpdGVFbGVtZW50X2gKIAogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiU1ZHRkVDb21wb3NpdGUuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApAQCAtMzcsNyArMzgsOCBAQAogICAgICAgICB2
aXJ0dWFsIH5TVkdGRUNvbXBvc2l0ZUVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwg
U1ZHRkVDb21wb3NpdGUqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNl
RmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNTEsNyArNTMsNyBAQAogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBm
bG9hdCwgZmxvYXQsIEszLCBrMykKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIGZsb2F0LCBLNCwgazQpCiAKLSAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVDb21wb3NpdGU+IG1fZmlsdGVyRWZmZWN0OworICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxGRUNvbXBvc2l0ZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUJsZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFQmxlbmQuY3BwCShyZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVCbGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYg
QEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJT
VkdGRUJsZW5kLmgiCi0jaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVCbGVuZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVCbGVuZC5oCShy
ZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVCbGVu
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVk
ZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbG9yTWF0cml4LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29sb3JNYXRyaXguY3BwCShy
ZXZpc2lvbiAzNDk3MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb2xv
ck1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYyICsyNiw0NSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVNWR0ZFQ29sb3JNYXRyaXg6OlNWR0ZFQ29sb3JNYXRyaXgoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAg
LCBtX3R5cGUoU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOKQorRkVDb2xvck1hdHJpeDo6
RkVDb2xvck1hdHJpeChGaWx0ZXJFZmZlY3QqIGluLCBDb2xvck1hdHJpeFR5cGUgdHlwZSwgY29u
c3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1f
aW4oaW4pCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fdmFsdWVzKHZhbHVlcykKIHsKIH0K
IAotUGFzc1JlZlB0cjxTVkdGRUNvbG9yTWF0cml4PiBTVkdGRUNvbG9yTWF0cml4OjpjcmVhdGUo
U1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVDb2xvck1hdHJpeD4gRkVD
b2xvck1hdHJpeDo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIENvbG9yTWF0cml4VHlwZSB0eXBl
LCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdGRUNvbG9yTWF0cml4KGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVD
b2xvck1hdHJpeChpbiwgdHlwZSwgdmFsdWVzKSk7CiB9CiAKLVNWR0NvbG9yTWF0cml4VHlwZSBT
VkdGRUNvbG9yTWF0cml4Ojp0eXBlKCkgY29uc3QKK0NvbG9yTWF0cml4VHlwZSBGRUNvbG9yTWF0
cml4Ojp0eXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90eXBlOwogfQogCi12b2lkIFNWR0ZF
Q29sb3JNYXRyaXg6OnNldFR5cGUoU1ZHQ29sb3JNYXRyaXhUeXBlIHR5cGUpCit2b2lkIEZFQ29s
b3JNYXRyaXg6OnNldFR5cGUoQ29sb3JNYXRyaXhUeXBlIHR5cGUpCiB7CiAgICAgbV90eXBlID0g
dHlwZTsKIH0KIAotY29uc3QgVmVjdG9yPGZsb2F0PiYgU1ZHRkVDb2xvck1hdHJpeDo6dmFsdWVz
KCkgY29uc3QKK2NvbnN0IFZlY3RvcjxmbG9hdD4mIEZFQ29sb3JNYXRyaXg6OnZhbHVlcygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fdmFsdWVzOwogfQogCi12b2lkIFNWR0ZFQ29sb3JNYXRyaXg6
OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+ICZ2YWx1ZXMpCit2b2lkIEZFQ29sb3JNYXRy
aXg6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+ICZ2YWx1ZXMpCiB7CiAgICAgbV92YWx1
ZXMgPSB2YWx1ZXM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBTVkdDb2xvck1hdHJpeFR5cGUgdCkKK3ZvaWQgRkVDb2xvck1hdHJpeDo6YXBwbHko
KQoreworfQorCit2b2lkIEZFQ29sb3JNYXRyaXg6OmR1bXAoKQogewotICAgIHN3aXRjaCAodCkK
LSAgICB7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgotICAg
ICAgICAgICAgdHMgPDwgIlVOS05PV04iOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfRkVDT0xP
Uk1BVFJJWF9UWVBFX01BVFJJWDoKLSAgICAgICAgICAgIHRzIDw8ICJDTVRfTUFUUklYIjsgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURToKLSAgICAg
ICAgICAgIHRzIDw8ICJDTVRfU0FUVVJBVEUiOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfRkVD
T0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURToKLSAgICAgICAgICAgIHRzIDw8ICJIVUUtUk9UQVRF
IjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VU
T0FMUEhBOgotICAgICAgICAgICAgdHMgPDwgIkxVTUlOQU5DRS1UTy1BTFBIQSI7IGJyZWFrOwot
ICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIFNWR0ZFQ29sb3JNYXRyaXg6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgdHMg
PDwgIlt0eXBlPUNPTE9SLU1BVFJJWF0gIjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFs
UmVwcmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICIgW2NvbG9yIG1hdHJpeCB0eXBlPSIgPDwg
dHlwZSgpIDw8ICJdIgotICAgICAgICA8PCAiIFt2YWx1ZXM9IiA8PCB2YWx1ZXMoKSA8PCAiXSI7
Ci0gICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29sb3JNYXRyaXguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29sb3JNYXRyaXguaAkocmV2aXNp
b24gMzQ5NzIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29sb3JNYXRy
aXguaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDEgKzIzLDM5IEBACiAjZGVmaW5lIFNWR0ZFQ29s
b3JNYXRyaXhfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2lu
Y2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQu
aCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBTVkdDb2xvck1hdHJpeFR5cGUgewotICAgIFNW
R19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTiAgICAgICAgICA9IDAsCi0gICAgU1ZHX0ZFQ09M
T1JNQVRSSVhfVFlQRV9NQVRSSVggICAgICAgICAgID0gMSwKLSAgICBTVkdfRkVDT0xPUk1BVFJJ
WF9UWVBFX1NBVFVSQVRFICAgICAgICAgPSAyLAotICAgIFNWR19GRUNPTE9STUFUUklYX1RZUEVf
SFVFUk9UQVRFICAgICAgICA9IDMsCi0gICAgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFO
Q0VUT0FMUEhBID0gNAotfTsKLQotY2xhc3MgU1ZHRkVDb2xvck1hdHJpeCA6IHB1YmxpYyBTVkdG
aWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFQ29sb3JN
YXRyaXg+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgU1ZHQ29sb3JNYXRyaXhU
eXBlIHR5cGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFR5cGUoU1ZHQ29sb3JNYXRyaXhUeXBlKTsK
LQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcygpIGNvbnN0OwotICAgIHZvaWQgc2V0
VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9S
TShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3Qm
IGJib3gpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgU1ZHRkVDb2xvck1hdHJpeChT
VkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgU1ZHQ29sb3JNYXRyaXhUeXBlIG1fdHlwZTsKLSAg
ICBWZWN0b3I8ZmxvYXQ+IG1fdmFsdWVzOwotfTsKKyAgICBlbnVtIENvbG9yTWF0cml4VHlwZSB7
CisgICAgICAgIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOICAgICAgICAgID0gMCwKKyAgICAg
ICAgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCAgICAgICAgICAgPSAxLAorICAgICAgICBGRUNP
TE9STUFUUklYX1RZUEVfU0FUVVJBVEUgICAgICAgICA9IDIsCisgICAgICAgIEZFQ09MT1JNQVRS
SVhfVFlQRV9IVUVST1RBVEUgICAgICAgID0gMywKKyAgICAgICAgRkVDT0xPUk1BVFJJWF9UWVBF
X0xVTUlOQU5DRVRPQUxQSEEgPSA0CisgICAgfTsKKworICAgIGNsYXNzIEZFQ29sb3JNYXRyaXgg
OiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZFQ29sb3JNYXRyaXg+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBDb2xvck1hdHJpeFR5
cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKworICAgICAgICBDb2xvck1hdHJpeFR5cGUgdHlw
ZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFR5cGUoQ29sb3JNYXRyaXhUeXBlKTsKKworICAg
ICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAgICAgICAKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBGRUNvbG9yTWF0cml4KEZpbHRlckVmZmVjdCosIENvbG9yTWF0cml4VHlw
ZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IG1faW47CisgICAgICAgIENvbG9yTWF0cml4VHlwZSBtX3R5cGU7CisgICAgICAgIFZlY3Rvcjxm
bG9hdD4gbV92YWx1ZXM7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb21wb25l
bnRUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTIzICsyMyw3MiBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQog
I2luY2x1ZGUgIlNWR0ZFQ29tcG9uZW50VHJhbnNmZXIuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVDb21wb25lbnRUcmFuc2Zlcjo6U1ZH
RkVDb21wb25lbnRUcmFuc2ZlcihTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZH
RmlsdGVyRWZmZWN0KGZpbHRlcikKK0ZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJh
bnNmZXIoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYg
cmVkRnVuYywgCisgICAgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5j
LCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAg
ICAsIG1faW4oaW4pCisgICAgLCBtX3JlZEZ1bmMocmVkRnVuYykKKyAgICAsIG1fZ3JlZW5GdW5j
KGdyZWVuRnVuYykKKyAgICAsIG1fYmx1ZUZ1bmMoYmx1ZUZ1bmMpCisgICAgLCBtX2FscGhhRnVu
YyhhbHBoYUZ1bmMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVDb21wb25lbnRUcmFuc2Zlcj4g
U1ZHRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIp
CitQYXNzUmVmUHRyPEZFQ29tcG9uZW50VHJhbnNmZXI+IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNy
ZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBy
ZWRGdW5jLCAKKyAgICBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMs
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jLCBjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdGRUNvbXBvbmVudFRyYW5zZmVyKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRkVDb21wb25lbnRUcmFuc2ZlcihpbiwgcmVkRnVuYywgZ3JlZW5GdW5jLCBibHVlRnVuYywg
YWxwaGFGdW5jKSk7CiB9CiAKLVNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gU1ZHRkVDb21w
b25lbnRUcmFuc2Zlcjo6cmVkRnVuY3Rpb24oKSBjb25zdAorQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiBGRUNvbXBvbmVudFRyYW5zZmVyOjpyZWRGdW5jdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcmVkRnVuYzsKIH0KIAotdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjpzZXRSZWRG
dW5jdGlvbihjb25zdCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jKQordm9pZCBG
RUNvbXBvbmVudFRyYW5zZmVyOjpzZXRSZWRGdW5jdGlvbihjb25zdCBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uJiBmdW5jKQogewogICAgIG1fcmVkRnVuYyA9IGZ1bmM7CiB9CiAKLVNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24gU1ZHRkVDb21wb25lbnRUcmFuc2Zlcjo6Z3JlZW5GdW5jdGlv
bigpIGNvbnN0CitDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIEZFQ29tcG9uZW50VHJhbnNmZXI6
OmdyZWVuRnVuY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2dyZWVuRnVuYzsKIH0KIAot
dm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjpzZXRHcmVlbkZ1bmN0aW9uKGNvbnN0IFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMpCit2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6
OnNldEdyZWVuRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYykK
IHsKICAgICBtX2dyZWVuRnVuYyA9IGZ1bmM7CiB9CiAKLVNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gU1ZHRkVDb21wb25lbnRUcmFuc2Zlcjo6Ymx1ZUZ1bmN0aW9uKCkgY29uc3QKK0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24gRkVDb21wb25lbnRUcmFuc2Zlcjo6Ymx1ZUZ1bmN0aW9uKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9ibHVlRnVuYzsKIH0KIAotdm9pZCBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyOjpzZXRCbHVlRnVuY3Rpb24oY29uc3QgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgZnVuYykKK3ZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6c2V0Qmx1ZUZ1bmN0aW9uKGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMpCiB7CiAgICAgbV9ibHVlRnVuYyA9
IGZ1bmM7CiB9CiAKLVNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gU1ZHRkVDb21wb25lbnRU
cmFuc2Zlcjo6YWxwaGFGdW5jdGlvbigpIGNvbnN0CitDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
IEZFQ29tcG9uZW50VHJhbnNmZXI6OmFscGhhRnVuY3Rpb24oKSBjb25zdAogewogICAgIHJldHVy
biBtX2FscGhhRnVuYzsKIH0KIAotdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjpzZXRBbHBo
YUZ1bmN0aW9uKGNvbnN0IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMpCit2b2lk
IEZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEFscGhhRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiYgZnVuYykKIHsKICAgICBtX2FscGhhRnVuYyA9IGZ1bmM7CiB9CiAKLXN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTVkdDb21wb25lbnRU
cmFuc2ZlclR5cGUgdCkKK3ZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoKQoreworfQor
Cit2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmR1bXAoKQogewotICAgIHN3aXRjaCAodCkKLSAg
ICB7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOOgot
ICAgICAgICAgICAgdHMgPDwgIlVOS05PV04iOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfRkVD
T01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZOgotICAgICAgICAgICAgdHMgPDwgIklERU5U
SVRZIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9U
QUJMRToKLSAgICAgICAgICAgIHRzIDw8ICJUQUJMRSI7IGJyZWFrOwotICAgICAgICBjYXNlIFNW
R19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEU6Ci0gICAgICAgICAgICB0cyA8PCAi
RElTQ1JFVEUiOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9U
WVBFX0xJTkVBUjoKLSAgICAgICAgICAgIHRzIDw8ICJMSU5FQVIiOyBicmVhazsKLSAgICAgICAg
Y2FzZSBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BOgotICAgICAgICAgICAgdHMg
PDwgIkdBTU1BIjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24gJmZ1bmMpCi17Ci0gICAgdHMgPDwgIlt0eXBlPSIgPDwgZnVuYy50eXBl
IDw8ICJdIjsKLSAgICBzd2l0Y2ggKGZ1bmMudHlwZSkgewotICAgICAgICBjYXNlIFNWR19GRUNP
TVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTjoKLSAgICAgICAgY2FzZSBTVkdfRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRToKLSAgICAgICAgY2FzZSBTVkdf
RkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFOgotICAgICAgICB7Ci0gICAgICAgICAg
ICB0cyA8PCAiIFt0YWJsZSB2YWx1ZXM9IjsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD46OmNv
bnN0X2l0ZXJhdG9yIGl0cj1mdW5jLnRhYmxlVmFsdWVzLmJlZ2luKCk7Ci0gICAgICAgICAgICBp
ZiAoaXRyICE9IGZ1bmMudGFibGVWYWx1ZXMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICB0cyA8
PCAqaXRyKys7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGl0ciE9ZnVuYy50YWJsZVZhbHVlcy5l
bmQoKTsgaXRyKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiAiIDw8ICppdHI7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdHMgPDwgIl0iOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTVkdfRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjoKLSAgICAgICAgICAgIHRzIDw8ICIgW3Nsb3BlPSIgPDwg
ZnVuYy5zbG9wZSA8PCAiXSIKLSAgICAgICAgICAgICAgIDw8ICIgW2ludGVyY2VwdD0iIDw8IGZ1
bmMuaW50ZXJjZXB0IDw8ICJdIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNW
R19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUE6Ci0gICAgICAgICAgICB0cyA8PCAiIFth
bXBsaXR1ZGU9IiA8PCBmdW5jLmFtcGxpdHVkZSA8PCAiXSIKLSAgICAgICAgICAgICAgIDw8ICIg
W2V4cG9uZW50PSIgPDwgZnVuYy5leHBvbmVudCA8PCAiXSIKLSAgICAgICAgICAgICAgIDw8ICIg
W29mZnNldD0iIDw8IGZ1bmMub2Zmc2V0IDw8ICJdIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAg
dHMgPDwgIlt0eXBlPUNPTVBPTkVOVC1UUkFOU0ZFUl0gIjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICIgW3JlZCBmdW5jPSIgPDwg
cmVkRnVuY3Rpb24oKSA8PCAiXSIKLSAgICAgICAgPDwgIiBbZ3JlZW4gZnVuYz0iIDw8IGdyZWVu
RnVuY3Rpb24oKSA8PCAiXSIKLSAgICAgICAgPDwgIiBbYmx1ZSBmdW5jPSIgPDwgYmx1ZUZ1bmN0
aW9uKCkgPDwgIl0iCi0gICAgICAgIDw8ICIgW2FscGhhIGZ1bmM9IiA8PCBhbHBoYUZ1bmN0aW9u
KCkgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyLmgJKHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDg3
ICsyMyw3NCBAQAogI2RlZmluZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyX2gKIAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
ICNpbmNsdWRlICJTVkdGRURpc3BsYWNlbWVudE1hcC5oIgogCi0jaWYgUExBVEZPUk0oQ0kpCi0j
aWZkZWYgX19PQkpDX18KLUBjbGFzcyBDSUltYWdlOwotQGNsYXNzIENJRmlsdGVyOwotI2Vsc2UK
LWNsYXNzIENJSW1hZ2U7Ci1jbGFzcyBDSUZpbHRlcjsKLSNlbmRpZgotI2VuZGlmCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU1ZHQ29tcG9u
ZW50VHJhbnNmZXJUeXBlIHsKLSAgICBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05P
V04gID0gMCwKLSAgICBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMSwK
LSAgICBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFICAgID0gMiwKLSAgICBTVkdf
RkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFID0gMywKLSAgICBTVkdfRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiAgID0gNCwKLSAgICBTVkdfRkVDT01QT05FTlRUUkFOU0ZF
Ul9UWVBFX0dBTU1BICAgID0gNQotfTsKLQotc3RydWN0IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gewotICAgIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24oKQotICAgICAgICA6IHR5
cGUoU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOKQotICAgICAgICAsIHNsb3Bl
KDAuMGYpCi0gICAgICAgICwgaW50ZXJjZXB0KDAuMGYpCi0gICAgICAgICwgYW1wbGl0dWRlKDAu
MGYpCi0gICAgICAgICwgZXhwb25lbnQoMC4wZikKLSAgICAgICAgLCBvZmZzZXQoMC4wZikKLSAg
ICB7Ci0gICAgfQotCi0gICAgU1ZHQ29tcG9uZW50VHJhbnNmZXJUeXBlIHR5cGU7Ci0KLSAgICBm
bG9hdCBzbG9wZTsKLSAgICBmbG9hdCBpbnRlcmNlcHQ7Ci0gICAgZmxvYXQgYW1wbGl0dWRlOwot
ICAgIGZsb2F0IGV4cG9uZW50OwotICAgIGZsb2F0IG9mZnNldDsKLQotICAgIFZlY3RvcjxmbG9h
dD4gdGFibGVWYWx1ZXM7Ci19OwotCi1jbGFzcyBTVkdGRUNvbXBvbmVudFRyYW5zZmVyIDogcHVi
bGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
RkVDb21wb25lbnRUcmFuc2Zlcj4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZEZ1bmN0aW9uKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRSZWRGdW5jdGlvbihjb25zdCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7Ci0K
LSAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGdyZWVuRnVuY3Rpb24oKSBjb25zdDsK
LSAgICB2b2lkIHNldEdyZWVuRnVuY3Rpb24oY29uc3QgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYpOwotCi0gICAgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBibHVlRnVuY3Rpb24o
KSBjb25zdDsKLSAgICB2b2lkIHNldEJsdWVGdW5jdGlvbihjb25zdCBTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uJik7Ci0KLSAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGFscGhh
RnVuY3Rpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldEFscGhhRnVuY3Rpb24oY29uc3QgU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiYpOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJ
KQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJv
eCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgQ0lGaWx0ZXIqIGdldEZ1bmN0aW9uRmlsdGVyKFNW
R0NoYW5uZWxTZWxlY3RvclR5cGUsIENJSW1hZ2UqIGlucHV0SW1hZ2UpIGNvbnN0OwotI2VuZGlm
Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVDb21wb25lbnRUcmFuc2ZlcihTVkdSZXNvdXJjZUZpbHRl
ciopOwotCi0gICAgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBtX3JlZEZ1bmM7Ci0gICAg
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBtX2dyZWVuRnVuYzsKLSAgICBTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIG1fYmx1ZUZ1bmM7Ci0gICAgU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiBtX2FscGhhRnVuYzsKLX07CisgICAgZW51bSBDb21wb25lbnRUcmFuc2ZlclR5cGUg
eworICAgICAgICBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiAgPSAwLAorICAgICAg
ICBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxLAorICAgICAgICBGRUNPTVBP
TkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUgICAgPSAyLAorICAgICAgICBGRUNPTVBPTkVOVFRSQU5T
RkVSX1RZUEVfRElTQ1JFVEUgPSAzLAorICAgICAgICBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVf
TElORUFSICAgPSA0LAorICAgICAgICBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgICAg
PSA1CisgICAgfTsKKworICAgIHN0cnVjdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHsKKyAg
ICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbigpCisgICAgICAgICAgICA6IHR5cGUoRkVD
T01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04pCisgICAgICAgICAgICAsIHNsb3BlKDAuMGYp
CisgICAgICAgICAgICAsIGludGVyY2VwdCgwLjBmKQorICAgICAgICAgICAgLCBhbXBsaXR1ZGUo
MC4wZikKKyAgICAgICAgICAgICwgZXhwb25lbnQoMC4wZikKKyAgICAgICAgICAgICwgb2Zmc2V0
KDAuMGYpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
VHlwZSB0eXBlOworCisgICAgICAgIGZsb2F0IHNsb3BlOworICAgICAgICBmbG9hdCBpbnRlcmNl
cHQ7CisgICAgICAgIGZsb2F0IGFtcGxpdHVkZTsKKyAgICAgICAgZmxvYXQgZXhwb25lbnQ7Cisg
ICAgICAgIGZsb2F0IG9mZnNldDsKKworICAgICAgICBWZWN0b3I8ZmxvYXQ+IHRhYmxlVmFsdWVz
OworICAgIH07CisKKyAgICBjbGFzcyBGRUNvbXBvbmVudFRyYW5zZmVyIDogcHVibGljIEZpbHRl
ckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUNvbXBv
bmVudFRyYW5zZmVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiYsIAorICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiwgY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYpOworCisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
cmVkRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRSZWRGdW5jdGlvbihjb25zdCBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7CisKKyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiBncmVlbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0R3JlZW5GdW5j
dGlvbihjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7CisKKyAgICAgICAgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiBibHVlRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRCbHVlRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYpOworCisgICAg
ICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gYWxwaGFGdW5jdGlvbigpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldEFscGhhRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biYpOworICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkdW1wKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRUNvbXBvbmVudFRy
YW5zZmVyKEZpbHRlckVmZmVjdCosY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYsIGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mLAorICAgICAgICAgICAgICAgIGNvbnN0IENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiBtX3JlZEZ1bmM7CisgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gbV9ncmVlbkZ1bmM7CisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
bV9ibHVlRnVuYzsKKyAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBtX2FscGhhRnVu
YzsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiAzNDk3
MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb21wb3NpdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw5MyArMjMsODQgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUNvbXBvc2l0ZS5oIgotI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUNvbXBvc2l0ZTo6
U1ZHRkVDb21wb3NpdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRl
ckVmZmVjdChmaWx0ZXIpCi0gICAgLCBtX29wZXJhdGlvbihTVkdfRkVDT01QT1NJVEVfT1BFUkFU
T1JfVU5LTk9XTikKLSAgICAsIG1fazEoMC4wZikKLSAgICAsIG1fazIoMC4wZikKLSAgICAsIG1f
azMoMC4wZikKLSAgICAsIG1fazQoMC4wZikKK0ZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0
ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9u
VHlwZSYgdHlwZSwKKyAgICBjb25zdCBmbG9hdCYgazEsIGNvbnN0IGZsb2F0JiBrMiwgY29uc3Qg
ZmxvYXQmIGszLCBjb25zdCBmbG9hdCYgazQpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwg
bV9pbihpbikKKyAgICAsIG1faW4yKGluMikKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9r
MShrMSkKKyAgICAsIG1fazIoazIpCisgICAgLCBtX2szKGszKQorICAgICwgbV9rNChrNCkKIHsK
IH0KIAotUGFzc1JlZlB0cjxTVkdGRUNvbXBvc2l0ZT4gU1ZHRkVDb21wb3NpdGU6OmNyZWF0ZShT
VkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1JlZlB0cjxGRUNvbXBvc2l0ZT4gRkVDb21w
b3NpdGU6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3Qg
Q29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwKKyAgICBjb25zdCBmbG9hdCYgazEsIGNvbnN0
IGZsb2F0JiBrMiwgY29uc3QgZmxvYXQmIGszLCBjb25zdCBmbG9hdCYgazQpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTVkdGRUNvbXBvc2l0ZShmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZFQ29tcG9zaXRlKGluLCBpbjIsIHR5cGUsIGsxLCBrMiwgazMsIGs0KSk7CiB9
CiAKLVN0cmluZyBTVkdGRUNvbXBvc2l0ZTo6aW4yKCkgY29uc3QKK0NvbXBvc2l0ZU9wZXJhdGlv
blR5cGUgRkVDb21wb3NpdGU6Om9wZXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW4y
OworICAgIHJldHVybiBtX3R5cGU7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGU6OnNldEluMihj
b25zdCBTdHJpbmcmIGluMikKK3ZvaWQgRkVDb21wb3NpdGU6OnNldE9wZXJhdGlvbihDb21wb3Np
dGVPcGVyYXRpb25UeXBlIHR5cGUpCiB7Ci0gICAgbV9pbjIgPSBpbjI7CisgICAgbV90eXBlID0g
dHlwZTsKIH0KIAotU1ZHQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBTVkdGRUNvbXBvc2l0ZTo6b3Bl
cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9vcGVyYXRpb247Ci19Ci0KLXZvaWQgU1ZH
RkVDb21wb3NpdGU6OnNldE9wZXJhdGlvbihTVkdDb21wb3NpdGVPcGVyYXRpb25UeXBlIG9wZXIp
Ci17Ci0gICAgbV9vcGVyYXRpb24gPSBvcGVyOwotfQotCi1mbG9hdCBTVkdGRUNvbXBvc2l0ZTo6
azEoKSBjb25zdAorZmxvYXQgRkVDb21wb3NpdGU6OmsxKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9rMTsKIH0KIAotdm9pZCBTVkdGRUNvbXBvc2l0ZTo6c2V0SzEoZmxvYXQgazEpCit2b2lkIEZF
Q29tcG9zaXRlOjpzZXRLMShmbG9hdCBrMSkKIHsKICAgICBtX2sxID0gazE7CiB9CiAKLWZsb2F0
IFNWR0ZFQ29tcG9zaXRlOjprMigpIGNvbnN0CitmbG9hdCBGRUNvbXBvc2l0ZTo6azIoKSBjb25z
dAogewogICAgIHJldHVybiBtX2syOwogfQogCi12b2lkIFNWR0ZFQ29tcG9zaXRlOjpzZXRLMihm
bG9hdCBrMikKK3ZvaWQgRkVDb21wb3NpdGU6OnNldEsyKGZsb2F0IGsyKQogewogICAgIG1fazIg
PSBrMjsKIH0KIAotZmxvYXQgU1ZHRkVDb21wb3NpdGU6OmszKCkgY29uc3QKK2Zsb2F0IEZFQ29t
cG9zaXRlOjprMygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fazM7CiB9CiAKLXZvaWQgU1ZHRkVD
b21wb3NpdGU6OnNldEszKGZsb2F0IGszKQordm9pZCBGRUNvbXBvc2l0ZTo6c2V0SzMoZmxvYXQg
azMpCiB7CiAgICAgbV9rMyA9IGszOwogfQogCi1mbG9hdCBTVkdGRUNvbXBvc2l0ZTo6azQoKSBj
b25zdAorZmxvYXQgRkVDb21wb3NpdGU6Oms0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rNDsK
IH0KIAotdm9pZCBTVkdGRUNvbXBvc2l0ZTo6c2V0SzQoZmxvYXQgazQpCit2b2lkIEZFQ29tcG9z
aXRlOjpzZXRLNChmbG9hdCBrNCkKIHsKICAgICBtX2s0ID0gazQ7CiB9CiAKLVRleHRTdHJlYW0m
IFNWR0ZFQ29tcG9zaXRlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBj
b25zdAordm9pZCBGRUNvbXBvc2l0ZTo6YXBwbHkoKQoreworfQorCit2b2lkIEZFQ29tcG9zaXRl
OjpkdW1wKCkKIHsKLSAgICB0cyA8PCAiW3R5cGU9Q09NUE9TSVRFXSAiOwotICAgIFNWR0ZpbHRl
ckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgaWYgKCFpbjIoKS5pc0Vt
cHR5KCkpCi0gICAgICAgIHRzIDw8ICIgW2luMj1cIiIgPDwgaW4yKCkgPDwgIlwiXSI7Ci0gICAg
dHMgPDwgIiBbazE9IiA8PCBrMSgpIDw8ICIgazI9IiA8PCBrMigpIDw8ICIgazM9IiA8PCBrMygp
IDw8ICIgazQ9IiA8PCBrNCgpIDw8ICJdIjsKLSAgICByZXR1cm4gdHM7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVD
b21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbXBvc2l0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw1OCArMjMsNTYg
QEAKICNkZWZpbmUgU1ZHRkVDb21wb3NpdGVfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotZW51bSBTVkdDb21wb3NpdGVPcGVyYXRpb25UeXBlIHsKLSAgICBTVkdfRkVD
T01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTiAgICA9IDAsIAotICAgIFNWR19GRUNPTVBPU0lURV9P
UEVSQVRPUl9PVkVSICAgICAgID0gMSwKLSAgICBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4g
ICAgICAgICA9IDIsCi0gICAgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCAgICAgICAgPSAz
LAotICAgIFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QICAgICAgID0gNCwKLSAgICBTVkdf
RkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SICAgICAgICA9IDUsCi0gICAgU1ZHX0ZFQ09NUE9TSVRF
X09QRVJBVE9SX0FSSVRITUVUSUMgPSA2Ci19OwotCi1jbGFzcyBTVkdGRUNvbXBvc2l0ZSA6IHB1
YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0ZFQ29tcG9zaXRlPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIFN0cmluZyBp
bjIoKSBjb25zdDsKLSAgICB2b2lkIHNldEluMihjb25zdCBTdHJpbmcmKTsKLQotICAgIFNWR0Nv
bXBvc2l0ZU9wZXJhdGlvblR5cGUgb3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRPcGVy
YXRpb24oU1ZHQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSk7Ci0KLSAgICBmbG9hdCBrMSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0SzEoZmxvYXQpOwotCi0gICAgZmxvYXQgazIoKSBjb25zdDsKLSAgICB2
b2lkIHNldEsyKGZsb2F0KTsKLQotICAgIGZsb2F0IGszKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRL
MyhmbG9hdCk7Ci0KLSAgICBmbG9hdCBrNCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SzQoZmxvYXQp
OwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIq
IGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJp
dmF0ZToKLSAgICBTVkdGRUNvbXBvc2l0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgU1ZH
Q29tcG9zaXRlT3BlcmF0aW9uVHlwZSBtX29wZXJhdGlvbjsKLSAgICBmbG9hdCBtX2sxOwotICAg
IGZsb2F0IG1fazI7Ci0gICAgZmxvYXQgbV9rMzsKLSAgICBmbG9hdCBtX2s0OwotICAgIFN0cmlu
ZyBtX2luMjsKLX07CisgICAgZW51bSBDb21wb3NpdGVPcGVyYXRpb25UeXBlIHsKKyAgICAgICAg
RkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTiAgICA9IDAsIAorICAgICAgICBGRUNPTVBPU0lU
RV9PUEVSQVRPUl9PVkVSICAgICAgID0gMSwKKyAgICAgICAgRkVDT01QT1NJVEVfT1BFUkFUT1Jf
SU4gICAgICAgICA9IDIsCisgICAgICAgIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCAgICAgICAg
PSAzLAorICAgICAgICBGRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QICAgICAgID0gNCwKKyAgICAg
ICAgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SICAgICAgICA9IDUsCisgICAgICAgIEZFQ09NUE9T
SVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2CisgICAgfTsKKworICAgIGNsYXNzIEZFQ29tcG9z
aXRlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGRUNvbXBvc2l0ZT4gY3JlYXRlKEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVj
dCosIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmLAorICAgICAgICAgICAgICAgIGNvbnN0
IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CisKKyAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24oKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSk7CisKKyAgICAgICAgZmxv
YXQgazEoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLMShmbG9hdCk7CisKKyAgICAgICAgZmxv
YXQgazIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLMihmbG9hdCk7CisKKyAgICAgICAgZmxv
YXQgazMoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLMyhmbG9hdCk7CisKKyAgICAgICAgZmxv
YXQgazQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLNChmbG9hdCk7CisgICAgICAgIAorICAg
ICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsK
KworICAgIHByaXZhdGU6CisgICAgICAgIEZFQ29tcG9zaXRlKEZpbHRlckVmZmVjdCosIEZpbHRl
ckVmZmVjdCosIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmLAorICAgICAgICAgICAgICAg
IGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7
CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gbV9pbjI7CisgICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgbV90eXBl
OworICAgICAgICBmbG9hdCBtX2sxOworICAgICAgICBmbG9hdCBtX2syOworICAgICAgICBmbG9h
dCBtX2szOworICAgICAgICBmbG9hdCBtX2s0OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUNvbG9y
TWF0cml4Q2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9TVkdGRUNvbG9yTWF0cml4Q2cubW0JKHJldmlzaW9uIDM0OTcyKQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUNvbG9yTWF0cml4Q2cubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEsMTExICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVDb2xvck1hdHJpeC5oIgot
I2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCi0KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNkZWZpbmUgQ01WYWx1ZXNDaGVjayhleHBlY3Rl
ZCwgdHlwZSkgXAotICAgIGlmICh2YWx1ZXMoKS5zaXplKCkgIT0gZXhwZWN0ZWQpIHsgXAotICAg
ICAgICBOU0xvZyhAIkVycm9yLCBpbmNvcnJlY3QgbnVtYmVyIG9mIHZhbHVlcyBpbiBDb2xvck1h
dHJpeCBmb3IgdHlwZSBcIiVzXCIsIGV4cGVjdGVkOiAlaSBhY3R1YWw6ICVpLCBpZ25vcmluZyBm
aWx0ZXIuICBWYWx1ZXM6IiwgdHlwZSwgZXhwZWN0ZWQsIHZhbHVlcygpLnNpemUoKSk7IFwKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCB4PTA7IHggPCB2YWx1ZXMoKS5zaXplKCk7IHgrKykgZnByaW50
ZihzdGRlcnIsICIgJWYiLCB2YWx1ZXMoKVt4XSk7IFwKLSAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJcbiIpOyBcCi0gICAgICAgIHJldHVybiBuaWw7IFwKLSAgICB9Ci0KLUNJRmlsdGVyKiBTVkdG
RUNvbG9yTWF0cml4OjpnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0Ci17
Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIFNWR1Jl
c291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0aWNf
Y2FzdDxTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxhdGZv
cm1EYXRhKCkpOwotICAgIENJRmlsdGVyKiBmaWx0ZXIgPSBuaWw7Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBTVkdfRkVD
T0xPUk1BVFJJWF9UWVBFX1VOS05PV046Ci0gICAgICAgIHJldHVybiBuaWw7ICAgICAKLSAgICBj
YXNlIFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYOgotICAgIHsKLSAgICAgICAgQ01WYWx1
ZXNDaGVjaygyMCwgIm1hdHJpeCIpOwotICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVy
V2l0aE5hbWU6QCJDSUNvbG9yTWF0cml4Il07Ci0gICAgICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNd
OwotICAgICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ID0gdmFsdWVzKCk7Ci0gICAgICAgIFtm
aWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOnZbMF0gWTp2WzFdIFo6dlsyXSBX
OnZbM11dIGZvcktleTpAImlucHV0UlZlY3RvciJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVl
OltDSVZlY3RvciB2ZWN0b3JXaXRoWDp2WzVdIFk6dls2XSBaOnZbN10gVzp2WzhdXSBmb3JLZXk6
QCJpbnB1dEdWZWN0b3IiXTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVj
dG9yV2l0aFg6dlsxMF0gWTp2WzExXSBaOnZbMTJdIFc6dlsxM11dIGZvcktleTpAImlucHV0QlZl
Y3RvciJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDp2
WzE1XSBZOnZbMTZdIFo6dlsxN10gVzp2WzE4XV0gZm9yS2V5OkAiaW5wdXRBVmVjdG9yIl07Ci0g
ICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOnZbNF0gWTp2Wzld
IFo6dlsxNF0gVzp2WzE5XV0gZm9yS2V5OkAiaW5wdXRCaWFzVmVjdG9yIl07Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6Ci0g
ICAgewotICAgICAgICBDTVZhbHVlc0NoZWNrKDEsICJzYXR1cmF0ZSIpOwotICAgICAgICBmaWx0
ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9yQ29udHJvbHMiXTsKLSAgICAg
ICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAgICAgIGZsb2F0IHNhdHVyYXRpb24gPSB2YWx1
ZXMoKVswXTsKLSAgICAgICAgaWYgKChzYXR1cmF0aW9uIDwgMC4wKSB8fCAoc2F0dXJhdGlvbiA+
IDMuMCkpCi0gICAgICAgICAgICBOU0xvZyhAIldBUk5JTkc6IFNhdHVyYXRpb24gYWRqdXN0bWVu
dDogJWYgb3V0c2lkZSBzdXBwb3J0ZWQgcmFuZ2UuIik7Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFs
dWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpzYXR1cmF0aW9uXSBmb3JLZXk6QCJpbnB1dFNh
dHVyYXRpb24iXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU1ZHX0ZFQ09MT1JN
QVRSSVhfVFlQRV9IVUVST1RBVEU6Ci0gICAgewotICAgICAgICBDTVZhbHVlc0NoZWNrKDEsICJo
dWVSb3RhdGUiKTsKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAi
Q0lIdWVBZGp1c3QiXTsKLSAgICAgICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAgICAgIGZs
b2F0IHJhZGlhbnMgPSBkZWcycmFkKHZhbHVlcygpWzBdKTsKLSAgICAgICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnJhZGlhbnNdIGZvcktleTpAImlucHV0QW5n
bGUiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU1ZHX0ZFQ09MT1JNQVRSSVhf
VFlQRV9MVU1JTkFOQ0VUT0FMUEhBOgotICAgIHsKLSAgICAgICAgQ01WYWx1ZXNDaGVjaygwLCAi
bHVtaW5hbmNlVG9BbHBoYSIpOwotICAgICAgICAvLyBGSVhNRTogSSBiZXQgdGhlcmUgaXMgYW4g
ZWFzeSBmaWx0ZXIgdG8gZG8gdGhpcy4KLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRl
cldpdGhOYW1lOkAiQ0lDb2xvck1hdHJpeCJdOwotICAgICAgICBbZmlsdGVyIHNldERlZmF1bHRz
XTsKLSAgICAgICAgQ0dGbG9hdCB6ZXJvWzRdID0gezAsIDAsIDAsIDB9OwotICAgICAgICBDR0Zs
b2F0IGFscGhhWzRdID0gezAuMjEyNWYsIDAuNzE1NGYsIDAuMDcyMWYsIDB9OwotICAgICAgICBb
ZmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6NF0g
Zm9yS2V5OkAiaW5wdXRSVmVjdG9yIl07Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W0NJVmVj
dG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEdWZWN0b3Ii
XTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6
ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0QlZlY3RvciJdOwotICAgICAgICBbZmlsdGVyIHNl
dFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOmFscGhhIGNvdW50OjRdIGZvcktleTpA
ImlucHV0QVZlY3RvciJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0
b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRCaWFzVmVjdG9yIl07Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgIExPR19FUlJPUigiVW5oYW5k
bGVkIENvbG9yTWF0cml4IHR5cGU6ICVpIiwgdHlwZSgpKTsKLSAgICByZXR1cm4gbmlsOwotICAg
IH0KLSAgICBDSUltYWdlICppbnB1dEltYWdlID0gZmlsdGVyUGxhdGZvcm1EYXRhLT5pbnB1dElt
YWdlKHRoaXMpOwotICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dEltYWdlKTsKLSAgICBb
ZmlsdGVyIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJbWFnZSJdOwotCi0gICAg
RkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9S
RVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckNnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckNnLm1tCShyZXZpc2lvbiAzNDk3MikKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckNnLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2NyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZF
Q29tcG9uZW50VHJhbnNmZXIuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi0jaW1w
b3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgiCi0jaW1wb3J0ICJXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIuaCIKLSNpbXBvcnQgIldLVGFibGVUcmFuc2ZlckZpbHRlci5oIgotI2ltcG9ydCAi
V0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgiCi0jaW1wb3J0ICJXS0xpbmVhclRyYW5zZmVyRmls
dGVyLmgiCi0jaW1wb3J0ICJXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgQ0lJbWFnZSogZ2VuSW1hZ2VGcm9tVGFibGUoY29uc3QgVmVjdG9y
PGZsb2F0PiYgdGFibGUpCi17Ci0gICAgaW50IGxlbmd0aCA9IHRhYmxlLnNpemUoKTsKLSAgICBp
bnQgbkJ5dGVzID0gbGVuZ3RoICogNCAqIHNpemVvZihmbG9hdCk7Ci0gICAgZmxvYXQqIHRhYmxl
U3RvcmUgPSAoZmxvYXQgKikgbWFsbG9jKG5CeXRlcyk7Ci0gICAgTlNEYXRhKiBiaXRtYXBEYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OnRhYmxlU3RvcmUgbGVuZ3RoOm5CeXRlc107
Ci0gICAgZm9yIChWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRhYmxlLmJlZ2lu
KCk7IGl0ICE9IHRhYmxlLmVuZCgpOyBpdCsrKSB7Ci0gICAgICAgIGNvbnN0IGZsb2F0IHZhbHVl
ID0gKml0OwotICAgICAgICAqdGFibGVTdG9yZSsrID0gdmFsdWU7Ci0gICAgICAgICp0YWJsZVN0
b3JlKysgPSB2YWx1ZTsKLSAgICAgICAgKnRhYmxlU3RvcmUrKyA9IHZhbHVlOwotICAgICAgICAq
dGFibGVTdG9yZSsrID0gdmFsdWU7Ci0gICAgfQotICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdp
dGhCaXRtYXBEYXRhOmJpdG1hcERhdGEgYnl0ZXNQZXJSb3c6bkJ5dGVzIHNpemU6Q0dTaXplTWFr
ZShsZW5ndGgsIDEpIGZvcm1hdDprQ0lGb3JtYXRSR0JBZiBjb2xvclNwYWNlOm5pbF07Ci19Ci0K
LXN0YXRpYyB2b2lkIHNldFBhcmFtZXRlcnNGb3JDb21wb25lbnRGdW5jKENJRmlsdGVyKiBmaWx0
ZXIsIGNvbnN0IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMsIENJVmVjdG9yKiBj
aGFubmVsU2VsZWN0b3IpCi17Ci0gICAgc3dpdGNoIChmdW5jLnR5cGUpIHsKLSAgICBjYXNlIFNW
R19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTjoKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRToKLSAgICAgICAgW2ZpbHRl
ciBzZXRWYWx1ZTpnZW5JbWFnZUZyb21UYWJsZShmdW5jLnRhYmxlVmFsdWVzKSBmb3JLZXk6QCJp
bnB1dFRhYmxlIl07Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2hhbm5lbFNlbGVjdG9yIGZv
cktleTpAImlucHV0U2VsZWN0b3IiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfRkVD
T01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFOgotICAgICAgICBbZmlsdGVyIHNldFZhbHVl
OmdlbkltYWdlRnJvbVRhYmxlKGZ1bmMudGFibGVWYWx1ZXMpIGZvcktleTpAImlucHV0VGFibGUi
XTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpjaGFubmVsU2VsZWN0b3IgZm9yS2V5OkAiaW5w
dXRTZWxlY3RvciJdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19GRUNPTVBPTkVOVFRS
QU5TRkVSX1RZUEVfTElORUFSOgotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoRmxvYXQ6ZnVuYy5zbG9wZV0gZm9yS2V5OkAiaW5wdXRTbG9wZSJdOwotICAgICAg
ICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5pbnRlcmNl
cHRdIGZvcktleTpAImlucHV0SW50ZXJjZXB0Il07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
U1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQToKLSAgICAgICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuYW1wbGl0dWRlXSBmb3JLZXk6QCJp
bnB1dEFtcGxpdHVkZSJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1i
ZXJXaXRoRmxvYXQ6ZnVuYy5leHBvbmVudF0gZm9yS2V5OkAiaW5wdXRFeHBvbmVudCJdOwotICAg
ICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5vZmZz
ZXRdIGZvcktleTpAImlucHV0T2Zmc2V0Il07Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIC8vIGlkZW50aXR5IGhhcyBubyBhcmdzCi0gICAgICAgIGJyZWFrOwotICAgIH0K
LX0KLQotc3RhdGljIENJRmlsdGVyKiBmaWx0ZXJGb3JDb21wb25lbnRGdW5jKGNvbnN0IFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMpCi17Ci0gICAgQ0lGaWx0ZXIgKmZpbHRlcjsK
LSAgICBzd2l0Y2ggKGZ1bmMudHlwZSkgewotICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNG
RVJfVFlQRV9VTktOT1dOOgotICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9J
REVOVElUWToKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tJ
ZGVudGl0eVRyYW5zZmVyIl07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHX0ZFQ09NUE9O
RU5UVFJBTlNGRVJfVFlQRV9UQUJMRToKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRl
cldpdGhOYW1lOkAiV0tUYWJsZVRyYW5zZmVyRmlsdGVyIl07Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURToKLSAgICAgICAgZmls
dGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVy
Il07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQ
RV9MSU5FQVI6Ci0gICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldL
TGluZWFyVHJhbnNmZXIiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0dBTU1BOgotICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVy
V2l0aE5hbWU6QCJXS0dhbW1hVHJhbnNmZXIiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgTlNMb2coQCJXQVJOSU5HOiBVbmtub3duIGZ1bmN0aW9uIHR5cGUgZm9yIGZl
Q29tcG9uZW50VHJhbnNmZXIiKTsKLSAgICAgICAgLy9hbmQgdG8gcHJldmVudCB0aGUgZW50aXJl
IHN2ZyBmcm9tIGZhaWxpbmcgYXMgYSByZXN1bHQKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiV0tJZGVudGl0eVRyYW5zZmVyIl07Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICByZXR1cm4gZmlsdGVyOwotfQotCi1zdGF0aWMgQ0lGaWx0ZXIqIGdldEZpbHRl
ckZvckZ1bmMoY29uc3QgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYywgQ0lJbWFn
ZSogaW5wdXRJbWFnZSwgQ0lWZWN0b3IqIGNoYW5uZWxTZWxlY3RvcikKLXsKLSAgICBDSUZpbHRl
ciogZmlsdGVyID0gZmlsdGVyRm9yQ29tcG9uZW50RnVuYyhmdW5jKTsKLSAgICBbZmlsdGVyIHNl
dERlZmF1bHRzXTsKLQotICAgIHNldFBhcmFtZXRlcnNGb3JDb21wb25lbnRGdW5jKGZpbHRlciwg
ZnVuYywgY2hhbm5lbFNlbGVjdG9yKTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0SW1hZ2Ug
Zm9yS2V5OkAiaW5wdXRJbWFnZSJdOwotICAgIHJldHVybiBmaWx0ZXI7Ci19Ci0KLUNJRmlsdGVy
KiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyOjpnZXRGdW5jdGlvbkZpbHRlcihTVkdDaGFubmVsU2Vs
ZWN0b3JUeXBlIGNoYW5uZWwsIENJSW1hZ2UqIGlucHV0SW1hZ2UpIGNvbnN0Ci17Ci0gICAgc3dp
dGNoIChjaGFubmVsKSB7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfUjoKLSAgICAgICAgICAg
IHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhyZWRGdW5jdGlvbigpLCBpbnB1dEltYWdlLCBnZXRW
ZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Ci0g
ICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfRzoKLSAgICAgICAgICAgIHJldHVybiBbZ2V0RmlsdGVy
Rm9yRnVuYyhncmVlbkZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIGdldFZlY3RvckZvckNoYW5uZWwo
Y2hhbm5lbCkpIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKLSAgICAgICAgY2FzZSBTVkdf
Q0hBTk5FTF9COgotICAgICAgICAgICAgcmV0dXJuIFtnZXRGaWx0ZXJGb3JGdW5jKGJsdWVGdW5j
dGlvbigpLCBpbnB1dEltYWdlLCBnZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1ZUZv
cktleTpAIm91dHB1dEltYWdlIl07Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfQToKLSAgICAg
ICAgICAgIHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhhbHBoYUZ1bmN0aW9uKCksIGlucHV0SW1h
Z2UsIGdldFZlY3RvckZvckNoYW5uZWwoY2hhbm5lbCkpIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1h
Z2UiXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
fQotCi1DSUZpbHRlciogU1ZHRkVDb21wb25lbnRUcmFuc2Zlcjo6Z2V0Q0lGaWx0ZXIoY29uc3Qg
RmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFtXS0NvbXBvbmVudE1lcmdlRmlsdGVyIGNs
YXNzXTsKLSAgICBbV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyIGNsYXNzXTsKLSAgICBbV0tUYWJs
ZVRyYW5zZmVyRmlsdGVyIGNsYXNzXTsKLSAgICBbV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIGNs
YXNzXTsKLSAgICBbV0tMaW5lYXJUcmFuc2ZlckZpbHRlciBjbGFzc107Ci0gICAgW1dLR2FtbWFU
cmFuc2ZlckZpbHRlciBjbGFzc107Ci0KLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVy
ID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRl
clBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRh
TWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgQ0lGaWx0ZXIqIGZpbHRlciA9
IG5pbDsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgZmlsdGVyID0gW0NJ
RmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tDb21wb25lbnRNZXJnZSJdOwotICAgIGlmICghZmls
dGVyKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAg
IENJSW1hZ2UqIGlucHV0SW1hZ2UgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhp
cyk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotCi0gICAgW2ZpbHRl
ciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihTVkdfQ0hBTk5FTF9SLCBpbnB1dEltYWdlKSBm
b3JLZXk6QCJpbnB1dEZ1bmNSIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZp
bHRlcihTVkdfQ0hBTk5FTF9HLCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1bmNHIl07Ci0g
ICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihTVkdfQ0hBTk5FTF9CLCBpbnB1
dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1bmNCIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRG
dW5jdGlvbkZpbHRlcihTVkdfQ0hBTk5FTF9BLCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1
bmNBIl07Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94KTsKLSAgICBGRV9R
VUFSVFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9TVkdGRUNvbXBvc2l0ZUNnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvU1ZHRkVDb21wb3NpdGVDZy5tbQkocmV2aXNpb24gMzQ5NzIpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFQ29tcG9zaXRlQ2cubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGRUNvbXBvc2l0ZS5o
IgotI2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCi0KLSNpbXBvcnQgIldLQXJpdGhtZXRpY0Zp
bHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRUNvbXBvc2l0
ZTo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jl
c291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVz
b3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsK
LSAgICBDSUZpbHRlciogZmlsdGVyID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKLQotICAgIHN3aXRjaCAob3BlcmF0aW9uKCkpIHsKLSAgICBjYXNlIFNWR19GRUNPTVBP
U0lURV9PUEVSQVRPUl9VTktOT1dOOgotICAgICAgICByZXR1cm4gbmlsOwotICAgIGNhc2UgU1ZH
X0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBm
aWx0ZXJXaXRoTmFtZTpAIkNJU291cmNlT3ZlckNvbXBvc2l0aW5nIl07Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOgotICAgICAgICBmaWx0ZXIg
PSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZUluQ29tcG9zaXRpbmciXTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgotICAg
ICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZU91dENvbXBv
c2l0aW5nIl07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHX0ZFQ09NUE9TSVRFX09QRVJB
VE9SX0FUT1A6Ci0gICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJ
U291cmNlQXRvcENvbXBvc2l0aW5nIl07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHX0ZF
Q09NUE9TSVRFX09QRVJBVE9SX1hPUjoKLSAgICAgICAgLy9GSVhNRTogSSdtIG5vdCBzdXJlIHRo
aXMgaXMgcmlnaHQuLi4KLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1l
OkAiQ0lFeGNsdXNpb25CbGVuZE1vZGUiXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdf
RkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQzoKLSAgICAgICAgW1dLQXJpdGhtZXRpY0Zp
bHRlciBjbGFzc107Ci0gICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpA
IldLQXJpdGhtZXRpY0ZpbHRlciJdOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBbZmls
dGVyIHNldERlZmF1bHRzXTsKLSAgICBDSUltYWdlKiBpbnB1dEltYWdlID0gZmlsdGVyUGxhdGZv
cm1EYXRhLT5pbnB1dEltYWdlKHRoaXMpOwotICAgIENJSW1hZ2UqIGJhY2tncm91bmRJbWFnZSA9
IGZpbHRlclBsYXRmb3JtRGF0YS0+aW1hZ2VGb3JOYW1lKGluMigpKTsKLSAgICBGRV9RVUFSVFpf
Q0hFQ0tfSU5QVVQoaW5wdXRJbWFnZSk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGJhY2tn
cm91bmRJbWFnZSk7Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTppbnB1dEltYWdlIGZvcktleTpAImlu
cHV0SW1hZ2UiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmJhY2tncm91bmRJbWFnZSBmb3JLZXk6
QCJpbnB1dEJhY2tncm91bmRJbWFnZSJdOwotICAgIC8vRklYTUU6IHRoaXMgc2VlbXMgdWdseQot
ICAgIGlmIChvcGVyYXRpb24oKSA9PSBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJ
QykgewotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
azEoKV0gZm9yS2V5OkAiaW5wdXRLMSJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051
bWJlciBudW1iZXJXaXRoRmxvYXQ6azIoKV0gZm9yS2V5OkAiaW5wdXRLMiJdOwotICAgICAgICBb
ZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6azMoKV0gZm9yS2V5OkAi
aW5wdXRLMyJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRo
RmxvYXQ6azQoKV0gZm9yS2V5OkAiaW5wdXRLNCJdOwotICAgIH0KLQotICAgIEZFX1FVQVJUWl9N
QVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22079</attachid>
            <date>2008-07-03 23:32:10 -0700</date>
            <delta_ts>2008-07-04 09:19:57 -0700</delta_ts>
            <desc>SVGConvolveMatrix Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>11226</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBA
CiAjZGVmaW5lIFNWR0ZFQmxlbmRFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZH
RkVCbGVuZC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9u
IDM0OTkyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVu
dF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAi
RmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR0ZFQ29sb3JNYXRyaXguaCIKICNpbmNsdWRl
ICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiAzNDk5MikK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1
ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdGRUNvbXBvbmVudFRyYW5zZmVyLmgiCiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiAzNDk5MikKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3
ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ZFQ29tcG9zaXRlRWxlbWVudF9oCiAKICNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgog
I2luY2x1ZGUgIlNWR0ZFQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXNfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJGaWx0ZXJCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252
b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDM0OTkyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTM3
ICsyMiwxMjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5j
bHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJpeC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNW
R0ZFQ29udm9sdmVNYXRyaXg6OlNWR0ZFQ29udm9sdmVNYXRyaXgoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAgLCBtX2tlcm5lbFNp
emUoKQotICAgICwgbV9kaXZpc29yKDAuMGYpCi0gICAgLCBtX2JpYXMoMC4wZikKLSAgICAsIG1f
dGFyZ2V0T2Zmc2V0KCkKLSAgICAsIG1fZWRnZU1vZGUoU1ZHX0VER0VNT0RFX1VOS05PV04pCi0g
ICAgLCBtX2tlcm5lbFVuaXRMZW5ndGgoKQotICAgICwgbV9wcmVzZXJ2ZUFscGhhKGZhbHNlKQor
RkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeChGaWx0ZXJFZmZlY3QqIGluLCBGaWx0
ZXJFZmZlY3QqIGluMiwgY29uc3QgRmxvYXRTaXplJiBrZXJuZWxTaXplLCAKKyAgICBjb25zdCBm
bG9hdCYgZGl2aXNvciwgY29uc3QgZmxvYXQmIGJpYXMsIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0
T2Zmc2V0LCBjb25zdCBFZGdlTW9kZVR5cGUmIGVkZ2VNb2RlLAorICAgIGNvbnN0IEZsb2F0UG9p
bnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZs
b2F0PiYga2VybmVsTWF0cml4KQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4p
CisgICAgLCBtX2luMihpbjIpCisgICAgLCBtX2tlcm5lbFNpemUoa2VybmVsU2l6ZSkKKyAgICAs
IG1fZGl2aXNvcihkaXZpc29yKQorICAgICwgbV9iaWFzKGJpYXMpCisgICAgLCBtX3RhcmdldE9m
ZnNldCh0YXJnZXRPZmZzZXQpCisgICAgLCBtX2VkZ2VNb2RlKGVkZ2VNb2RlKQorICAgICwgbV9r
ZXJuZWxVbml0TGVuZ3RoKGtlcm5lbFVuaXRMZW5ndGgpCisgICAgLCBtX3ByZXNlcnZlQWxwaGEo
cHJlc2VydmVBbHBoYSkKKyAgICAsIG1fa2VybmVsTWF0cml4KGtlcm5lbE1hdHJpeCkKIHsKIH0K
IAotUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0cml4PiBTVkdGRUNvbnZvbHZlTWF0cml4Ojpj
cmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVDb252b2x2ZU1h
dHJpeD4gRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVm
ZmVjdCogaW4yLCBjb25zdCBGbG9hdFNpemUmIGtlcm5lbFNpemUsIAorICAgIGNvbnN0IGZsb2F0
JiBkaXZpc29yLCBjb25zdCBmbG9hdCYgYmlhcywgY29uc3QgRmxvYXRTaXplJiB0YXJnZXRPZmZz
ZXQsIGNvbnN0IEVkZ2VNb2RlVHlwZSYgZWRnZU1vZGUsIAorICAgIGNvbnN0IEZsb2F0UG9pbnQm
IGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0
PiYga2VybmVsTWF0cml4KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVDb252b2x2
ZU1hdHJpeChmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFQ29udm9sdmVNYXRy
aXgoaW4sIGluMiwga2VybmVsU2l6ZSwgZGl2aXNvciwgYmlhcywgdGFyZ2V0T2Zmc2V0LCBlZGdl
TW9kZSwga2VybmVsVW5pdExlbmd0aCwKKyAgICAgICAgcHJlc2VydmVBbHBoYSwga2VybmVsTWF0
cml4KSk7CiB9CiAKLUZsb2F0U2l6ZSBTVkdGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxTaXplKCkg
Y29uc3QKKworRmxvYXRTaXplIEZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbFNpemUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2tlcm5lbFNpemU7CiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJp
eDo6c2V0S2VybmVsU2l6ZShGbG9hdFNpemUga2VybmVsU2l6ZSkKK3ZvaWQgRkVDb252b2x2ZU1h
dHJpeDo6c2V0S2VybmVsU2l6ZShGbG9hdFNpemUga2VybmVsU2l6ZSkKIHsKICAgICBtX2tlcm5l
bFNpemUgPSBrZXJuZWxTaXplOyAKIH0KIAotY29uc3QgVmVjdG9yPGZsb2F0PiYgU1ZHRkVDb252
b2x2ZU1hdHJpeDo6a2VybmVsKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxmbG9hdD4mIEZFQ29udm9s
dmVNYXRyaXg6Omtlcm5lbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fa2VybmVsTWF0cml4OyAK
IH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWwoY29uc3QgVmVjdG9yPGZs
b2F0PiYga2VybmVsKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWwoY29uc3QgVmVj
dG9yPGZsb2F0PiYga2VybmVsKQogewogICAgIG1fa2VybmVsTWF0cml4ID0ga2VybmVsOyAKIH0K
IAotZmxvYXQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6ZGl2aXNvcigpIGNvbnN0CitmbG9hdCBGRUNv
bnZvbHZlTWF0cml4OjpkaXZpc29yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kaXZpc29yOyAK
IH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXREaXZpc29yKGZsb2F0IGRpdmlzb3Ip
Cit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldERpdmlzb3IoZmxvYXQgZGl2aXNvcikKIHsKICAg
ICBtX2Rpdmlzb3IgPSBkaXZpc29yOyAKIH0KIAotZmxvYXQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6
YmlhcygpIGNvbnN0CitmbG9hdCBGRUNvbnZvbHZlTWF0cml4OjpiaWFzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9iaWFzOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRCaWFz
KGZsb2F0IGJpYXMpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldEJpYXMoZmxvYXQgYmlhcykK
IHsKICAgICBtX2JpYXMgPSBiaWFzOyAKIH0KIAotRmxvYXRTaXplIFNWR0ZFQ29udm9sdmVNYXRy
aXg6OnRhcmdldE9mZnNldCgpIGNvbnN0CitGbG9hdFNpemUgRkVDb252b2x2ZU1hdHJpeDo6dGFy
Z2V0T2Zmc2V0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90YXJnZXRPZmZzZXQ7IAogfQogCi12
b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldFRhcmdldE9mZnNldChGbG9hdFNpemUgdGFyZ2V0
T2Zmc2V0KQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRUYXJnZXRPZmZzZXQoRmxvYXRTaXpl
IHRhcmdldE9mZnNldCkKIHsKICAgICBtX3RhcmdldE9mZnNldCA9IHRhcmdldE9mZnNldDsgCiB9
CiAKLVNWR0VkZ2VNb2RlVHlwZSBTVkdGRUNvbnZvbHZlTWF0cml4OjplZGdlTW9kZSgpIGNvbnN0
CitFZGdlTW9kZVR5cGUgRkVDb252b2x2ZU1hdHJpeDo6ZWRnZU1vZGUoKSBjb25zdAogewogICAg
IHJldHVybiBtX2VkZ2VNb2RlOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRF
ZGdlTW9kZShTVkdFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6
OnNldEVkZ2VNb2RlKEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKIHsKICAgICBtX2VkZ2VNb2RlID0g
ZWRnZU1vZGU7IAogfQogCi1GbG9hdFBvaW50IFNWR0ZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbFVu
aXRMZW5ndGgoKSBjb25zdAorRmxvYXRQb2ludCBGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxVbml0
TGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoOyAKIH0KIAot
dm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9pbnQg
a2VybmVsVW5pdExlbmd0aCkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsVW5pdExl
bmd0aChGbG9hdFBvaW50IGtlcm5lbFVuaXRMZW5ndGgpCiB7CiAgICAgbV9rZXJuZWxVbml0TGVu
Z3RoID0ga2VybmVsVW5pdExlbmd0aDsgCiB9CiAKLWJvb2wgU1ZHRkVDb252b2x2ZU1hdHJpeDo6
cHJlc2VydmVBbHBoYSgpIGNvbnN0Citib29sIEZFQ29udm9sdmVNYXRyaXg6OnByZXNlcnZlQWxw
aGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3ByZXNlcnZlQWxwaGE7IAogfQogCi12b2lkIFNW
R0ZFQ29udm9sdmVNYXRyaXg6OnNldFByZXNlcnZlQWxwaGEoYm9vbCBwcmVzZXJ2ZUFscGhhKQor
dm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKGJvb2wgcHJlc2VydmVBbHBo
YSkKIHsKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOyAKIH0KIAotc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNWR0VkZ2VNb2RlVHlwZSB0
KQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVDb252b2x2
ZU1hdHJpeDo6ZHVtcCgpCiB7Ci0gICAgc3dpdGNoICh0KQotICAgIHsKLSAgICAgICAgY2FzZSBT
VkdfRURHRU1PREVfVU5LTk9XTjoKLSAgICAgICAgICAgIHRzIDw8ICJVTktOT1dOIjticmVhazsK
LSAgICAgICAgY2FzZSBTVkdfRURHRU1PREVfRFVQTElDQVRFOgotICAgICAgICAgICAgdHMgPDwg
IkRVUExJQ0FURSI7YnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0VER0VNT0RFX1dSQVA6Ci0gICAg
ICAgICAgICB0cyA8PCAiV1JBUCI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19FREdFTU9ERV9O
T05FOgotICAgICAgICAgICAgdHMgPDwgIk5PTkUiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IHRzOwotfQotCi1UZXh0U3RyZWFtJiBTVkdGRUNvbnZvbHZlTWF0cml4OjpleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIHRzIDw8ICJbdHlwZT1DT05W
T0xWRS1NQVRSSVhdICI7Ci0gICAgU1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0
aW9uKHRzKTsKLSAgICB0cyA8PCAiIFtvcmRlciAiIDw8IG1fa2VybmVsU2l6ZSA8PCAiXSIKLSAg
ICAgICAgPDwgIiBba2VybmVsIG1hdHJpeD0iIDw8IG1fa2VybmVsTWF0cml4ICA8PCAiXSIKLSAg
ICAgICAgPDwgIiBbZGl2aXNvcj0iIDw8IG1fZGl2aXNvciA8PCAiXSIKLSAgICAgICAgPDwgIiBb
Ymlhcz0iIDw8IG1fYmlhcyA8PCAiXSIKLSAgICAgICAgPDwgIiBbdGFyZ2V0ICIgPDwgbV90YXJn
ZXRPZmZzZXQgPDwgIl0iCi0gICAgICAgIDw8ICIgW2VkZ2UgbW9kZT0iIDw8IG1fZWRnZU1vZGUg
PDwgIl0iCi0gICAgICAgIDw8ICIgW2tlcm5lbCB1bml0IGxlbmd0aCAiIDw8IG1fa2VybmVsVW5p
dExlbmd0aCA8PCAiXSIKLSAgICAgICAgPDwgIiBbcHJlc2VydmUgYWxwaGE9IiA8PCBtX3ByZXNl
cnZlQWxwaGEgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1h
dHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVD
b252b2x2ZU1hdHJpeC5oCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw1OSAr
MjMsNjkgQEAKICNkZWZpbmUgU1ZHRkVDb252b2x2ZU1hdHJpeF9oCiAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1
ZGUgIkZsb2F0U2l6ZS5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWVudW0gU1ZHRWRnZU1vZGVUeXBlIHsKLSAgICBTVkdfRURHRU1PREVfVU5L
Tk9XTiAgID0gMCwKLSAgICBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMSwKLSAgICBTVkdfRURH
RU1PREVfV1JBUCAgICAgID0gMiwKLSAgICBTVkdfRURHRU1PREVfTk9ORSAgICAgID0gMwotfTsK
LQotY2xhc3MgU1ZHRkVDb252b2x2ZU1hdHJpeCA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3Qgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFQ29udm9sdmVNYXRyaXg+IGNyZWF0
ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgRmxvYXRTaXplIGtlcm5lbFNpemUoKSBjb25z
dDsKLSAgICB2b2lkIHNldEtlcm5lbFNpemUoRmxvYXRTaXplKTsKLQotICAgIGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIGtlcm5lbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mKTsKLQotICAgIGZsb2F0IGRpdmlzb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldERp
dmlzb3IoZmxvYXQpOwotCi0gICAgZmxvYXQgYmlhcygpIGNvbnN0OwotICAgIHZvaWQgc2V0Qmlh
cyhmbG9hdCk7Ci0KLSAgICBGbG9hdFNpemUgdGFyZ2V0T2Zmc2V0KCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRUYXJnZXRPZmZzZXQoRmxvYXRTaXplKTsKLQotICAgIFNWR0VkZ2VNb2RlVHlwZSBlZGdl
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RWRnZU1vZGUoU1ZHRWRnZU1vZGVUeXBlKTsKLQot
ICAgIEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2Vy
bmVsVW5pdExlbmd0aChGbG9hdFBvaW50KTsKLQotICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNv
bnN0OwotICAgIHZvaWQgc2V0UHJlc2VydmVBbHBoYShib29sKTsKLQotICAgIHZpcnR1YWwgVGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLXBy
aXZhdGU6Ci0gICAgU1ZHRkVDb252b2x2ZU1hdHJpeChTVkdSZXNvdXJjZUZpbHRlciopOwotCi0g
ICAgRmxvYXRTaXplIG1fa2VybmVsU2l6ZTsKLSAgICBmbG9hdCBtX2Rpdmlzb3I7Ci0gICAgZmxv
YXQgbV9iaWFzOwotICAgIEZsb2F0U2l6ZSBtX3RhcmdldE9mZnNldDsKLSAgICBTVkdFZGdlTW9k
ZVR5cGUgbV9lZGdlTW9kZTsKLSAgICBGbG9hdFBvaW50IG1fa2VybmVsVW5pdExlbmd0aDsKLSAg
ICBib29sIG1fcHJlc2VydmVBbHBoYTsKLSAgICBWZWN0b3I8ZmxvYXQ+IG1fa2VybmVsTWF0cml4
OyAvLyBtYXliZSBzaG91bGQgYmUgYSByZWFsIG1hdHJpeD8KLX07CisgICAgZW51bSBFZGdlTW9k
ZVR5cGUgeworICAgICAgICBFREdFTU9ERV9VTktOT1dOICAgPSAwLAorICAgICAgICBFREdFTU9E
RV9EVVBMSUNBVEUgPSAxLAorICAgICAgICBFREdFTU9ERV9XUkFQICAgICAgPSAyLAorICAgICAg
ICBFREdFTU9ERV9OT05FICAgICAgPSAzCisgICAgfTsKKworICAgIGNsYXNzIEZFQ29udm9sdmVN
YXRyaXggOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBGaWx0
ZXJFZmZlY3QqLCBjb25zdCBGbG9hdFNpemUmLCAKKyAgICAgICAgICAgICAgICBjb25zdCBmbG9h
dCYsIGNvbnN0IGZsb2F0JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRWRnZU1vZGVUeXBlJiwg
Y29uc3QgRmxvYXRQb2ludCYsCisgICAgICAgICAgICAgICAgYm9vbCwgY29uc3QgVmVjdG9yPGZs
b2F0PiYpOworCisgICAgICAgIEZsb2F0U2l6ZSBrZXJuZWxTaXplKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0S2VybmVsU2l6ZShGbG9hdFNpemUpOworCisgICAgICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIGtlcm5lbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldEtlcm5lbChjb25zdCBWZWN0
b3I8ZmxvYXQ+Jik7CisKKyAgICAgICAgZmxvYXQgZGl2aXNvcigpIGNvbnN0OworICAgICAgICB2
b2lkIHNldERpdmlzb3IoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGJpYXMoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRCaWFzKGZsb2F0KTsKKworICAgICAgICBGbG9hdFNpemUgdGFyZ2V0T2Zm
c2V0KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VGFyZ2V0T2Zmc2V0KEZsb2F0U2l6ZSk7CisK
KyAgICAgICAgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
RWRnZU1vZGUoRWRnZU1vZGVUeXBlKTsKKworICAgICAgICBGbG9hdFBvaW50IGtlcm5lbFVuaXRM
ZW5ndGgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9p
bnQpOworCisgICAgICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0OworICAgICAgICB2b2lk
IHNldFByZXNlcnZlQWxwaGEoYm9vbCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBG
RUNvbnZvbHZlTWF0cml4KEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEVkZ2VNb2RlVHlwZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29s
LCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
bV9pbjsKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjI7CisgICAgICAgIEZsb2F0
U2l6ZSBtX2tlcm5lbFNpemU7CisgICAgICAgIGZsb2F0IG1fZGl2aXNvcjsKKyAgICAgICAgZmxv
YXQgbV9iaWFzOworICAgICAgICBGbG9hdFNpemUgbV90YXJnZXRPZmZzZXQ7CisgICAgICAgIEVk
Z2VNb2RlVHlwZSBtX2VkZ2VNb2RlOworICAgICAgICBGbG9hdFBvaW50IG1fa2VybmVsVW5pdExl
bmd0aDsKKyAgICAgICAgYm9vbCBtX3ByZXNlcnZlQWxwaGE7CisgICAgICAgIFZlY3RvcjxmbG9h
dD4gbV9rZXJuZWxNYXRyaXg7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22080</attachid>
            <date>2008-07-03 23:37:11 -0700</date>
            <delta_ts>2008-07-04 09:19:57 -0700</delta_ts>
            <desc>SVGFEDiffuseLighting Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>14397</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2
aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQXR0ci5oIgog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCi0jaW5jbHVk
ZSAiU1ZHRkVMaWdodEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUg
IlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCkBAIC03
NSwzNSArNzQsMzEgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnBhcnNlTQog
CiBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRl
ckVmZmVjdCkgCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVEaWZmdXNlTGlnaHRpbmc6
OmNyZWF0ZShmaWx0ZXIpOwotCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluMSgpKTsKLSAg
ICBtX2ZpbHRlckVmZmVjdC0+c2V0RGlmZnVzZUNvbnN0YW50KGRpZmZ1c2VDb25zdGFudCgpKTsK
LSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0U3VyZmFjZVNjYWxlKHN1cmZhY2VTY2FsZSgpKTsKLSAg
ICBtX2ZpbHRlckVmZmVjdC0+c2V0S2VybmVsVW5pdExlbmd0aFgoa2VybmVsVW5pdExlbmd0aFgo
KSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEtlcm5lbFVuaXRMZW5ndGhZKGtlcm5lbFVuaXRM
ZW5ndGhZKCkpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQog
Citib29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciog
YnVpbGRlcikKK3sKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOworICAgIAorICAgIGlmKCFpbnB1dDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKICAgICBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQqIG5vbkNvbnN0VGhpcyA9
IGNvbnN0X2Nhc3Q8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Kj4odGhpcyk7Ci0KICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBub25Db25zdFRoaXMtPnN0eWxlRm9yUmVuZGVyZXIo
cGFyZW50KCktPnJlbmRlcmVyKCkpOwogICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHlsZSA9IG5v
bkNvbnN0VGhpcy0+cmVzb2x2ZVN0eWxlKHBhcmVudFN0eWxlKTsKKyAgICBDb2xvciBjb2xvciA9
IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5saWdodGluZ0NvbG9yKCk7CiAgICAgCi0gICAgbV9m
aWx0ZXJFZmZlY3QtPnNldExpZ2h0aW5nQ29sb3IoZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmxp
Z2h0aW5nQ29sb3IoKSk7Ci0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0
LmdldCgpKTsKLSAKLSAgICBwYXJlbnRTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJl
bmEoKSk7Ci0gICAgZmlsdGVyU3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkp
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRp
bmc6OmNyZWF0ZShpbnB1dDEsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50
KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxV
bml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCB1cGRhdGVMaWdodHMoKSk7CisgICAg
YnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOwogICAgIAotICAg
IHVwZGF0ZUxpZ2h0cygpOwotICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnVwZGF0
ZUxpZ2h0cygpIGNvbnN0CitMaWdodFNvdXJjZSogU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
Ojp1cGRhdGVMaWdodHMoKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKICAgICBMaWdodFNvdXJjZSogbGlnaHQgPSAwOwogICAgIGZvciAo
Tm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSB8fApAQCAt
MTE1LDcgKzExMCw3IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojp1cGRhdGUK
ICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRMaWdodFNvdXJjZShs
aWdodCk7CisgICAgcmV0dXJuIGxpZ2h0OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAg
KzIzLDExIEBACiAjZGVmaW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudF9oCiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiU1ZHRkVMaWdodEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
OworICAgIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nOwogICAgIGNsYXNzIFNWR0NvbG9yOwogCiAg
ICAgY2xhc3MgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcwpAQCAtMzcsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDgsOSAr
NTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBmbG9hdCwgS2Vy
bmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgZmxv
YXQsIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAotICAgICAgICBtdXRh
YmxlIFJlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAg
IExpZ2h0U291cmNlKiB1cGRhdGVMaWdodHMoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIHZv
aWQgdXBkYXRlTGlnaHRzKCkgY29uc3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFRGlmZnVz
ZUxpZ2h0aW5nPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlz
aW9uIDM0OTkyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VM
aWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDk4ICsyNCw5OSBAQAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5o
IgogI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCi0jaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpTVkdG
RURpZmZ1c2VMaWdodGluZyhTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmls
dGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1fbGlnaHRpbmdDb2xvcigpCi0gICAgLCBtX3N1cmZh
Y2VTY2FsZSgwLjBmKQotICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoMC4wZikKLSAgICAsIG1fa2Vy
bmVsVW5pdExlbmd0aFgoMC4wZikKLSAgICAsIG1fa2VybmVsVW5pdExlbmd0aFkoMC4wZikKLSAg
ICAsIG1fbGlnaHRTb3VyY2UoMCkKK0ZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGlu
ZyhGaWx0ZXJFZmZlY3QqIGluICwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGNvbnN0IGZs
b2F0JiBzdXJmYWNlU2NhbGUsCisgICAgY29uc3QgZmxvYXQmIGRpZmZ1c2VDb25zdGFudCwgY29u
c3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0
aFksIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAg
LCBtX2luKGluKQorICAgICwgbV9saWdodGluZ0NvbG9yKGxpZ2h0aW5nQ29sb3IpCisgICAgLCBt
X3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCisgICAgLCBtX2RpZmZ1c2VDb25zdGFudChkaWZm
dXNlQ29uc3RhbnQpCisgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKGtlcm5lbFVuaXRMZW5ndGhY
KQorICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWShrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAsIG1f
bGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVEaWZmdXNl
TGlnaHRpbmc+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5n
OjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiAsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLAor
ICAgIGNvbnN0IGZsb2F0JiBzdXJmYWNlU2NhbGUsIGNvbnN0IGZsb2F0JiBkaWZmdXNlQ29uc3Rh
bnQsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWCwKKyAgICBjb25zdCBmbG9hdCYga2Vy
bmVsVW5pdExlbmd0aFksIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlcikpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRkVEaWZmdXNlTGlnaHRpbmcoaW4sIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VT
Y2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0
aFksIGxpZ2h0U291cmNlKSk7CiB9CiAKLVNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjp+U1ZHRkVEaWZm
dXNlTGlnaHRpbmcoKQorRkVEaWZmdXNlTGlnaHRpbmc6On5GRURpZmZ1c2VMaWdodGluZygpCiB7
CiB9CiAKLUNvbG9yIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QK
K0NvbG9yIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9saWdodGluZ0NvbG9yOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpz
ZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKQordm9pZCBGRURpZmZ1
c2VMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcikK
IHsKICAgICBtX2xpZ2h0aW5nQ29sb3IgPSBsaWdodGluZ0NvbG9yOwogfQogCi1mbG9hdCBTVkdG
RURpZmZ1c2VMaWdodGluZzo6c3VyZmFjZVNjYWxlKCkgY29uc3QgCitmbG9hdCBGRURpZmZ1c2VM
aWdodGluZzo6c3VyZmFjZVNjYWxlKCkgY29uc3QgCiB7CiAgICAgcmV0dXJuIG1fc3VyZmFjZVNj
YWxlOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUoZmxv
YXQgc3VyZmFjZVNjYWxlKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxl
KGZsb2F0IHN1cmZhY2VTY2FsZSkKIHsKICAgICBtX3N1cmZhY2VTY2FsZSA9IHN1cmZhY2VTY2Fs
ZTsKIH0KIAotZmxvYXQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmRpZmZ1c2VDb25zdGFudCgpIGNv
bnN0CitmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6ZGlmZnVzZUNvbnN0YW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQ7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGln
aHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29uc3RhbnQpCit2b2lkIEZF
RGlmZnVzZUxpZ2h0aW5nOjpzZXREaWZmdXNlQ29uc3RhbnQoZmxvYXQgZGlmZnVzZUNvbnN0YW50
KQogewogICAgIG1fZGlmZnVzZUNvbnN0YW50ID0gZGlmZnVzZUNvbnN0YW50OwogfQogCi1mbG9h
dCBTVkdGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFgoKSBjb25zdAorZmxvYXQg
RkVEaWZmdXNlTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6
c2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQga2VybmVsVW5pdExlbmd0aFgpCit2b2lkIEZFRGlm
ZnVzZUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCBrZXJuZWxVbml0TGVuZ3Ro
WCkKIHsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhYID0ga2VybmVsVW5pdExlbmd0aFg7CiB9CiAK
LWZsb2F0IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0Citm
bG9hdCBGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdAogewogICAg
IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSkKK3ZvaWQg
RkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhZKQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFkgPSBrZXJuZWxVbml0TGVuZ3RoWTsK
IH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJj
ZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSogRkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0U291
cmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saWdodFNvdXJjZS5nZXQoKTsKIH0KIAotdm9p
ZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqIGxpZ2h0
U291cmNlKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UoTGlnaHRTb3Vy
Y2UqIGxpZ2h0U291cmNlKQogeyAgICAKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7
CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6YXBw
bHkoKQoreworfQorCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpkdW1wKCkKIHsKLSAgICB0cyA8
PCAiW3R5cGU9RElGRlVTRS1MSUdIVElOR10gIjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVy
bmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICIgW3N1cmZhY2Ugc2NhbGU9IiA8PCBt
X3N1cmZhY2VTY2FsZSA8PCAiXSIKLSAgICAgICAgPDwgIiBbZGlmZnVzZSBjb25zdGFudD0iIDw8
IG1fZGlmZnVzZUNvbnN0YW50IDw8ICJdIgotICAgICAgICA8PCAiIFtrZXJuZWwgdW5pdCBsZW5n
dGggIiA8PCBtX2tlcm5lbFVuaXRMZW5ndGhYIDw8ICIsICIgPDwgbV9rZXJuZWxVbml0TGVuZ3Ro
WSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VM
aWdodGluZy5oCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNTEgKzI0LDUx
IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAi
Q29sb3IuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMaWdodFNvdXJjZTsKKyAg
ICBjbGFzcyBMaWdodFNvdXJjZTsKIAotY2xhc3MgU1ZHRkVEaWZmdXNlTGlnaHRpbmcgOiBwdWJs
aWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdG
RURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0gICAgdmlydHVh
bCB+U1ZHRkVEaWZmdXNlTGlnaHRpbmcoKTsKLQotICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBj
b25zdDsKLSAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKLQotICAgIGZs
b2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3VyZmFjZVNjYWxlKGZsb2F0
KTsKLQotICAgIGZsb2F0IGRpZmZ1c2VDb25zdGFudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlm
ZnVzZUNvbnN0YW50KGZsb2F0KTsKLQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCk7Ci0KLSAgICBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFko
ZmxvYXQpOwotCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwotCi0gICAgdmlydHVhbCBUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lm
IFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZs
b2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRURpZmZ1
c2VMaWdodGluZyhTVkdSZXNvdXJjZUZpbHRlciopOwotICAgIAotICAgIENvbG9yIG1fbGlnaHRp
bmdDb2xvcjsKLSAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKLSAgICBmbG9hdCBtX2RpZmZ1c2VD
b25zdGFudDsKLSAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhYOwotICAgIGZsb2F0IG1fa2Vy
bmVsVW5pdExlbmd0aFk7Ci0gICAgUmVmUHRyPExpZ2h0U291cmNlPiBtX2xpZ2h0U291cmNlOwot
fTsKKyAgICBjbGFzcyBGRURpZmZ1c2VMaWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRpbmc+
IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3Qg
ZmxvYXQmLAorICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBMaWdo
dFNvdXJjZSopOworICAgICAgICB2aXJ0dWFsIH5GRURpZmZ1c2VMaWdodGluZygpOworCisgICAg
ICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRMaWdodGlu
Z0NvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICAgICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKKworICAgICAgICBmbG9h
dCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXREaWZmdXNlQ29uc3Rh
bnQoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQpOworCisgICAgICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExl
bmd0aFkoZmxvYXQpOworCisgICAgICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgp
IGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7
CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRl
ckVmZmVjdCosIGNvbnN0IENvbG9yJiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsCisgICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0U291cmNlKik7CisK
KyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgQ29sb3IgbV9saWdo
dGluZ0NvbG9yOworICAgICAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKKyAgICAgICAgZmxvYXQg
bV9kaWZmdXNlQ29uc3RhbnQ7CisgICAgICAgIGZsb2F0IG1fa2VybmVsVW5pdExlbmd0aFg7Cisg
ICAgICAgIGZsb2F0IG1fa2VybmVsVW5pdExlbmd0aFk7CisgICAgICAgIFJlZlB0cjxMaWdodFNv
dXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0JKHJldmlzaW9uIDM0OTkyKQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVEaWZmdXNlTGlnaHRp
bmcuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi0jaW1wb3J0ICJXS0RpZmZ1c2VM
aWdodGluZ0ZpbHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdG
RURpZmZ1c2VMaWdodGluZzo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25z
dAotewotICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodCA9IGxpZ2h0U291cmNlKCk7Ci0gICAg
aWYgKCFsaWdodCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFtXS0RpZmZ1c2VMaWdodGlu
Z0ZpbHRlciBjbGFzc107Ci0KLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmls
dGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRlclBsYXRm
b3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKj4o
c3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0KLSAgICBDSUZpbHRlciogZmlsdGVyOwotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmls
dGVyV2l0aE5hbWU6QCJXS0RpZmZ1c2VMaWdodGluZyJdOwotICAgIGlmICghZmlsdGVyKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAgQ0lJbWFn
ZSogaW5wdXRJbWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW5wdXRJbWFnZSh0aGlzKTsKLSAg
ICBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQoaW5wdXRJbWFnZSk7Ci0gICAgQ0lGaWx0ZXIqIG5vcm1h
bHMgPSBnZXROb3JtYWxNYXAoaW5wdXRJbWFnZSwgc3VyZmFjZVNjYWxlKCkpOwotICAgIGlmICgh
bm9ybWFscykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIENJRmlsdGVyKiBsaWdodFZlY3Rv
cnMgPSBnZXRMaWdodFZlY3RvcnMobm9ybWFscywgbGlnaHQsIHN1cmZhY2VTY2FsZSgpKTsKLSAg
ICBpZiAoIWxpZ2h0VmVjdG9ycykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFtmaWx0ZXIg
c2V0VmFsdWU6W25vcm1hbHMgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdIGZvcktleTpAImlu
cHV0Tm9ybWFsTWFwIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbbGlnaHRWZWN0b3JzIHZhbHVl
Rm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dExpZ2h0VmVjdG9ycyJdOwotICAg
IFtmaWx0ZXIgc2V0VmFsdWU6Y2lDb2xvcihsaWdodGluZ0NvbG9yKCkpIGZvcktleTpAImlucHV0
TGlnaHRpbmdDb2xvciJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldp
dGhGbG9hdDpzdXJmYWNlU2NhbGUoKV0gZm9yS2V5OkAiaW5wdXRTdXJmYWNlU2NhbGUiXTsKLSAg
ICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZGlmZnVzZUNvbnN0
YW50KCldIGZvcktleTpAImlucHV0RGlmZnVzZUNvbnN0YW50Il07Ci0gICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Omtlcm5lbFVuaXRMZW5ndGhYKCldIGZvcktl
eTpAImlucHV0S2VybmVsVW5pdExlbmd0aFgiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051
bWJlciBudW1iZXJXaXRoRmxvYXQ6a2VybmVsVW5pdExlbmd0aFkoKV0gZm9yS2V5OkAiaW5wdXRL
ZXJuZWxVbml0TGVuZ3RoWSJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJv
eCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22081</attachid>
            <date>2008-07-04 00:22:23 -0700</date>
            <delta_ts>2008-07-04 09:19:57 -0700</delta_ts>
            <desc>SVGFEDisplacementMap Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>15012</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2
aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBt
X3hDaGFubmVsU2VsZWN0b3IoU1ZHX0NIQU5ORUxfQSkKLSAgICAsIG1feUNoYW5uZWxTZWxlY3Rv
cihTVkdfQ0hBTk5FTF9BKQorICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKENIQU5ORUxfQSkKKyAg
ICAsIG1feUNoYW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCiAgICAgLCBtX3NjYWxlKDAuMGYpCiAg
ICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewpAQCAtNDYsMTggKzQ2LDE4IEBAIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGwKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVy
YXRpb24sIFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIFNWR05hbWVzOjp5Q2hh
bm5lbFNlbGVjdG9yQXR0ciwgbV95Q2hhbm5lbFNlbGVjdG9yKQogQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBu
dW1iZXIsIFNjYWxlLCBzY2FsZSwgU1ZHTmFtZXM6OnNjYWxlQXR0ciwgbV9zY2FsZSkKIAotU1ZH
Q2hhbm5lbFNlbGVjdG9yVHlwZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN0cmluZ1Rv
Q2hhbm5lbChjb25zdCBTdHJpbmcmIGtleSkKK0NoYW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0NoYW5uZWwoY29uc3QgU3RyaW5nJiBrZXkpCiB7
CiAgICAgaWYgKGtleSA9PSAiUiIpCi0gICAgICAgIHJldHVybiBTVkdfQ0hBTk5FTF9SOworICAg
ICAgICByZXR1cm4gQ0hBTk5FTF9SOwogICAgIGVsc2UgaWYgKGtleSA9PSAiRyIpCi0gICAgICAg
IHJldHVybiBTVkdfQ0hBTk5FTF9HOworICAgICAgICByZXR1cm4gQ0hBTk5FTF9HOwogICAgIGVs
c2UgaWYgKGtleSA9PSAiQiIpCi0gICAgICAgIHJldHVybiBTVkdfQ0hBTk5FTF9COworICAgICAg
ICByZXR1cm4gQ0hBTk5FTF9COwogICAgIGVsc2UgaWYgKGtleSA9PSAiQSIpCi0gICAgICAgIHJl
dHVybiBTVkdfQ0hBTk5FTF9BOworICAgICAgICByZXR1cm4gQ0hBTk5FTF9BOwogCi0gICAgcmV0
dXJuIFNWR19DSEFOTkVMX1VOS05PV047CisgICAgcmV0dXJuIENIQU5ORUxfVU5LTk9XTjsKIH0K
IAogdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKQEAgLTc3LDE5ICs3NywyNiBAQCB2b2lkIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6cGFyc2VNCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZF
RGlzcGxhY2VtZW50TWFwKiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVj
dChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZmZWN0KiBTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmls
dGVyRWZmZWN0ID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShmaWx0ZXIpOwotCi0gICAg
bV9maWx0ZXJFZmZlY3QtPnNldFhDaGFubmVsU2VsZWN0b3IoKFNWR0NoYW5uZWxTZWxlY3RvclR5
cGUpIHhDaGFubmVsU2VsZWN0b3IoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFlDaGFubmVs
U2VsZWN0b3IoKFNWR0NoYW5uZWxTZWxlY3RvclR5cGUpIHlDaGFubmVsU2VsZWN0b3IoKSk7Ci0g
ICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluMSgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0
SW4yKGluMigpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0U2NhbGUoc2NhbGUoKSk7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBzZXRTdGFuZGFy
ZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QuZ2V0KCkpOwotICAgIHJldHVybiBtX2ZpbHRlckVm
ZmVjdC5nZXQoKTsKK2Jvb2wgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChGaWx0
ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRl
ci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBidWls
ZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICAKKyAgICBpZighaW5wdXQxIHx8ICFpbnB1
dDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgCisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKGlucHV0
MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDaGFubmVsU2VsZWN0b3JUeXBlPiAoeENoYW5uZWxTZWxl
Y3RvcigpKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gKHlDaGFubmVsU2VsZWN0b3IoKSksIHNjYWxlKCkp
OworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKKyAg
ICAKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmgJKHJldmlzaW9uIDM0OTkyKQorKysgV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogICAgICAgICB2
aXJ0dWFsIH5TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoKTsKICAgICAgICAgCi0gICAgICAg
IHN0YXRpYyBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJp
bmcmKTsKKyAgICAgICAgc3RhdGljIENoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFubmVs
KGNvbnN0IFN0cmluZyYpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFRGlz
cGxhY2VtZW50TWFwKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZp
bHRlciopIGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKICAgICAg
ICAgCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDYsNyArNDcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGludCwgaW50LCBZQ2hhbm5lbFNlbGVjdG9y
LCB5Q2hhbm5lbFNlbGVjdG9yKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBmbG9hdCwgZmxvYXQsIFNjYWxlLCBzY2Fs
ZSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcD4gbV9maWx0
ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFRGlzcGxhY2VtZW50TWFwPiBtX2Zp
bHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFw
LmNwcAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsOTIgKzIyLDYzIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCi0jaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR0ZF
RGlzcGxhY2VtZW50TWFwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVEaXNwbGFj
ZW1lbnRNYXA6OlNWR0ZFRGlzcGxhY2VtZW50TWFwKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIp
Ci0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV94Q2hhbm5lbFNlbGVjdG9y
KFNWR19DSEFOTkVMX1VOS05PV04pCi0gICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoU1ZHX0NIQU5O
RUxfVU5LTk9XTikKLSAgICAsIG1fc2NhbGUoMCkKK0ZFRGlzcGxhY2VtZW50TWFwOjpGRURpc3Bs
YWNlbWVudE1hcChGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3QgQ2hh
bm5lbFNlbGVjdG9yVHlwZSYgeENoYW5uZWxTZWxlY3RvciwKKyAgICBjb25zdCBDaGFubmVsU2Vs
ZWN0b3JUeXBlJiB5Q2hhbm5lbFNlbGVjdG9yLCBjb25zdCBmbG9hdCYgc2NhbGUpCisgICAgOiBG
aWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1faW4yKGluMikKKyAgICAsIG1f
eENoYW5uZWxTZWxlY3Rvcih4Q2hhbm5lbFNlbGVjdG9yKQorICAgICwgbV95Q2hhbm5lbFNlbGVj
dG9yKHlDaGFubmVsU2VsZWN0b3IpCisgICAgLCBtX3NjYWxlKHNjYWxlKQogewogfQogCi1QYXNz
UmVmUHRyPFNWR0ZFRGlzcGxhY2VtZW50TWFwPiBTVkdGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRl
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZFRGlzcGxhY2VtZW50TWFw
PiBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVj
dCogaW4yLAorICAgIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUmIHhDaGFubmVsU2VsZWN0b3Is
IGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUmIHlDaGFubmVsU2VsZWN0b3IsIGNvbnN0IGZsb2F0
JiBzY2FsZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFRGlzcGxhY2VtZW50TWFw
KGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVEaXNwbGFjZW1lbnRNYXAoaW4s
IGluMiwgeENoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3Rvciwgc2NhbGUpKTsKIH0KIAot
U3RyaW5nIFNWR0ZFRGlzcGxhY2VtZW50TWFwOjppbjIoKSBjb25zdAotewotICAgIHJldHVybiBt
X2luMjsKLX0KLQotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2V0SW4yKGNvbnN0IFN0cmlu
ZyAmaW4yKQotewotICAgIG1faW4yID0gaW4yOwotfQotCi1TVkdDaGFubmVsU2VsZWN0b3JUeXBl
IFNWR0ZFRGlzcGxhY2VtZW50TWFwOjp4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QKK0NoYW5uZWxT
ZWxlY3RvclR5cGUgRkVEaXNwbGFjZW1lbnRNYXA6OnhDaGFubmVsU2VsZWN0b3IoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3hDaGFubmVsU2VsZWN0b3I7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFj
ZW1lbnRNYXA6OnNldFhDaGFubmVsU2VsZWN0b3IoY29uc3QgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlw
ZSB4Q2hhbm5lbFNlbGVjdG9yKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxT
ZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IpCiB7CiAg
ICAgbV94Q2hhbm5lbFNlbGVjdG9yID0geENoYW5uZWxTZWxlY3RvcjsKIH0KIAotU1ZHQ2hhbm5l
bFNlbGVjdG9yVHlwZSBTVkdGRURpc3BsYWNlbWVudE1hcDo6eUNoYW5uZWxTZWxlY3RvcigpIGNv
bnN0CitDaGFubmVsU2VsZWN0b3JUeXBlIEZFRGlzcGxhY2VtZW50TWFwOjp5Q2hhbm5lbFNlbGVj
dG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV95Q2hhbm5lbFNlbGVjdG9yOwogfQogCi12b2lk
IFNWR0ZFRGlzcGxhY2VtZW50TWFwOjpzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5u
ZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvcikKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OnNldFlDaGFubmVsU2VsZWN0b3IoY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNl
bGVjdG9yKQogewogICAgIG1feUNoYW5uZWxTZWxlY3RvciA9IHlDaGFubmVsU2VsZWN0b3I7CiB9
CiAKLWZsb2F0IFNWR0ZFRGlzcGxhY2VtZW50TWFwOjpzY2FsZSgpIGNvbnN0CitmbG9hdCBGRURp
c3BsYWNlbWVudE1hcDo6c2NhbGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3NjYWxlOwogfQog
Ci12b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKK3ZvaWQg
RkVEaXNwbGFjZW1lbnRNYXA6OnNldFNjYWxlKGZsb2F0IHNjYWxlKQogewogICAgIG1fc2NhbGUg
PSBzY2FsZTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgdCkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmFw
cGx5KCkKK3sKK30KKwordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6ZHVtcCgpCiB7Ci0gICAgc3dp
dGNoICh0KQotICAgIHsKLSAgICAgICAgY2FzZSBTVkdfQ0hBTk5FTF9VTktOT1dOOgotICAgICAg
ICAgICAgdHMgPDwgIlVOS05PV04iOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfQ0hBTk5FTF9S
OgotICAgICAgICAgICAgdHMgPDwgIlJFRCI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19DSEFO
TkVMX0c6Ci0gICAgICAgICAgICB0cyA8PCAiR1JFRU4iOyBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdfQ0hBTk5FTF9COgotICAgICAgICAgICAgdHMgPDwgIkJMVUUiOyBicmVhazsKLSAgICAgICAg
Y2FzZSBTVkdfQ0hBTk5FTF9BOgotICAgICAgICAgICAgdHMgPDwgIkFMUEhBIjsgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0czsKLX0KLQotVGV4dFN0cmVhbSYgU1ZHRkVEaXNwbGFjZW1lbnRN
YXA6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAg
dHMgPDwgIlt0eXBlPURJU1BMQUNFTUVOVC1NQVBdICI7Ci0gICAgU1ZHRmlsdGVyRWZmZWN0Ojpl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKLSAgICBpZiAoIWluMigpLmlzRW1wdHkoKSkKLSAg
ICAgICAgdHMgPDwgIiBbaW4yPSIgPDwgaW4yKCkgPDwgIl0iOwotICAgIHRzIDw8ICIgW3NjYWxl
PSIgPDwgbV9zY2FsZSA8PCAiXSIKLSAgICAgICAgPDwgIiBbeCBjaGFubmVsIHNlbGVjdG9yPSIg
PDwgbV94Q2hhbm5lbFNlbGVjdG9yIDw8ICJdIgotICAgICAgICA8PCAiIFt5IGNoYW5uZWwgc2Vs
ZWN0b3I9IiA8PCBtX3lDaGFubmVsU2VsZWN0b3IgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2aXNpb24gMzQ5OTIpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDQ4ICsyMyw0NiBAQAogI2RlZmluZSBTVkdGRURpc3BsYWNlbWVu
dE1hcF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVk
ZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFNWR0No
YW5uZWxTZWxlY3RvclR5cGUgewotICAgIFNWR19DSEFOTkVMX1VOS05PV04gPSAwLAotICAgIFNW
R19DSEFOTkVMX1IgICAgICAgPSAxLAotICAgIFNWR19DSEFOTkVMX0cgICAgICAgPSAyLAotICAg
IFNWR19DSEFOTkVMX0IgICAgICAgPSAzLAotICAgIFNWR19DSEFOTkVMX0EgICAgICAgPSA0Ci19
OwotCi1jbGFzcyBTVkdGRURpc3BsYWNlbWVudE1hcCA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3Qg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRGlzcGxhY2VtZW50TWFwPiBj
cmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIFN0cmluZyBpbjIoKSBjb25zdDsKLSAg
ICB2b2lkIHNldEluMihjb25zdCBTdHJpbmcmKTsKLQotICAgIFNWR0NoYW5uZWxTZWxlY3RvclR5
cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0WENoYW5uZWxTZWxlY3Rv
cihjb25zdCBTVkdDaGFubmVsU2VsZWN0b3JUeXBlKTsKLQotICAgIFNWR0NoYW5uZWxTZWxlY3Rv
clR5cGUgeUNoYW5uZWxTZWxlY3RvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0WUNoYW5uZWxTZWxl
Y3Rvcihjb25zdCBTVkdDaGFubmVsU2VsZWN0b3JUeXBlKTsKLQotICAgIGZsb2F0IHNjYWxlKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRTY2FsZShmbG9hdCBzY2FsZSk7Ci0KLSAgICB2aXJ0dWFsIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi0j
aWYgUExBVEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3Qg
RmxvYXRSZWN0JiBiYm94KSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFNWR0ZFRGlz
cGxhY2VtZW50TWFwKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBTVkdDaGFubmVsU2VsZWN0
b3JUeXBlIG1feENoYW5uZWxTZWxlY3RvcjsKLSAgICBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIG1f
eUNoYW5uZWxTZWxlY3RvcjsKLSAgICBmbG9hdCBtX3NjYWxlOwotICAgIFN0cmluZyBtX2luMjsK
LX07CisgICAgZW51bSBDaGFubmVsU2VsZWN0b3JUeXBlIHsKKyAgICAgICAgQ0hBTk5FTF9VTktO
T1dOID0gMCwKKyAgICAgICAgQ0hBTk5FTF9SICAgICAgID0gMSwKKyAgICAgICAgQ0hBTk5FTF9H
ICAgICAgID0gMiwKKyAgICAgICAgQ0hBTk5FTF9CICAgICAgID0gMywKKyAgICAgICAgQ0hBTk5F
TF9BICAgICAgID0gNAorICAgIH07CisgICAgCisgICAgY2xhc3MgRkVEaXNwbGFjZW1lbnRNYXAg
OiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZFRGlzcGxhY2VtZW50TWFwPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgRmlsdGVyRWZm
ZWN0KiwgY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSYsCisgICAgICAgICAgICAgICAgY29uc3Qg
Q2hhbm5lbFNlbGVjdG9yVHlwZSYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgQ2hhbm5lbFNl
bGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0WENo
YW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlKTsKKworICAgICAgICBDaGFu
bmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUpOworCisgICAgICAg
IGZsb2F0IHNjYWxlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2NhbGUoZmxvYXQgc2NhbGUp
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZHVtcCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVy
RWZmZWN0KiwgRmlsdGVyRWZmZWN0KiwgY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSYsCisgICAg
ICAgICAgICBjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlJiwgY29uc3QgZmxvYXQmKTsKKworICAg
ICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOworICAgICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBtX2luMjsKKyAgICAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFubmVsU2VsZWN0
b3I7CisgICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUgbV95Q2hhbm5lbFNlbGVjdG9yOworICAg
ICAgICBmbG9hdCBtX3NjYWxlOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRNYXBD
Zy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwQ2cubW0JKHJldmlzaW9uIDM0OTkyKQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9TVkdGRURpc3BsYWNlbWVudE1hcENnLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXAu
aCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi0jaW1wb3J0ICJXS0Rpc3BsYWNlbWVu
dE1hcEZpbHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRURp
c3BsYWNlbWVudE1hcDo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAot
ewotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdS
ZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZvcm1EYXRhID0gc3RhdGlj
X2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihzdmdGaWx0ZXItPnBsYXRm
b3JtRGF0YSgpKTsKLQotICAgIENJRmlsdGVyKiBmaWx0ZXIgPSBuaWw7Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIFtXS0Rpc3BsYWNlbWVudE1hcEZpbHRlciBjbGFzc107
Ci0gICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tEaXNwbGFjZW1lbnRN
YXBGaWx0ZXIiXTsKLSAgICBbZmlsdGVyIHNldERlZmF1bHRzXTsKLSAgICBDSUltYWdlKiBpbnB1
dEltYWdlID0gZmlsdGVyUGxhdGZvcm1EYXRhLT5pbnB1dEltYWdlKHRoaXMpOwotICAgIENJSW1h
Z2UqIGRpc3BsYWNlbWVudE1hcCA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW1hZ2VGb3JOYW1lKGlu
MigpKTsKLSAgICBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQoaW5wdXRJbWFnZSk7Ci0gICAgRkVfUVVB
UlRaX0NIRUNLX0lOUFVUKGRpc3BsYWNlbWVudE1hcCk7Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpp
bnB1dEltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmRp
c3BsYWNlbWVudE1hcCBmb3JLZXk6QCJpbnB1dERpc3BsYWNlbWVudE1hcCJdOwotICAgIFtmaWx0
ZXIgc2V0VmFsdWU6Z2V0VmVjdG9yRm9yQ2hhbm5lbCh4Q2hhbm5lbFNlbGVjdG9yKCkpIGZvcktl
eTpAImlucHV0WENoYW5uZWxTZWxlY3RvciJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6Z2V0VmVj
dG9yRm9yQ2hhbm5lbCh5Q2hhbm5lbFNlbGVjdG9yKCkpIGZvcktleTpAImlucHV0WUNoYW5uZWxT
ZWxlY3RvciJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9h
dDpzY2FsZSgpXSBmb3JLZXk6QCJpbnB1dFNjYWxlIl07Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RP
X1NVQlJFR0lPTihiYm94KTsKLSAgICBGRV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAkocmV2
aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVs
cGVyc0NnLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgTGlnaHRTb3Vy
Y2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0lWZWN0b3IqIGdldFZlY3RvckZvckNoYW5u
ZWwoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVsKTsKK0NJVmVjdG9yKiBnZXRWZWN0b3JG
b3JDaGFubmVsKENoYW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCk7CiBDSUNvbG9yKiBjaUNvbG9y
KGNvbnN0IENvbG9yJiBjKTsKIAogLy8gTGlnaHRpbmcKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbQkocmV2aXNpb24gMzQ5OTIp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwxOCArMzksMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1DSVZlY3RvciogZ2V0VmVjdG9yRm9yQ2hhbm5lbChTVkdDaGFubmVsU2VsZWN0b3JUeXBlIGNo
YW5uZWwpCitDSVZlY3RvciogZ2V0VmVjdG9yRm9yQ2hhbm5lbChDaGFubmVsU2VsZWN0b3JUeXBl
IGNoYW5uZWwpCiB7CiAgICAgc3dpdGNoIChjaGFubmVsKSB7Ci0gICAgY2FzZSBTVkdfQ0hBTk5F
TF9VTktOT1dOOgorICAgIGNhc2UgQ0hBTk5FTF9VTktOT1dOOgogICAgICAgICByZXR1cm4gbmls
OyAgICAKLSAgICBjYXNlIFNWR19DSEFOTkVMX1I6CisgICAgY2FzZSBDSEFOTkVMX1I6CiAgICAg
ICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MS4wZiBZOjAuMGYgWjowLjBmIFc6MC4w
Zl07Ci0gICAgY2FzZSBTVkdfQ0hBTk5FTF9HOgorICAgIGNhc2UgQ0hBTk5FTF9HOgogICAgICAg
ICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWToxLjBmIFo6MC4wZiBXOjAuMGZd
OwotICAgIGNhc2UgU1ZHX0NIQU5ORUxfQjoKKyAgICBjYXNlIENIQU5ORUxfQjoKICAgICAgICAg
cmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6MC4wZiBaOjEuMGYgVzowLjBmXTsK
LSAgICBjYXNlIFNWR19DSEFOTkVMX0E6CisgICAgY2FzZSBDSEFOTkVMX0E6CiAgICAgICAgIHJl
dHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjAuMGYgWjowLjBmIFc6MS4wZl07CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6
MC4wZiBaOjAuMGYgVzowLjBmXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22083</attachid>
            <date>2008-07-04 00:41:48 -0700</date>
            <delta_ts>2008-07-04 09:19:57 -0700</delta_ts>
            <desc>SVGFEFlood Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>7876</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHJldmlzaW9uIDM0OTkyKQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwyNSAr
NDgsMjUgQEAgdm9pZCBTVkdGRUZsb29kRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cik7CiB9CiAKLVNWR0ZFRmxvb2QqIFNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJFZmZlY3Qo
U1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVG
bG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25z
dAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0g
U1ZHRkVGbG9vZDo6Y3JlYXRlKGZpbHRlcik7Ci0gICAgCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1
dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gMDsKK30KIAorYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVp
bGRlciogYnVpbGRlcikKK3sKICAgICBTVkdGRUZsb29kRWxlbWVudCogbm9uQ29uc3RUaGlzID0g
Y29uc3RfY2FzdDxTVkdGRUZsb29kRWxlbWVudCo+KHRoaXMpOwotCiAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gbm9uQ29uc3RUaGlzLT5zdHlsZUZvclJlbmRlcmVyKHBhcmVudCgpLT5y
ZW5kZXJlcigpKTsKICAgICBSZW5kZXJTdHlsZSogZmlsdGVyU3R5bGUgPSBub25Db25zdFRoaXMt
PnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7CiAgICAgCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNl
dEZsb29kQ29sb3IoZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kQ29sb3IoKSk7Ci0gICAg
bV9maWx0ZXJFZmZlY3QtPnNldEZsb29kT3BhY2l0eShmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+
Zmxvb2RPcGFjaXR5KCkpOworICAgIENvbG9yIGNvbG9yID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxl
KCktPmZsb29kQ29sb3IoKTsKKyAgICBmbG9hdCBvcGFjaXR5ID0gZmlsdGVyU3R5bGUtPnN2Z1N0
eWxlKCktPmZsb29kT3BhY2l0eSgpOwogICAgIAotICAgIHBhcmVudFN0eWxlLT5kZXJlZihkb2N1
bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKLSAgICBmaWx0ZXJTdHlsZS0+ZGVyZWYoZG9jdW1lbnQo
KS0+cmVuZGVyQXJlbmEoKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3Qg
PSBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1
bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKICAgICAKLSAgICByZXR1cm4gbV9maWx0ZXJF
ZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuaAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgdmlydHVhbCB+U1ZHRkVGbG9vZEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAg
IHZpcnR1YWwgU1ZHRkVGbG9vZCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVz
b3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7
CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRUZsb29kPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAg
bXV0YWJsZSBSZWZQdHI8RkVGbG9vZD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUZsb29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRmxvb2QuY3BwCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDUwICsyMiw0OCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQotI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTVkdGRUZs
b29kLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVGbG9vZDo6U1ZHRkVGbG9vZChT
VkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikK
LSAgICAsIG1fZmxvb2RDb2xvcigpCi0gICAgLCBtX2Zsb29kT3BhY2l0eSgwLjBmKQorRkVGbG9v
ZDo6RkVGbG9vZChjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgY29uc3QgZmxvYXQmIGZsb29kT3Bh
Y2l0eSkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2Zsb29kQ29sb3IoZmxvb2RDb2xv
cikKKyAgICAsIG1fZmxvb2RPcGFjaXR5KGZsb29kT3BhY2l0eSkKIHsKIH0KIAotUGFzc1JlZlB0
cjxTVkdGRUZsb29kPiBTVkdGRUZsb29kOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRl
cikKK1Bhc3NSZWZQdHI8RkVGbG9vZD4gRkVGbG9vZDo6Y3JlYXRlKGNvbnN0IENvbG9yJiBmbG9v
ZENvbG9yLCBjb25zdCBmbG9hdCYgZmxvb2RPcGFjaXR5KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU1ZHRkVGbG9vZChmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFRmxv
b2QoZmxvb2RDb2xvciwgZmxvb2RPcGFjaXR5KSk7CiB9CiAKLUNvbG9yIFNWR0ZFRmxvb2Q6OmZs
b29kQ29sb3IoKSBjb25zdAorQ29sb3IgRkVGbG9vZDo6Zmxvb2RDb2xvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZmxvb2RDb2xvcjsKIH0KIAotdm9pZCBTVkdGRUZsb29kOjpzZXRGbG9vZENv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgRkVGbG9vZDo6c2V0Rmxvb2RDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9mbG9vZENvbG9yID0gY29sb3I7CiB9CiAKLWZsb2F0
IFNWR0ZFRmxvb2Q6OmZsb29kT3BhY2l0eSgpIGNvbnN0CitmbG9hdCBGRUZsb29kOjpmbG9vZE9w
YWNpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2Zsb29kT3BhY2l0eTsKIH0KIAotdm9pZCBT
VkdGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQordm9pZCBGRUZs
b29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQogewogICAgIG1fZmxvb2RP
cGFjaXR5ID0gZmxvb2RPcGFjaXR5OwogfQogCi1UZXh0U3RyZWFtJiBTVkdGRUZsb29kOjpleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAordm9pZCBGRUZsb29kOjph
cHBseSgpCit7Cit9CisKK3ZvaWQgRkVGbG9vZDo6ZHVtcCgpCiB7Ci0gICAgdHMgPDwgIlt0eXBl
PUZMT09EXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0
cyk7Ci0gICAgdHMgPDwgIiBbY29sb3I9IiA8PCBmbG9vZENvbG9yKCkgPDwgIl0iCi0gICAgICAg
IDw8ICIgW29wYWNpdHk9IiA8PCBmbG9vZE9wYWNpdHkoKSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRz
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMzIgKzI0
LDI5IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVk
ZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0
ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRUZsb29kIDog
cHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHRkVGbG9vZD4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgY2xhc3MgRkVGbG9v
ZCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RkVGbG9vZD4gY3JlYXRlKGNvbnN0IENvbG9yJiwgY29uc3QgZmxvYXQmKTsKIAot
ICAgIENvbG9yIGZsb29kQ29sb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldEZsb29kQ29sb3IoY29u
c3QgQ29sb3IgJik7CisgICAgICAgIENvbG9yIGZsb29kQ29sb3IoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yICYpOwogCi0gICAgZmxvYXQgZmxvb2RPcGFj
aXR5KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQpOworICAgICAgICBm
bG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRGbG9vZE9wYWNpdHko
ZmxvYXQpOwogCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKLSNpZiBQTEFURk9STShDSSkKLSAgICB2aXJ0dWFs
IENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0OwotI2Vu
ZGlmCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVGbG9vZChjb25zdCBDb2xvciYsIGNvbnN0IGZs
b2F0Jik7CiAKLXByaXZhdGU6Ci0gICAgU1ZHRkVGbG9vZChTVkdSZXNvdXJjZUZpbHRlciopOwot
Ci0gICAgQ29sb3IgbV9mbG9vZENvbG9yOwotICAgIGZsb2F0IG1fZmxvb2RPcGFjaXR5OwotfTsK
KyAgICAgICAgQ29sb3IgbV9mbG9vZENvbG9yOworICAgICAgICBmbG9hdCBtX2Zsb29kT3BhY2l0
eTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRmxvb2RDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRmxvb2RDZy5tbQkocmV2aXNpb24gMzQ5OTIp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRmxvb2RDZy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw1NCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZF
Rmxvb2QuaCIKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIlNWR0ZF
SGVscGVyc0NnLmgiCi0jaW5jbHVkZSAiQ2dTdXBwb3J0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotQ0lGaWx0ZXIqIFNWR0ZFRmxvb2Q6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYg
YmJveCkgY29uc3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVy
KCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRlclBsYXRmb3Jt
RGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKj4oc3Zn
RmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgQ0lGaWx0ZXIqIGZpbHRlcjsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldp
dGhOYW1lOkAiQ0lDb25zdGFudENvbG9yR2VuZXJhdG9yIl07Ci0gICAgW2ZpbHRlciBzZXREZWZh
dWx0c107Ci0gICAgQ0dDb2xvclJlZiBjb2xvciA9IGNnQ29sb3IoZmxvb2RDb2xvcigpKTsKLSAg
ICBDR0NvbG9yUmVmIHdpdGhBbHBoYSA9IENHQ29sb3JDcmVhdGVDb3B5V2l0aEFscGhhKGNvbG9y
LCBDR0NvbG9yR2V0QWxwaGEoY29sb3IpICogZmxvb2RPcGFjaXR5KCkpOwotICAgIENJQ29sb3Iq
IGlucHV0Q29sb3IgPSBbQ0lDb2xvciBjb2xvcldpdGhDR0NvbG9yOndpdGhBbHBoYV07Ci0gICAg
Q0dDb2xvclJlbGVhc2UoY29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKHdpdGhBbHBoYSk7Ci0g
ICAgW2ZpbHRlciBzZXRWYWx1ZTppbnB1dENvbG9yIGZvcktleTpAImlucHV0Q29sb3IiXTsKLQot
ICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQ
VVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22084</attachid>
            <date>2008-07-04 00:58:14 -0700</date>
            <delta_ts>2008-07-04 09:19:57 -0700</delta_ts>
            <desc>SVGFEGaussianBlur Rename</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>7842</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24g
MzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NiwxNyArNjYsMjMgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnBhcnNlTWFwcAogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGRUdhdXNzaWFuQmx1ciog
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBp
ZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4o
aW4xKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRTdGREZXZpYXRpb25YKHN0ZERldmlhdGlv
blgoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFN0ZERldmlhdGlvblkoc3RkRGV2aWF0aW9u
WSgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAg
IHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7IAotICAgIHJldHVy
biBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKK2Jvb2wgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpi
dWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIEZpbHRlckVmZmVjdCogaW5wdXQx
ID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgCisgICAgaWYoIWlucHV0MSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBhZGRlZEVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoaW5wdXQxLCBzdGREZXZpYXRp
b25YKCksIHN0ZERldmlhdGlvblkoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRl
ZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24gMzQ5OTIpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2b2lkIHNldFN0ZERl
dmlhdGlvbihmbG9hdCBzdGREZXZpYXRpb25YLCBmbG9hdCBzdGREZXZpYXRpb25ZKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7
Ci0gICAgICAgIHZpcnR1YWwgU1ZHRkVHYXVzc2lhbkJsdXIqIGZpbHRlckVmZmVjdChTVkdSZXNv
dXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQo
RmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAt
NDksNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBmbG9hdCwgZmxvYXQsIFN0
ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIGZsb2F0LCBmbG9hdCwgU3RkRGV2
aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRUdh
dXNzaWFuQmx1cj4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFR2F1
c3NpYW5CbHVyPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1
c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDggKzIz
LDQ4IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVk
ZSAiU1ZHRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVHYXVzc2lhbkJsdXI6OlNWR0ZFR2F1c3NpYW5CbHVyKFNW
R1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQot
ICAgICwgbV94KDAuMGYpCi0gICAgLCBtX3koMC4wZikKK0ZFR2F1c3NpYW5CbHVyOjpGRUdhdXNz
aWFuQmx1cihGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBmbG9hdCYgeCwgY29uc3QgZmxvYXQmIHkp
CisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1feCh4KQorICAg
ICwgbV95KHkpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVHYXVzc2lhbkJsdXI+IFNWR0ZFR2F1
c3NpYW5CbHVyOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8
RkVHYXVzc2lhbkJsdXI+IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiwg
Y29uc3QgZmxvYXQmIHgsIGNvbnN0IGZsb2F0JiB5KQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHRkVHYXVzc2lhbkJsdXIoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBG
RUdhdXNzaWFuQmx1cihpbiwgeCwgeSkpOwogfQogCi1mbG9hdCBTVkdGRUdhdXNzaWFuQmx1cjo6
c3RkRGV2aWF0aW9uWCgpIGNvbnN0CitmbG9hdCBGRUdhdXNzaWFuQmx1cjo6c3RkRGV2aWF0aW9u
WCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feDsKIH0KIAotdm9pZCBTVkdGRUdhdXNzaWFuQmx1
cjo6c2V0U3RkRGV2aWF0aW9uWChmbG9hdCB4KQordm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3Rk
RGV2aWF0aW9uWChmbG9hdCB4KQogewogICAgIG1feCA9IHg7CiB9CiAKLWZsb2F0IFNWR0ZFR2F1
c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKCkgY29uc3QKK2Zsb2F0IEZFR2F1c3NpYW5CbHVyOjpz
dGREZXZpYXRpb25ZKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV95OwogfQogCi12b2lkIFNWR0ZF
R2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZsb2F0IHkpCit2b2lkIEZFR2F1c3NpYW5C
bHVyOjpzZXRTdGREZXZpYXRpb25ZKGZsb2F0IHkpCiB7CiAgICAgbV95ID0geTsKIH0KIAotVGV4
dFN0cmVhbSYgU1ZHRkVHYXVzc2lhbkJsdXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0
cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseSgpCit7Cit9CisKK3Zv
aWQgRkVHYXVzc2lhbkJsdXI6OmR1bXAoKQogewotICAgIHRzIDw8ICJbdHlwZT1HQVVTU0lBTi1C
TFVSXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7
Ci0gICAgdHMgPDwgIiBbc3RkIGRldi4geD0iIDw8IHN0ZERldmlhdGlvblgoKSA8PCAiIHk9IiA8
PCBzdGREZXZpYXRpb25ZKCkgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdh
dXNzaWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMy
ICsyMywzMCBAQAogI2RlZmluZSBTVkdGRUdhdXNzaWFuQmx1cl9oCiAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U1ZHRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUdhdXNzaWFuQmx1cj4gY3JlYXRlKFNWR1Jlc291cmNl
RmlsdGVyKik7Ci0KLSAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRTdGREZXZpYXRpb25YKGZsb2F0KTsKLQotICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25z
dDsKLSAgICB2b2lkIHNldFN0ZERldmlhdGlvblkoZmxvYXQpOwotCi0gICAgdmlydHVhbCBUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lm
IFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZs
b2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRUdhdXNz
aWFuQmx1cihTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgZmxvYXQgbV94OwotICAgIGZsb2F0
IG1feTsKLX07CisgICAgY2xhc3MgRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFR2F1c3NpYW5CbHVy
PiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOworCisg
ICAgICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTdGRE
ZXZpYXRpb25YKGZsb2F0KTsKKworICAgICAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7CisKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9hdCYs
IGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAg
ICAgICAgZmxvYXQgbV94OworICAgICAgICBmbG9hdCBtX3k7CisgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RUdhdXNzaWFuQmx1ckNnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbQkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGRUdhdXNzaWFu
Qmx1ci5oIgotI2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotQ0lGaWx0ZXIqIFNWR0ZFR2F1c3NpYW5CbHVyOjpnZXRDSUZpbHRlcihjb25zdCBGbG9h
dFJlY3QmIGJib3gpIGNvbnN0Ci17Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9
IGZpbHRlcigpOwotICAgIEZFX1FVQVJUWl9TRVRVUF9JTlBVVChAIkNJR2F1c3NpYW5QeXJhbWlk
Iik7Ci0KLSAgICBmbG9hdCBpbnB1dFJhZGl1cyA9IHN0ZERldmlhdGlvblgoKTsKLSAgICBpZiAo
aW5wdXRSYWRpdXMgIT0gc3RkRGV2aWF0aW9uWSgpKSB7Ci0gICAgICAgIGZsb2F0IGlucHV0QXNw
ZWN0UmF0aW8gPSBzdGREZXZpYXRpb25YKCkvc3RkRGV2aWF0aW9uWSgpOwotICAgICAgICAvLyBG
SVhNRTogaW5wdXRBc3BlY3RSYXRpbyBvbmx5IHN1cHBvcnQgdGhlIHJhbmdlIC41IHRvIDIuMCEK
LSAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmlucHV0
QXNwZWN0UmF0aW9dIGZvcktleTpAImlucHV0QXNwZWN0UmF0aW8iXTsKLSAgICB9Ci0gICAgW2Zp
bHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmlucHV0UmFkaXVzXSBmb3JL
ZXk6QCJpbnB1dFJhZGl1cyJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJv
eCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22088</attachid>
            <date>2008-07-04 09:19:57 -0700</date>
            <delta_ts>2008-07-04 22:14:51 -0700</delta_ts>
            <desc>Combined Convolve through Gaussian</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>67955</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTAwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIxIEBACisyMDA4LTA3LTA0ICBBbGV4IE1hdGhld3MgIDxwb3NzZXNzZWRwZW5n
dWluYm9iQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBidWcgMTk4MzU6IFdlYktpdCBuZWVkcyBjcm9zcy1wbGF0Zm9ybSBmaWx0ZXIg
c3lzdGVtCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MzU+CisKKyAgICAgICAgTW9yZSBjbGFzcyByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBm
b3IgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIAorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRzKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN0cmluZ1RvQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252
b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpGRUNv
bnZvbHZlTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpkaXZpc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6
OnNldERpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6Ymlhcyk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRCaWFzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnRhcmdldE9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRUYXJnZXRPZmZzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb252b2x2ZU1hdHJpeDo6ZWRnZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252
b2x2ZU1hdHJpeDo6c2V0RWRnZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1h
dHJpeDo6a2VybmVsVW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0
cml4OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVN
YXRyaXg6OnByZXNlcnZlQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJp
eDo6c2V0UHJlc2VydmVBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4
OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpkdW1wKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4Lmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpG
RURpZmZ1c2VMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNl
TGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0aW5n
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0aW5n
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnN1cmZhY2VTY2Fs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpkaWZmdXNlQ29uc3RhbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0
aFgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRM
ZW5ndGhYKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0
TGVuZ3RoWSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVs
VW5pdExlbmd0aFkpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodFNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmR1bXApOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNw
bGFjZW1lbnRNYXA6OnhDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNw
bGFjZW1lbnRNYXA6OnNldFhDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OnlDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OnNldFlDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
RkVEaXNwbGFjZW1lbnRNYXA6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2Vt
ZW50TWFwOjpzZXRTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OmR1bXApOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxv
b2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6RkVGbG9vZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUZsb29kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6Zmxv
b2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpzZXRGbG9vZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmZsb29kT3BhY2l0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6ZHVtcCk6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjpGRUdhdXNzaWFuQmx1cik6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRp
b25YKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25Y
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUdhdXNzaWFuQmx1cjo6ZHVtcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVHYXVzc2lhbkJsdXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RURpZmZ1c2VMaWdodGluZ0NnLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1NWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW06IFJlbW92ZWQuCisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cubW06IFJlbW92
ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldFZlY3RvckZvckNoYW5uZWwpOgorCiAyMDA4LTA3LTA0ICBTaW1v
biBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHRoZSBRdC9X
aW5kb3dzIGJ1aWxkLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDM0OTkyKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwMDEsMTAgKzMwMDEsNiBAQAogCQlCMjU1
OTkzMzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OTcwRDAwRDhCODAw
QkI4MjVDIC8qIFNWR1Jlc291cmNlQ2xpcHBlckNnLmNwcCAqLzsgfTsKIAkJQjI1NTk5MzUwRDAw
RDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5OTBEMDBEOEI4MDBCQjgyNUMgLyog
U1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLzsgfTsKIAkJQjI1NTk5MzcwRDAwRDhCQTAwQkI4MjVD
IC8qIFNWR1Jlc291cmNlTWFza2VyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5QjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VN
YXNrZXJDZy5tbSAqLzsgfTsKLQkJQjI1NTk5M0MwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjU1OThBMjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdD
Zy5tbSAqLzsgfTsKLQkJQjI1NTk5M0QwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjU1OThBMzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbSAq
LzsgfTsKLQkJQjI1NTk5M0UwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE0MEQwMEQ4
QjgwMEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0gKi87IH07Ci0JCUIyNTU5OTNGMEQwMEQ4QkEw
MEJCODI1QyAvKiBTVkdGRUdhdXNzaWFuQmx1ckNnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTUwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZF
R2F1c3NpYW5CbHVyQ2cubW0gKi87IH07CiAJCUIyNTU5OTQwMEQwMEQ4QkEwMEJCODI1QyAvKiBT
VkdGRUhlbHBlcnNDZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI1NTk4QTYwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLmggKi87IH07
CiAJCUIyNTU5OTQxMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE3MEQwMEQ4Qjgw
MEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSAqLzsgfTsKIAkJQjI1NTk5NDIwRDAwRDhCQTAw
QkI4MjVDIC8qIFNWR0ZFSW1hZ2VDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE4MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUltYWdlQ2cu
bW0gKi87IH07CkBAIC03MzQ5LDEwICs3MzQ1LDYgQEAKIAkJQjI1NTk4OTcwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR1Jlc291cmNlQ2xpcHBlckNnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUIyNTU5ODk5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRl
ckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR1Jlc291
cmNlRmlsdGVyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5ODlCMEQw
MEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR1Jlc291cmNlTWFza2VyQ2cubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURp
ZmZ1c2VMaWdodGluZ0NnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEE0MEQwMEQ4
QjgwMEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU1ZHRkVGbG9vZENnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCMjU1OThBNTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUdhdXNzaWFuQmx1
ckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThBNjBEMDBEOEI4MDBC
QjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR0ZFSGVscGVyc0NnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5
OEE3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUhlbHBlcnNDZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QTgwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2VD
Zy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUltYWdl
Q2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTkzOCwxMCArMTE5MzAsNiBA
QAogCQlCMjU1OTg5RDBEMDBEOEI4MDBCQjgyNUMgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBT
VkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tICovLAotCQkJCUIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1
QyAvKiBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1tICovLAotCQkJCUIyNTU5OEE0MEQwMEQ4Qjgw
MEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0gKi8sCi0JCQkJQjI1NTk4QTUwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR0ZFR2F1c3NpYW5CbHVyQ2cubW0gKi8sCiAJCQkJQjI1NTk4QTYwRDAwRDhCODAw
QkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLmggKi8sCiAJCQkJQjI1NTk4QTcwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR0ZFSGVscGVyc0NnLm1tICovLAogCQkJCUIyNTU5OEE4MEQwMEQ4QjgwMEJCODI1
QyAvKiBTVkdGRUltYWdlQ2cubW0gKi8sCkBAIC0xNjU2NSwyMSArMTY1NTMsMTcgQEAKIAkJCQlC
MjIyNzlEMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyNTU5OTdBMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbnZvbHZl
TWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTdDMEQwMEQ4QkEwMEJCODI1QyAv
KiBTVkdGRURpZmZ1c2VMaWdodGluZy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzQzBE
MDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3OUQzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5N0UwRDAwRDhCQTAwQkI4MjVDIC8q
IFNWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTNEMEQw
MEQ4QkEwMEJCODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjc5RDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlEOTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTgw
MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUZsb29kLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIy
NTU5OTNFMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCMjIyNzlEQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGbG9vZEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5REYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY0FF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUUyMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUZ1bmNCRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlFNTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5jR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjc5RTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY1JFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyNTU5OTgyMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUdhdXNzaWFuQmx1
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzRjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZH
RkVHYXVzc2lhbkJsdXJDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUVCMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjI1NTk5NDEwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI1NTk5ODQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDM0OTky
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdGRUJsZW5kRWxlbWVudF9oCiAKICNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgog
I2luY2x1ZGUgIlNWR0ZFQmxlbmQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaCIKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5oCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQotI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdGRUNvbG9yTWF0cml4
LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkocmV2
aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKLSNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb21wb25lbnRUcmFu
c2Zlci5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkocmV2aXNpb24g
MzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnRfaAog
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIkZpbHRl
ckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdGRUNvbXBvc2l0ZS5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDM0OTkyKQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJTVkdDb2xvci5oIgotI2luY2x1ZGUgIlNWR0ZFTGlnaHRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgpAQCAtNzUsMzUgKzc0LDMxIEBAIHZvaWQg
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZU0KIAogU1ZHRmlsdGVyRWZmZWN0KiBT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRl
ciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpIAotICAgICAgICBt
X2ZpbHRlckVmZmVjdCA9IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyKTsKLQot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNl
dERpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3Qt
PnNldFN1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNl
dEtlcm5lbFVuaXRMZW5ndGhYKGtlcm5lbFVuaXRMZW5ndGhYKCkpOwotICAgIG1fZmlsdGVyRWZm
ZWN0LT5zZXRLZXJuZWxVbml0TGVuZ3RoWShrZXJuZWxVbml0TGVuZ3RoWSgpKTsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAorYm9vbCBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgRmls
dGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICAK
KyAgICBpZighaW5wdXQxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50KiBub25Db25zdFRoaXMgPSBjb25zdF9jYXN0PFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudCo+KHRoaXMpOwotCiAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlID0gbm9uQ29uc3RUaGlzLT5zdHlsZUZvclJlbmRlcmVyKHBhcmVudCgpLT5yZW5kZXJlcigp
KTsKICAgICBSZW5kZXJTdHlsZSogZmlsdGVyU3R5bGUgPSBub25Db25zdFRoaXMtPnJlc29sdmVT
dHlsZShwYXJlbnRTdHlsZSk7CisgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+c3ZnU3R5
bGUoKS0+bGlnaHRpbmdDb2xvcigpOwogICAgIAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRMaWdo
dGluZ0NvbG9yKGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5saWdodGluZ0NvbG9yKCkpOwotICAg
IHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0gCi0gICAgcGFy
ZW50U3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwotICAgIGZpbHRlclN0
eWxlLT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBj
b2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgdXBkYXRlTGlnaHRzKCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQo
KSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKICAgICAKLSAgICB1cGRhdGVMaWdodHMoKTsKLSAg
ICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojp1cGRhdGVMaWdodHMoKSBjb25zdAorTGln
aHRTb3VyY2UqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRzKCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICByZXR1cm47Ci0gICAgCiAg
ICAgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gMDsKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxk
KCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpmZURpc3RhbnRMaWdodFRhZykgfHwKQEAgLTExNSw3ICsxMTAsNyBAQAogICAg
ICAgICB9CiAgICAgfQogCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldExpZ2h0U291cmNlKGxpZ2h0
KTsKKyAgICByZXR1cm4gbGlnaHQ7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMs
MTEgQEAKICNkZWZpbmUgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50X2gKIAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJTVkdGRUxpZ2h0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgU1ZHRkVEaWZmdXNlTGlnaHRpbmc7Cisg
ICAgY2xhc3MgRkVEaWZmdXNlTGlnaHRpbmc7CiAgICAgY2xhc3MgU1ZHQ29sb3I7CiAKICAgICBj
bGFzcyBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCkBAIC0zNyw2ICszOCw3IEBACiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2
aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikg
Y29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDgsOSArNTAsOSBAQAogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9h
dCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dCwgZmxvYXQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCiAK
LSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVEaWZmdXNlTGlnaHRpbmc+IG1fZmlsdGVyRWZm
ZWN0OworICAgICAgICBMaWdodFNvdXJjZSogdXBkYXRlTGlnaHRzKCkgY29uc3Q7CiAgICAgICAg
IAotICAgICAgICB2b2lkIHVwZGF0ZUxpZ2h0cygpIGNvbnN0OworICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxGRURpZmZ1c2VMaWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKIAog
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3hD
aGFubmVsU2VsZWN0b3IoU1ZHX0NIQU5ORUxfQSkKLSAgICAsIG1feUNoYW5uZWxTZWxlY3RvcihT
VkdfQ0hBTk5FTF9BKQorICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKENIQU5ORUxfQSkKKyAgICAs
IG1feUNoYW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCiAgICAgLCBtX3NjYWxlKDAuMGYpCiAgICAg
LCBtX2ZpbHRlckVmZmVjdCgwKQogewpAQCAtNDYsMTggKzQ2LDE4IEBACiBBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGludCwgRW51bWVy
YXRpb24sIGVudW1lcmF0aW9uLCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBT
VkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIG1feUNoYW5uZWxTZWxlY3RvcikKIEFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgZmxv
YXQsIE51bWJlciwgbnVtYmVyLCBTY2FsZSwgc2NhbGUsIFNWR05hbWVzOjpzY2FsZUF0dHIsIG1f
c2NhbGUpCiAKLVNWR0NoYW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50OjpzdHJpbmdUb0NoYW5uZWwoY29uc3QgU3RyaW5nJiBrZXkpCitDaGFubmVsU2VsZWN0b3JU
eXBlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0
cmluZyYga2V5KQogewogICAgIGlmIChrZXkgPT0gIlIiKQotICAgICAgICByZXR1cm4gU1ZHX0NI
QU5ORUxfUjsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfUjsKICAgICBlbHNlIGlmIChrZXkgPT0g
IkciKQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfRzsKKyAgICAgICAgcmV0dXJuIENIQU5O
RUxfRzsKICAgICBlbHNlIGlmIChrZXkgPT0gIkIiKQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5O
RUxfQjsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfQjsKICAgICBlbHNlIGlmIChrZXkgPT0gIkEi
KQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfQTsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxf
QTsKIAotICAgIHJldHVybiBTVkdfQ0hBTk5FTF9VTktOT1dOOworICAgIHJldHVybiBDSEFOTkVM
X1VOS05PV047CiB9CiAKIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCkBAIC03NywxOSArNzcsMjYgQEAK
ICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVEaXNwbGFjZW1lbnRNYXAqIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIp
IGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6Zmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRURpc3BsYWNlbWVu
dE1hcDo6Y3JlYXRlKGZpbHRlcik7Ci0KLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0WENoYW5uZWxT
ZWxlY3RvcigoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSkgeENoYW5uZWxTZWxlY3RvcigpKTsKLSAg
ICBtX2ZpbHRlckVmZmVjdC0+c2V0WUNoYW5uZWxTZWxlY3RvcigoU1ZHQ2hhbm5lbFNlbGVjdG9y
VHlwZSkgeUNoYW5uZWxTZWxlY3RvcigpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4x
KCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbjIoaW4yKCkpOwotICAgIG1fZmlsdGVyRWZm
ZWN0LT5zZXRTY2FsZShzY2FsZSgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KIAotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5n
ZXQoKSk7Ci0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgpOworYm9vbCBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOwor
ICAgIAorICAgIGlmKCFpbnB1dDEgfHwgIWlucHV0MikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZF
RGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PENoYW5u
ZWxTZWxlY3RvclR5cGU+ICh4Q2hhbm5lbFNlbGVjdG9yKCkpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDaGFubmVsU2VsZWN0b3JUeXBlPiAo
eUNoYW5uZWxTZWxlY3RvcigpKSwgc2NhbGUoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgp
LCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCiB9
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNp
b24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDExIEBACiAgICAgICAgIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwog
ICAgICAgICB2aXJ0dWFsIH5TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoKTsKICAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChj
b25zdCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIENoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5n
VG9DaGFubmVsKGNvbnN0IFN0cmluZyYpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFs
IFNWR0ZFRGlzcGxhY2VtZW50TWFwKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIq
KTsKICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDYsNyAr
NDcsNyBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LCBpbnQsIGludCwgWUNoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxT
ZWxlY3RvcikKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIGZsb2F0LCBTY2FsZSwgc2NhbGUpCiAKLSAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVEaXNwbGFjZW1lbnRNYXA+IG1fZmlsdGVyRWZmZWN0Owor
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRURpc3BsYWNlbWVudE1hcD4gbV9maWx0ZXJFZmZlY3Q7
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50LmNwcAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDI1ICs0OCwyNSBAQAogICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiB9CiAKLVNWR0ZFRmxvb2QqIFNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVGbG9vZEVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewot
ICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVG
bG9vZDo6Y3JlYXRlKGZpbHRlcik7Ci0gICAgCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1f
ZmlsdGVyRWZmZWN0LmdldCgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gMDsKK30KIAorYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciog
YnVpbGRlcikKK3sKICAgICBTVkdGRUZsb29kRWxlbWVudCogbm9uQ29uc3RUaGlzID0gY29uc3Rf
Y2FzdDxTVkdGRUZsb29kRWxlbWVudCo+KHRoaXMpOwotCiAgICAgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlID0gbm9uQ29uc3RUaGlzLT5zdHlsZUZvclJlbmRlcmVyKHBhcmVudCgpLT5yZW5kZXJl
cigpKTsKICAgICBSZW5kZXJTdHlsZSogZmlsdGVyU3R5bGUgPSBub25Db25zdFRoaXMtPnJlc29s
dmVTdHlsZShwYXJlbnRTdHlsZSk7CiAgICAgCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEZsb29k
Q29sb3IoZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kQ29sb3IoKSk7Ci0gICAgbV9maWx0
ZXJFZmZlY3QtPnNldEZsb29kT3BhY2l0eShmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+Zmxvb2RP
cGFjaXR5KCkpOworICAgIENvbG9yIGNvbG9yID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZs
b29kQ29sb3IoKTsKKyAgICBmbG9hdCBvcGFjaXR5ID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCkt
PmZsb29kT3BhY2l0eSgpOwogICAgIAotICAgIHBhcmVudFN0eWxlLT5kZXJlZihkb2N1bWVudCgp
LT5yZW5kZXJBcmVuYSgpKTsKLSAgICBmaWx0ZXJTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVu
ZGVyQXJlbmEoKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRUZs
b29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwg
YWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKICAgICAKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3Qu
Z2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
Rmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuaAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTQgQEAKICAgICAgICAgdmlydHVhbCB+U1ZH
RkVGbG9vZEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRkVGbG9vZCogZmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZH
RmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdG
RUZsb29kPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVGbG9vZD4g
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNDk5MikK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDE3ICs2NiwyMyBAQAogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGRUdhdXNz
aWFuQmx1ciogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QK
IHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNW
R0ZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAKLSAgICBtX2ZpbHRlckVmZmVj
dC0+c2V0SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRTdGREZXZpYXRpb25YKHN0
ZERldmlhdGlvblgoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFN0ZERldmlhdGlvblkoc3Rk
RGV2aWF0aW9uWSgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsK
K30KIAotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7IAot
ICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKK2Jvb2wgU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIEZpbHRlckVmZmVj
dCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgCisgICAgaWYo
IWlucHV0MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoaW5wdXQxLCBz
dGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3Vs
dCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQog
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24g
MzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksOCBAQAogICAgICAgICB2b2lkIHNldFN0ZERldmlhdGlvbihm
bG9hdCBzdGREZXZpYXRpb25YLCBmbG9hdCBzdGREZXZpYXRpb25ZKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAg
IHZpcnR1YWwgU1ZHRkVHYXVzc2lhbkJsdXIqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRl
ciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0
KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVp
bGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDksNyArNTAs
NyBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LCBmbG9hdCwgZmxvYXQsIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgp
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQsIGZsb2F0LCBmbG9hdCwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKIAot
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRUdhdXNzaWFuQmx1cj4gbV9maWx0ZXJFZmZlY3Q7
CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFR2F1c3NpYW5CbHVyPiBtX2ZpbHRlckVmZmVjdDsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMzQ5
OTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJG
aWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29u
dm9sdmVNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDM0OTkyKQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsMTM3ICsyMiwxMjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNU
ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJpeC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR0ZFQ29udm9sdmVNYXRyaXg6OlNWR0ZFQ29udm9sdmVNYXRyaXgoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAg
LCBtX2tlcm5lbFNpemUoKQotICAgICwgbV9kaXZpc29yKDAuMGYpCi0gICAgLCBtX2JpYXMoMC4w
ZikKLSAgICAsIG1fdGFyZ2V0T2Zmc2V0KCkKLSAgICAsIG1fZWRnZU1vZGUoU1ZHX0VER0VNT0RF
X1VOS05PV04pCi0gICAgLCBtX2tlcm5lbFVuaXRMZW5ndGgoKQotICAgICwgbV9wcmVzZXJ2ZUFs
cGhhKGZhbHNlKQorRkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeChGaWx0ZXJFZmZl
Y3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3QgRmxvYXRTaXplJiBrZXJuZWxTaXplLCAK
KyAgICBjb25zdCBmbG9hdCYgZGl2aXNvciwgY29uc3QgZmxvYXQmIGJpYXMsIGNvbnN0IEZsb2F0
U2l6ZSYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBFZGdlTW9kZVR5cGUmIGVkZ2VNb2RlLAorICAgIGNv
bnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29u
c3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAg
ICAsIG1faW4oaW4pCisgICAgLCBtX2luMihpbjIpCisgICAgLCBtX2tlcm5lbFNpemUoa2VybmVs
U2l6ZSkKKyAgICAsIG1fZGl2aXNvcihkaXZpc29yKQorICAgICwgbV9iaWFzKGJpYXMpCisgICAg
LCBtX3RhcmdldE9mZnNldCh0YXJnZXRPZmZzZXQpCisgICAgLCBtX2VkZ2VNb2RlKGVkZ2VNb2Rl
KQorICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoKGtlcm5lbFVuaXRMZW5ndGgpCisgICAgLCBtX3By
ZXNlcnZlQWxwaGEocHJlc2VydmVBbHBoYSkKKyAgICAsIG1fa2VybmVsTWF0cml4KGtlcm5lbE1h
dHJpeCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0cml4PiBTVkdGRUNvbnZv
bHZlTWF0cml4OjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8
RkVDb252b2x2ZU1hdHJpeD4gRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKEZpbHRlckVmZmVjdCog
aW4sIEZpbHRlckVmZmVjdCogaW4yLCBjb25zdCBGbG9hdFNpemUmIGtlcm5lbFNpemUsIAorICAg
IGNvbnN0IGZsb2F0JiBkaXZpc29yLCBjb25zdCBmbG9hdCYgYmlhcywgY29uc3QgRmxvYXRTaXpl
JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEVkZ2VNb2RlVHlwZSYgZWRnZU1vZGUsIAorICAgIGNvbnN0
IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3Qg
VmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U1ZHRkVDb252b2x2ZU1hdHJpeChmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZF
Q29udm9sdmVNYXRyaXgoaW4sIGluMiwga2VybmVsU2l6ZSwgZGl2aXNvciwgYmlhcywgdGFyZ2V0
T2Zmc2V0LCBlZGdlTW9kZSwga2VybmVsVW5pdExlbmd0aCwKKyAgICAgICAgcHJlc2VydmVBbHBo
YSwga2VybmVsTWF0cml4KSk7CiB9CiAKLUZsb2F0U2l6ZSBTVkdGRUNvbnZvbHZlTWF0cml4Ojpr
ZXJuZWxTaXplKCkgY29uc3QKKworRmxvYXRTaXplIEZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbFNp
emUoKSBjb25zdAogewogICAgIHJldHVybiBtX2tlcm5lbFNpemU7CiB9CiAKLXZvaWQgU1ZHRkVD
b252b2x2ZU1hdHJpeDo6c2V0S2VybmVsU2l6ZShGbG9hdFNpemUga2VybmVsU2l6ZSkKK3ZvaWQg
RkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsU2l6ZShGbG9hdFNpemUga2VybmVsU2l6ZSkKIHsK
ICAgICBtX2tlcm5lbFNpemUgPSBrZXJuZWxTaXplOyAKIH0KIAotY29uc3QgVmVjdG9yPGZsb2F0
PiYgU1ZHRkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxmbG9h
dD4mIEZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fa2Vy
bmVsTWF0cml4OyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWwoY29u
c3QgVmVjdG9yPGZsb2F0PiYga2VybmVsKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJu
ZWwoY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsKQogewogICAgIG1fa2VybmVsTWF0cml4ID0g
a2VybmVsOyAKIH0KIAotZmxvYXQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6ZGl2aXNvcigpIGNvbnN0
CitmbG9hdCBGRUNvbnZvbHZlTWF0cml4OjpkaXZpc29yKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9kaXZpc29yOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXREaXZpc29yKGZs
b2F0IGRpdmlzb3IpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldERpdmlzb3IoZmxvYXQgZGl2
aXNvcikKIHsKICAgICBtX2Rpdmlzb3IgPSBkaXZpc29yOyAKIH0KIAotZmxvYXQgU1ZHRkVDb252
b2x2ZU1hdHJpeDo6YmlhcygpIGNvbnN0CitmbG9hdCBGRUNvbnZvbHZlTWF0cml4OjpiaWFzKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9iaWFzOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0
cml4OjpzZXRCaWFzKGZsb2F0IGJpYXMpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldEJpYXMo
ZmxvYXQgYmlhcykKIHsKICAgICBtX2JpYXMgPSBiaWFzOyAKIH0KIAotRmxvYXRTaXplIFNWR0ZF
Q29udm9sdmVNYXRyaXg6OnRhcmdldE9mZnNldCgpIGNvbnN0CitGbG9hdFNpemUgRkVDb252b2x2
ZU1hdHJpeDo6dGFyZ2V0T2Zmc2V0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90YXJnZXRPZmZz
ZXQ7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldFRhcmdldE9mZnNldChGbG9h
dFNpemUgdGFyZ2V0T2Zmc2V0KQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRUYXJnZXRPZmZz
ZXQoRmxvYXRTaXplIHRhcmdldE9mZnNldCkKIHsKICAgICBtX3RhcmdldE9mZnNldCA9IHRhcmdl
dE9mZnNldDsgCiB9CiAKLVNWR0VkZ2VNb2RlVHlwZSBTVkdGRUNvbnZvbHZlTWF0cml4OjplZGdl
TW9kZSgpIGNvbnN0CitFZGdlTW9kZVR5cGUgRkVDb252b2x2ZU1hdHJpeDo6ZWRnZU1vZGUoKSBj
b25zdAogewogICAgIHJldHVybiBtX2VkZ2VNb2RlOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZl
TWF0cml4OjpzZXRFZGdlTW9kZShTVkdFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCit2b2lkIEZFQ29u
dm9sdmVNYXRyaXg6OnNldEVkZ2VNb2RlKEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKIHsKICAgICBt
X2VkZ2VNb2RlID0gZWRnZU1vZGU7IAogfQogCi1GbG9hdFBvaW50IFNWR0ZFQ29udm9sdmVNYXRy
aXg6Omtlcm5lbFVuaXRMZW5ndGgoKSBjb25zdAorRmxvYXRQb2ludCBGRUNvbnZvbHZlTWF0cml4
OjprZXJuZWxVbml0TGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVu
Z3RoOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxVbml0TGVuZ3Ro
KEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0
S2VybmVsVW5pdExlbmd0aChGbG9hdFBvaW50IGtlcm5lbFVuaXRMZW5ndGgpCiB7CiAgICAgbV9r
ZXJuZWxVbml0TGVuZ3RoID0ga2VybmVsVW5pdExlbmd0aDsgCiB9CiAKLWJvb2wgU1ZHRkVDb252
b2x2ZU1hdHJpeDo6cHJlc2VydmVBbHBoYSgpIGNvbnN0Citib29sIEZFQ29udm9sdmVNYXRyaXg6
OnByZXNlcnZlQWxwaGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3ByZXNlcnZlQWxwaGE7IAog
fQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldFByZXNlcnZlQWxwaGEoYm9vbCBwcmVz
ZXJ2ZUFscGhhKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKGJvb2wg
cHJlc2VydmVBbHBoYSkKIHsKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOyAK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNWR0Vk
Z2VNb2RlVHlwZSB0KQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjphcHBseSgpCit7Cit9CisKK3Zv
aWQgRkVDb252b2x2ZU1hdHJpeDo6ZHVtcCgpCiB7Ci0gICAgc3dpdGNoICh0KQotICAgIHsKLSAg
ICAgICAgY2FzZSBTVkdfRURHRU1PREVfVU5LTk9XTjoKLSAgICAgICAgICAgIHRzIDw8ICJVTktO
T1dOIjticmVhazsKLSAgICAgICAgY2FzZSBTVkdfRURHRU1PREVfRFVQTElDQVRFOgotICAgICAg
ICAgICAgdHMgPDwgIkRVUExJQ0FURSI7YnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0VER0VNT0RF
X1dSQVA6Ci0gICAgICAgICAgICB0cyA8PCAiV1JBUCI7IGJyZWFrOwotICAgICAgICBjYXNlIFNW
R19FREdFTU9ERV9OT05FOgotICAgICAgICAgICAgdHMgPDwgIk5PTkUiOyBicmVhazsKLSAgICB9
Ci0gICAgcmV0dXJuIHRzOwotfQotCi1UZXh0U3RyZWFtJiBTVkdGRUNvbnZvbHZlTWF0cml4Ojpl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIHRzIDw8
ICJbdHlwZT1DT05WT0xWRS1NQVRSSVhdICI7Ci0gICAgU1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKHRzKTsKLSAgICB0cyA8PCAiIFtvcmRlciAiIDw8IG1fa2VybmVsU2l6
ZSA8PCAiXSIKLSAgICAgICAgPDwgIiBba2VybmVsIG1hdHJpeD0iIDw8IG1fa2VybmVsTWF0cml4
ICA8PCAiXSIKLSAgICAgICAgPDwgIiBbZGl2aXNvcj0iIDw8IG1fZGl2aXNvciA8PCAiXSIKLSAg
ICAgICAgPDwgIiBbYmlhcz0iIDw8IG1fYmlhcyA8PCAiXSIKLSAgICAgICAgPDwgIiBbdGFyZ2V0
ICIgPDwgbV90YXJnZXRPZmZzZXQgPDwgIl0iCi0gICAgICAgIDw8ICIgW2VkZ2UgbW9kZT0iIDw8
IG1fZWRnZU1vZGUgPDwgIl0iCi0gICAgICAgIDw8ICIgW2tlcm5lbCB1bml0IGxlbmd0aCAiIDw8
IG1fa2VybmVsVW5pdExlbmd0aCA8PCAiXSIKLSAgICAgICAgPDwgIiBbcHJlc2VydmUgYWxwaGE9
IiA8PCBtX3ByZXNlcnZlQWxwaGEgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0KIAogfTsgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVDb252b2x2ZU1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw1OSArMjMsNjkgQEAKICNkZWZpbmUgU1ZHRkVDb252b2x2ZU1hdHJpeF9oCiAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVy
RWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU1ZHRWRnZU1vZGVUeXBlIHsKLSAgICBTVkdf
RURHRU1PREVfVU5LTk9XTiAgID0gMCwKLSAgICBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMSwK
LSAgICBTVkdfRURHRU1PREVfV1JBUCAgICAgID0gMiwKLSAgICBTVkdfRURHRU1PREVfTk9ORSAg
ICAgID0gMwotfTsKLQotY2xhc3MgU1ZHRkVDb252b2x2ZU1hdHJpeCA6IHB1YmxpYyBTVkdGaWx0
ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFQ29udm9sdmVN
YXRyaXg+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgRmxvYXRTaXplIGtlcm5l
bFNpemUoKSBjb25zdDsKLSAgICB2b2lkIHNldEtlcm5lbFNpemUoRmxvYXRTaXplKTsKLQotICAg
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVs
KGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGZsb2F0IGRpdmlzb3IoKSBjb25zdDsKLSAg
ICB2b2lkIHNldERpdmlzb3IoZmxvYXQpOwotCi0gICAgZmxvYXQgYmlhcygpIGNvbnN0OwotICAg
IHZvaWQgc2V0QmlhcyhmbG9hdCk7Ci0KLSAgICBGbG9hdFNpemUgdGFyZ2V0T2Zmc2V0KCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRUYXJnZXRPZmZzZXQoRmxvYXRTaXplKTsKLQotICAgIFNWR0VkZ2VN
b2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RWRnZU1vZGUoU1ZHRWRnZU1v
ZGVUeXBlKTsKLQotICAgIEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCgpIGNvbnN0OwotICAg
IHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aChGbG9hdFBvaW50KTsKLQotICAgIGJvb2wgcHJlc2Vy
dmVBbHBoYSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJlc2VydmVBbHBoYShib29sKTsKLQotICAg
IHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVDb252b2x2ZU1hdHJpeChTVkdSZXNvdXJjZUZp
bHRlciopOwotCi0gICAgRmxvYXRTaXplIG1fa2VybmVsU2l6ZTsKLSAgICBmbG9hdCBtX2Rpdmlz
b3I7Ci0gICAgZmxvYXQgbV9iaWFzOwotICAgIEZsb2F0U2l6ZSBtX3RhcmdldE9mZnNldDsKLSAg
ICBTVkdFZGdlTW9kZVR5cGUgbV9lZGdlTW9kZTsKLSAgICBGbG9hdFBvaW50IG1fa2VybmVsVW5p
dExlbmd0aDsKLSAgICBib29sIG1fcHJlc2VydmVBbHBoYTsKLSAgICBWZWN0b3I8ZmxvYXQ+IG1f
a2VybmVsTWF0cml4OyAvLyBtYXliZSBzaG91bGQgYmUgYSByZWFsIG1hdHJpeD8KLX07CisgICAg
ZW51bSBFZGdlTW9kZVR5cGUgeworICAgICAgICBFREdFTU9ERV9VTktOT1dOICAgPSAwLAorICAg
ICAgICBFREdFTU9ERV9EVVBMSUNBVEUgPSAxLAorICAgICAgICBFREdFTU9ERV9XUkFQICAgICAg
PSAyLAorICAgICAgICBFREdFTU9ERV9OT05FICAgICAgPSAzCisgICAgfTsKKworICAgIGNsYXNz
IEZFQ29udm9sdmVNYXRyaXggOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShGaWx0ZXJF
ZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBjb25zdCBGbG9hdFNpemUmLCAKKyAgICAgICAgICAgICAg
ICBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRWRn
ZU1vZGVUeXBlJiwgY29uc3QgRmxvYXRQb2ludCYsCisgICAgICAgICAgICAgICAgYm9vbCwgY29u
c3QgVmVjdG9yPGZsb2F0PiYpOworCisgICAgICAgIEZsb2F0U2l6ZSBrZXJuZWxTaXplKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsU2l6ZShGbG9hdFNpemUpOworCisgICAgICAgIGNv
bnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldEtlcm5l
bChjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICAgICAgZmxvYXQgZGl2aXNvcigpIGNvbnN0
OworICAgICAgICB2b2lkIHNldERpdmlzb3IoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGJpYXMo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRCaWFzKGZsb2F0KTsKKworICAgICAgICBGbG9hdFNp
emUgdGFyZ2V0T2Zmc2V0KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VGFyZ2V0T2Zmc2V0KEZs
b2F0U2l6ZSk7CisKKyAgICAgICAgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0RWRnZU1vZGUoRWRnZU1vZGVUeXBlKTsKKworICAgICAgICBGbG9hdFBvaW50
IGtlcm5lbFVuaXRMZW5ndGgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWxVbml0TGVu
Z3RoKEZsb2F0UG9pbnQpOworCisgICAgICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0Owor
ICAgICAgICB2b2lkIHNldFByZXNlcnZlQWxwaGEoYm9vbCk7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisKKyAgICBwcml2YXRl
OgorICAgICAgICBGRUNvbnZvbHZlTWF0cml4KEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCos
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAg
ICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEVkZ2VNb2RlVHlwZSYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBib29sLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICAgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjI7Cisg
ICAgICAgIEZsb2F0U2l6ZSBtX2tlcm5lbFNpemU7CisgICAgICAgIGZsb2F0IG1fZGl2aXNvcjsK
KyAgICAgICAgZmxvYXQgbV9iaWFzOworICAgICAgICBGbG9hdFNpemUgbV90YXJnZXRPZmZzZXQ7
CisgICAgICAgIEVkZ2VNb2RlVHlwZSBtX2VkZ2VNb2RlOworICAgICAgICBGbG9hdFBvaW50IG1f
a2VybmVsVW5pdExlbmd0aDsKKyAgICAgICAgYm9vbCBtX3ByZXNlcnZlQWxwaGE7CisgICAgICAg
IFZlY3RvcjxmbG9hdD4gbV9rZXJuZWxNYXRyaXg7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsOTggKzI0LDk5IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQogI2luY2x1ZGUgIlNWR0xpZ2h0U291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRkVEaWZmdXNl
TGlnaHRpbmcuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nKFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwg
bV9saWdodGluZ0NvbG9yKCkKLSAgICAsIG1fc3VyZmFjZVNjYWxlKDAuMGYpCi0gICAgLCBtX2Rp
ZmZ1c2VDb25zdGFudCgwLjBmKQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWCgwLjBmKQotICAg
ICwgbV9rZXJuZWxVbml0TGVuZ3RoWSgwLjBmKQotICAgICwgbV9saWdodFNvdXJjZSgwKQorRkVE
aWZmdXNlTGlnaHRpbmc6OkZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlckVmZmVjdCogaW4gLCBjb25z
dCBDb2xvciYgbGlnaHRpbmdDb2xvciwgY29uc3QgZmxvYXQmIHN1cmZhY2VTY2FsZSwKKyAgICBj
b25zdCBmbG9hdCYgZGlmZnVzZUNvbnN0YW50LCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0
aFgsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWSwgTGlnaHRTb3VyY2UqIGxpZ2h0U291
cmNlKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX2xpZ2h0
aW5nQ29sb3IobGlnaHRpbmdDb2xvcikKKyAgICAsIG1fc3VyZmFjZVNjYWxlKHN1cmZhY2VTY2Fs
ZSkKKyAgICAsIG1fZGlmZnVzZUNvbnN0YW50KGRpZmZ1c2VDb25zdGFudCkKKyAgICAsIG1fa2Vy
bmVsVW5pdExlbmd0aFgoa2VybmVsVW5pdExlbmd0aFgpCisgICAgLCBtX2tlcm5lbFVuaXRMZW5n
dGhZKGtlcm5lbFVuaXRMZW5ndGhZKQorICAgICwgbV9saWdodFNvdXJjZShsaWdodFNvdXJjZSkK
IHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZz4gU1ZHRkVEaWZmdXNlTGln
aHRpbmc6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1JlZlB0cjxGRURp
ZmZ1c2VMaWdodGluZz4gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGlu
ICwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsCisgICAgY29uc3QgZmxvYXQmIHN1cmZhY2VT
Y2FsZSwgY29uc3QgZmxvYXQmIGRpZmZ1c2VDb25zdGFudCwgY29uc3QgZmxvYXQmIGtlcm5lbFVu
aXRMZW5ndGhYLAorICAgIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWSwgTGlnaHRTb3Vy
Y2UqIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVEaWZmdXNl
TGlnaHRpbmcoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRURpZmZ1c2VMaWdo
dGluZyhpbiwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIGtl
cm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpKTsKIH0KIAot
U1ZHRkVEaWZmdXNlTGlnaHRpbmc6On5TVkdGRURpZmZ1c2VMaWdodGluZygpCitGRURpZmZ1c2VM
aWdodGluZzo6fkZFRGlmZnVzZUxpZ2h0aW5nKCkKIHsKIH0KIAotQ29sb3IgU1ZHRkVEaWZmdXNl
TGlnaHRpbmc6OmxpZ2h0aW5nQ29sb3IoKSBjb25zdAorQ29sb3IgRkVEaWZmdXNlTGlnaHRpbmc6
OmxpZ2h0aW5nQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0aW5nQ29sb3I7CiB9
CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29s
b3ImIGxpZ2h0aW5nQ29sb3IpCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodGluZ0Nv
bG9yKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKQogewogICAgIG1fbGlnaHRpbmdDb2xvciA9
IGxpZ2h0aW5nQ29sb3I7CiB9CiAKLWZsb2F0IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzdXJmYWNl
U2NhbGUoKSBjb25zdCAKK2Zsb2F0IEZFRGlmZnVzZUxpZ2h0aW5nOjpzdXJmYWNlU2NhbGUoKSBj
b25zdCAKIHsKICAgICByZXR1cm4gbV9zdXJmYWNlU2NhbGU7CiB9CiAKLXZvaWQgU1ZHRkVEaWZm
dXNlTGlnaHRpbmc6OnNldFN1cmZhY2VTY2FsZShmbG9hdCBzdXJmYWNlU2NhbGUpCit2b2lkIEZF
RGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUoZmxvYXQgc3VyZmFjZVNjYWxlKQogewog
ICAgIG1fc3VyZmFjZVNjYWxlID0gc3VyZmFjZVNjYWxlOwogfQogCi1mbG9hdCBTVkdGRURpZmZ1
c2VMaWdodGluZzo6ZGlmZnVzZUNvbnN0YW50KCkgY29uc3QKK2Zsb2F0IEZFRGlmZnVzZUxpZ2h0
aW5nOjpkaWZmdXNlQ29uc3RhbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2RpZmZ1c2VDb25z
dGFudDsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlmZnVzZUNvbnN0YW50
KGZsb2F0IGRpZmZ1c2VDb25zdGFudCkKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1
c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29uc3RhbnQpCiB7CiAgICAgbV9kaWZmdXNlQ29uc3Rh
bnQgPSBkaWZmdXNlQ29uc3RhbnQ7CiB9CiAKLWZsb2F0IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpr
ZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0CitmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6a2VybmVs
VW5pdExlbmd0aFgoKSBjb25zdAogewogICAgIHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhYOwog
fQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9h
dCBrZXJuZWxVbml0TGVuZ3RoWCkKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVu
aXRMZW5ndGhYKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKQogewogICAgIG1fa2VybmVsVW5pdExl
bmd0aFggPSBrZXJuZWxVbml0TGVuZ3RoWDsKIH0KIAotZmxvYXQgU1ZHRkVEaWZmdXNlTGlnaHRp
bmc6Omtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QKK2Zsb2F0IEZFRGlmZnVzZUxpZ2h0aW5nOjpr
ZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0
aFk7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZ
KGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2Vy
bmVsVW5pdExlbmd0aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCiB7CiAgICAgbV9rZXJuZWxV
bml0TGVuZ3RoWSA9IGtlcm5lbFVuaXRMZW5ndGhZOwogfQogCi1jb25zdCBMaWdodFNvdXJjZSog
U1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0U291cmNlKCkgY29uc3QKK2NvbnN0IExpZ2h0U291
cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJldHVy
biBtX2xpZ2h0U291cmNlLmdldCgpOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpz
ZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UpCit2b2lkIEZFRGlmZnVzZUxp
Z2h0aW5nOjpzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UpCiB7ICAgIAog
ICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVE
aWZmdXNlTGlnaHRpbmc6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNv
bnN0Cit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVEaWZm
dXNlTGlnaHRpbmc6OmR1bXAoKQogewotICAgIHRzIDw8ICJbdHlwZT1ESUZGVVNFLUxJR0hUSU5H
XSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0g
ICAgdHMgPDwgIiBbc3VyZmFjZSBzY2FsZT0iIDw8IG1fc3VyZmFjZVNjYWxlIDw8ICJdIgotICAg
ICAgICA8PCAiIFtkaWZmdXNlIGNvbnN0YW50PSIgPDwgbV9kaWZmdXNlQ29uc3RhbnQgPDwgIl0i
Ci0gICAgICAgIDw8ICIgW2tlcm5lbCB1bml0IGxlbmd0aCAiIDw8IG1fa2VybmVsVW5pdExlbmd0
aFggPDwgIiwgIiA8PCBtX2tlcm5lbFVuaXRMZW5ndGhZIDw8ICJdIjsKLSAgICByZXR1cm4gdHM7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHJldmlzaW9uIDM0OTky
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw1MSArMjQsNTEgQEAKIAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIlNWR0Zp
bHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIExpZ2h0U291cmNlOworICAgIGNsYXNzIExpZ2h0U291cmNlOwogCi1j
bGFzcyBTVkdGRURpZmZ1c2VMaWdodGluZyA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUo
U1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLSAgICB2aXJ0dWFsIH5TVkdGRURpZmZ1c2VMaWdodGluZygp
OwotCi0gICAgQ29sb3IgbGlnaHRpbmdDb2xvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0TGlnaHRp
bmdDb2xvcihjb25zdCBDb2xvciYpOwotCi0gICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRTdXJmYWNlU2NhbGUoZmxvYXQpOwotCi0gICAgZmxvYXQgZGlmZnVzZUNv
bnN0YW50KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREaWZmdXNlQ29uc3RhbnQoZmxvYXQpOwotCi0g
ICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25zdDsKLSAgICB2b2lkIHNldEtlcm5lbFVu
aXRMZW5ndGhYKGZsb2F0KTsKLQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7Ci0KLSAgICBjb25zdCBMaWdo
dFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAgICB2b2lkIHNldExpZ2h0U291cmNlKExp
Z2h0U291cmNlKik7Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi0jaWYgUExBVEZPUk0oQ0kpCi0gICAgdmlydHVh
bCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdDsKLSNl
bmRpZgotCi1wcml2YXRlOgotICAgIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nKFNWR1Jlc291cmNlRmls
dGVyKik7Ci0gICAgCi0gICAgQ29sb3IgbV9saWdodGluZ0NvbG9yOwotICAgIGZsb2F0IG1fc3Vy
ZmFjZVNjYWxlOwotICAgIGZsb2F0IG1fZGlmZnVzZUNvbnN0YW50OwotICAgIGZsb2F0IG1fa2Vy
bmVsVW5pdExlbmd0aFg7Ci0gICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWTsKLSAgICBSZWZQ
dHI8TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7Ci19OworICAgIGNsYXNzIEZFRGlmZnVzZUxp
Z2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlckVmZmVjdCosIGNv
bnN0IENvbG9yJiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsCisgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0U291cmNlKik7CisgICAgICAgIHZpcnR1
YWwgfkZFRGlmZnVzZUxpZ2h0aW5nKCk7CisKKyAgICAgICAgQ29sb3IgbGlnaHRpbmdDb2xvcigp
IGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKKwor
ICAgICAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTdXJm
YWNlU2NhbGUoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGRpZmZ1c2VDb25zdGFudCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldERpZmZ1c2VDb25zdGFudChmbG9hdCk7CisKKyAgICAgICAgZmxv
YXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWxVbml0
TGVuZ3RoWChmbG9hdCk7CisKKyAgICAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFkoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CisKKyAgICAgICAg
Y29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHko
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgCisgICAgcHJpdmF0ZToK
KyAgICAgICAgRkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyRWZmZWN0KiwgY29uc3QgQ29sb3ImLCBj
b25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwKKyAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCYs
IGNvbnN0IGZsb2F0JiwgTGlnaHRTb3VyY2UqKTsKKworICAgICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBtX2luOworICAgICAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CisgICAgICAgIGZsb2F0
IG1fc3VyZmFjZVNjYWxlOworICAgICAgICBmbG9hdCBtX2RpZmZ1c2VDb25zdGFudDsKKyAgICAg
ICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWDsKKyAgICAgICAgZmxvYXQgbV9rZXJuZWxVbml0
TGVuZ3RoWTsKKyAgICAgICAgUmVmUHRyPExpZ2h0U291cmNlPiBtX2xpZ2h0U291cmNlOworICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9u
IDM0OTkyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVu
dE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDkyICsyMiw2MyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1
ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTVkdGRURpc3BsYWNlbWVudE1h
cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRGlzcGxhY2VtZW50TWFwOjpTVkdG
RURpc3BsYWNlbWVudE1hcChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmls
dGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1feENoYW5uZWxTZWxlY3RvcihTVkdfQ0hBTk5FTF9V
TktOT1dOKQotICAgICwgbV95Q2hhbm5lbFNlbGVjdG9yKFNWR19DSEFOTkVMX1VOS05PV04pCi0g
ICAgLCBtX3NjYWxlKDApCitGRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoRmls
dGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIsIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5
cGUmIHhDaGFubmVsU2VsZWN0b3IsCisgICAgY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSYgeUNo
YW5uZWxTZWxlY3RvciwgY29uc3QgZmxvYXQmIHNjYWxlKQorICAgIDogRmlsdGVyRWZmZWN0KCkK
KyAgICAsIG1faW4oaW4pCisgICAgLCBtX2luMihpbjIpCisgICAgLCBtX3hDaGFubmVsU2VsZWN0
b3IoeENoYW5uZWxTZWxlY3RvcikKKyAgICAsIG1feUNoYW5uZWxTZWxlY3Rvcih5Q2hhbm5lbFNl
bGVjdG9yKQorICAgICwgbV9zY2FsZShzY2FsZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRURp
c3BsYWNlbWVudE1hcD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyKQorUGFzc1JlZlB0cjxGRURpc3BsYWNlbWVudE1hcD4gRkVEaXNwbGFjZW1l
bnRNYXA6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwKKyAgICBj
b25zdCBDaGFubmVsU2VsZWN0b3JUeXBlJiB4Q2hhbm5lbFNlbGVjdG9yLCBjb25zdCBDaGFubmVs
U2VsZWN0b3JUeXBlJiB5Q2hhbm5lbFNlbGVjdG9yLCBjb25zdCBmbG9hdCYgc2NhbGUpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGRURpc3BsYWNlbWVudE1hcChmaWx0ZXIpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZFRGlzcGxhY2VtZW50TWFwKGluLCBpbjIsIHhDaGFubmVs
U2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxlKSk7CiB9CiAKLVN0cmluZyBTVkdGRURp
c3BsYWNlbWVudE1hcDo6aW4yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbjI7Ci19Ci0KLXZv
aWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNldEluMihjb25zdCBTdHJpbmcgJmluMikKLXsKLSAg
ICBtX2luMiA9IGluMjsKLX0KLQotU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSBTVkdGRURpc3BsYWNl
bWVudE1hcDo6eENoYW5uZWxTZWxlY3RvcigpIGNvbnN0CitDaGFubmVsU2VsZWN0b3JUeXBlIEZF
RGlzcGxhY2VtZW50TWFwOjp4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV94Q2hhbm5lbFNlbGVjdG9yOwogfQogCi12b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwOjpzZXRY
Q2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxl
Y3RvcikKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFhDaGFubmVsU2VsZWN0b3IoY29uc3Qg
Q2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKQogewogICAgIG1feENoYW5uZWxT
ZWxlY3RvciA9IHhDaGFubmVsU2VsZWN0b3I7CiB9CiAKLVNWR0NoYW5uZWxTZWxlY3RvclR5cGUg
U1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnlDaGFubmVsU2VsZWN0b3IoKSBjb25zdAorQ2hhbm5lbFNl
bGVjdG9yVHlwZSBGRURpc3BsYWNlbWVudE1hcDo6eUNoYW5uZWxTZWxlY3RvcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1feUNoYW5uZWxTZWxlY3RvcjsKIH0KIAotdm9pZCBTVkdGRURpc3BsYWNl
bWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBTVkdDaGFubmVsU2VsZWN0b3JUeXBl
IHlDaGFubmVsU2VsZWN0b3IpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRZQ2hhbm5lbFNl
bGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvcikKIHsKICAg
ICBtX3lDaGFubmVsU2VsZWN0b3IgPSB5Q2hhbm5lbFNlbGVjdG9yOwogfQogCi1mbG9hdCBTVkdG
RURpc3BsYWNlbWVudE1hcDo6c2NhbGUoKSBjb25zdAorZmxvYXQgRkVEaXNwbGFjZW1lbnRNYXA6
OnNjYWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY2FsZTsKIH0KIAotdm9pZCBTVkdGRURp
c3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgc2NhbGUpCit2b2lkIEZFRGlzcGxhY2VtZW50
TWFwOjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKIHsKICAgICBtX3NjYWxlID0gc2NhbGU7CiB9CiAK
LXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTVkdDaGFubmVs
U2VsZWN0b3JUeXBlIHQpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjphcHBseSgpCit7Cit9CisK
K3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmR1bXAoKQogewotICAgIHN3aXRjaCAodCkKLSAgICB7
Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfVU5LTk9XTjoKLSAgICAgICAgICAgIHRzIDw8ICJV
TktOT1dOIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfUjoKLSAgICAgICAgICAg
IHRzIDw8ICJSRUQiOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfQ0hBTk5FTF9HOgotICAgICAg
ICAgICAgdHMgPDwgIkdSRUVOIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfQjoK
LSAgICAgICAgICAgIHRzIDw8ICJCTFVFIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5O
RUxfQToKLSAgICAgICAgICAgIHRzIDw8ICJBTFBIQSI7IGJyZWFrOwotICAgIH0KLSAgICByZXR1
cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIFNWR0ZFRGlzcGxhY2VtZW50TWFwOjpleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIHRzIDw8ICJbdHlwZT1E
SVNQTEFDRU1FTlQtTUFQXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbih0cyk7Ci0gICAgaWYgKCFpbjIoKS5pc0VtcHR5KCkpCi0gICAgICAgIHRzIDw8ICIg
W2luMj0iIDw8IGluMigpIDw8ICJdIjsKLSAgICB0cyA8PCAiIFtzY2FsZT0iIDw8IG1fc2NhbGUg
PDwgIl0iCi0gICAgICAgIDw8ICIgW3ggY2hhbm5lbCBzZWxlY3Rvcj0iIDw8IG1feENoYW5uZWxT
ZWxlY3RvciA8PCAiXSIKLSAgICAgICAgPDwgIiBbeSBjaGFubmVsIHNlbGVjdG9yPSIgPDwgbV95
Q2hhbm5lbFNlbGVjdG9yIDw8ICJdIjsKLSAgICByZXR1cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNw
bGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9uIDM0OTkyKQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw0OCArMjMsNDYgQEAKICNkZWZpbmUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBfaAogCiAjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlckVm
ZmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBTVkdDaGFubmVsU2VsZWN0b3JU
eXBlIHsKLSAgICBTVkdfQ0hBTk5FTF9VTktOT1dOID0gMCwKLSAgICBTVkdfQ0hBTk5FTF9SICAg
ICAgID0gMSwKLSAgICBTVkdfQ0hBTk5FTF9HICAgICAgID0gMiwKLSAgICBTVkdfQ0hBTk5FTF9C
ICAgICAgID0gMywKLSAgICBTVkdfQ0hBTk5FTF9BICAgICAgID0gNAotfTsKLQotY2xhc3MgU1ZH
RkVEaXNwbGFjZW1lbnRNYXAgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcD4gY3JlYXRlKFNWR1Jlc291
cmNlRmlsdGVyKik7Ci0KLSAgICBTdHJpbmcgaW4yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbjIo
Y29uc3QgU3RyaW5nJik7Ci0KLSAgICBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2Vs
ZWN0b3IoKSBjb25zdDsKLSAgICB2b2lkIHNldFhDaGFubmVsU2VsZWN0b3IoY29uc3QgU1ZHQ2hh
bm5lbFNlbGVjdG9yVHlwZSk7Ci0KLSAgICBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVs
U2VsZWN0b3IoKSBjb25zdDsKLSAgICB2b2lkIHNldFlDaGFubmVsU2VsZWN0b3IoY29uc3QgU1ZH
Q2hhbm5lbFNlbGVjdG9yVHlwZSk7Ci0KLSAgICBmbG9hdCBzY2FsZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0U2NhbGUoZmxvYXQgc2NhbGUpOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJ
KQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJv
eCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRURpc3BsYWNlbWVudE1hcChT
VkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFu
bmVsU2VsZWN0b3I7Ci0gICAgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSBtX3lDaGFubmVsU2VsZWN0
b3I7Ci0gICAgZmxvYXQgbV9zY2FsZTsKLSAgICBTdHJpbmcgbV9pbjI7Ci19OworICAgIGVudW0g
Q2hhbm5lbFNlbGVjdG9yVHlwZSB7CisgICAgICAgIENIQU5ORUxfVU5LTk9XTiA9IDAsCisgICAg
ICAgIENIQU5ORUxfUiAgICAgICA9IDEsCisgICAgICAgIENIQU5ORUxfRyAgICAgICA9IDIsCisg
ICAgICAgIENIQU5ORUxfQiAgICAgICA9IDMsCisgICAgICAgIENIQU5ORUxfQSAgICAgICA9IDQK
KyAgICB9OworICAgIAorICAgIGNsYXNzIEZFRGlzcGxhY2VtZW50TWFwIDogcHVibGljIEZpbHRl
ckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRURpc3Bs
YWNlbWVudE1hcD4gY3JlYXRlKEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IENo
YW5uZWxTZWxlY3RvclR5cGUmLAorICAgICAgICAgICAgICAgIGNvbnN0IENoYW5uZWxTZWxlY3Rv
clR5cGUmLCBjb25zdCBmbG9hdCYpOworCisgICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeENo
YW5uZWxTZWxlY3RvcigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFhDaGFubmVsU2VsZWN0b3Io
Y29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSk7CisKKyAgICAgICAgQ2hhbm5lbFNlbGVjdG9yVHlw
ZSB5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0WUNoYW5uZWxTZWxl
Y3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlKTsKKworICAgICAgICBmbG9hdCBzY2FsZSgp
IGNvbnN0OworICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNjYWxlKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIEZFRGlzcGxhY2VtZW50TWFwKEZpbHRlckVmZmVjdCosIEZpbHRl
ckVmZmVjdCosIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUmLAorICAgICAgICAgICAgY29uc3Qg
Q2hhbm5lbFNlbGVjdG9yVHlwZSYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjI7Cisg
ICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUgbV94Q2hhbm5lbFNlbGVjdG9yOworICAgICAgICBD
aGFubmVsU2VsZWN0b3JUeXBlIG1feUNoYW5uZWxTZWxlY3RvcjsKKyAgICAgICAgZmxvYXQgbV9z
Y2FsZTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAkocmV2aXNpb24gMzQ5OTIpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw1MCArMjIsNDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNU
ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHRkVGbG9vZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNWR0ZFRmxvb2Q6OlNWR0ZFRmxvb2QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6
IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAgLCBtX2Zsb29kQ29sb3IoKQotICAgICwgbV9m
bG9vZE9wYWNpdHkoMC4wZikKK0ZFRmxvb2Q6OkZFRmxvb2QoY29uc3QgQ29sb3ImIGZsb29kQ29s
b3IsIGNvbnN0IGZsb2F0JiBmbG9vZE9wYWNpdHkpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAg
ICwgbV9mbG9vZENvbG9yKGZsb29kQ29sb3IpCisgICAgLCBtX2Zsb29kT3BhY2l0eShmbG9vZE9w
YWNpdHkpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVGbG9vZD4gU1ZHRkVGbG9vZDo6Y3JlYXRl
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZFRmxvb2Q+IEZFRmxvb2Q6
OmNyZWF0ZShjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgY29uc3QgZmxvYXQmIGZsb29kT3BhY2l0
eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFRmxvb2QoZmlsdGVyKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGRUZsb29kKGZsb29kQ29sb3IsIGZsb29kT3BhY2l0eSkpOwog
fQogCi1Db2xvciBTVkdGRUZsb29kOjpmbG9vZENvbG9yKCkgY29uc3QKK0NvbG9yIEZFRmxvb2Q6
OmZsb29kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBtX2Zsb29kQ29sb3I7CiB9CiAKLXZv
aWQgU1ZHRkVGbG9vZDo6c2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIEZF
Rmxvb2Q6OnNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIG1fZmxvb2RD
b2xvciA9IGNvbG9yOwogfQogCi1mbG9hdCBTVkdGRUZsb29kOjpmbG9vZE9wYWNpdHkoKSBjb25z
dAorZmxvYXQgRkVGbG9vZDo6Zmxvb2RPcGFjaXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9m
bG9vZE9wYWNpdHk7CiB9CiAKLXZvaWQgU1ZHRkVGbG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0
IGZsb29kT3BhY2l0eSkKK3ZvaWQgRkVGbG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb29k
T3BhY2l0eSkKIHsKICAgICBtX2Zsb29kT3BhY2l0eSA9IGZsb29kT3BhY2l0eTsKIH0KIAotVGV4
dFN0cmVhbSYgU1ZHRkVGbG9vZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0
cykgY29uc3QKK3ZvaWQgRkVGbG9vZDo6YXBwbHkoKQoreworfQorCit2b2lkIEZFRmxvb2Q6OmR1
bXAoKQogewotICAgIHRzIDw8ICJbdHlwZT1GTE9PRF0gIjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICIgW2NvbG9yPSIgPDwgZmxv
b2RDb2xvcigpIDw8ICJdIgotICAgICAgICA8PCAiIFtvcGFjaXR5PSIgPDwgZmxvb2RPcGFjaXR5
KCkgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgJKHJldmlzaW9u
IDM0OTkyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDMyICsyNCwyOSBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVy
RWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU1ZHRkVGbG9vZCA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRmxvb2Q+IGNyZWF0ZShTVkdSZXNvdXJjZUZp
bHRlciopOworICAgIGNsYXNzIEZFRmxvb2QgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFRmxvb2Q+IGNyZWF0ZShjb25zdCBD
b2xvciYsIGNvbnN0IGZsb2F0Jik7CiAKLSAgICBDb2xvciBmbG9vZENvbG9yKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yICYpOworICAgICAgICBDb2xvciBmbG9v
ZENvbG9yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciAm
KTsKIAotICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0OwotICAgIHZvaWQgc2V0Rmxvb2RP
cGFjaXR5KGZsb2F0KTsKKyAgICAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsKIAotICAgIHZpcnR1YWwgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCi0jaWYg
UExBVEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxv
YXRSZWN0JiBiYm94KSBjb25zdDsKLSNlbmRpZgorICAgIHByaXZhdGU6CisgICAgICAgIEZFRmxv
b2QoY29uc3QgQ29sb3ImLCBjb25zdCBmbG9hdCYpOwogCi1wcml2YXRlOgotICAgIFNWR0ZFRmxv
b2QoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIENvbG9yIG1fZmxvb2RDb2xvcjsKLSAgICBm
bG9hdCBtX2Zsb29kT3BhY2l0eTsKLX07CisgICAgICAgIENvbG9yIG1fZmxvb2RDb2xvcjsKKyAg
ICAgICAgZmxvYXQgbV9mbG9vZE9wYWNpdHk7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5C
bHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
R2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDgg
KzIzLDQ4IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5j
bHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVHYXVzc2lhbkJsdXI6OlNWR0ZFR2F1c3NpYW5CbHVy
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVy
KQotICAgICwgbV94KDAuMGYpCi0gICAgLCBtX3koMC4wZikKK0ZFR2F1c3NpYW5CbHVyOjpGRUdh
dXNzaWFuQmx1cihGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBmbG9hdCYgeCwgY29uc3QgZmxvYXQm
IHkpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1feCh4KQor
ICAgICwgbV95KHkpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVHYXVzc2lhbkJsdXI+IFNWR0ZF
R2F1c3NpYW5CbHVyOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQ
dHI8RkVHYXVzc2lhbkJsdXI+IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBp
biwgY29uc3QgZmxvYXQmIHgsIGNvbnN0IGZsb2F0JiB5KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU1ZHRkVHYXVzc2lhbkJsdXIoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBGRUdhdXNzaWFuQmx1cihpbiwgeCwgeSkpOwogfQogCi1mbG9hdCBTVkdGRUdhdXNzaWFuQmx1
cjo6c3RkRGV2aWF0aW9uWCgpIGNvbnN0CitmbG9hdCBGRUdhdXNzaWFuQmx1cjo6c3RkRGV2aWF0
aW9uWCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feDsKIH0KIAotdm9pZCBTVkdGRUdhdXNzaWFu
Qmx1cjo6c2V0U3RkRGV2aWF0aW9uWChmbG9hdCB4KQordm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0
U3RkRGV2aWF0aW9uWChmbG9hdCB4KQogewogICAgIG1feCA9IHg7CiB9CiAKLWZsb2F0IFNWR0ZF
R2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKCkgY29uc3QKK2Zsb2F0IEZFR2F1c3NpYW5CbHVy
OjpzdGREZXZpYXRpb25ZKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV95OwogfQogCi12b2lkIFNW
R0ZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZsb2F0IHkpCit2b2lkIEZFR2F1c3Np
YW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZsb2F0IHkpCiB7CiAgICAgbV95ID0geTsKIH0KIAot
VGV4dFN0cmVhbSYgU1ZHRkVHYXVzc2lhbkJsdXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseSgpCit7Cit9CisK
K3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmR1bXAoKQogewotICAgIHRzIDw8ICJbdHlwZT1HQVVTU0lB
Ti1CTFVSXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0
cyk7Ci0gICAgdHMgPDwgIiBbc3RkIGRldi4geD0iIDw8IHN0ZERldmlhdGlvblgoKSA8PCAiIHk9
IiA8PCBzdGREZXZpYXRpb25ZKCkgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUdhdXNzaWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gMzQ5OTIpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDMyICsyMywzMCBAQAogI2RlZmluZSBTVkdGRUdhdXNzaWFuQmx1cl9oCiAKICNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0Lmgi
CisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU1ZHRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUdhdXNzaWFuQmx1cj4gY3JlYXRlKFNWR1Jlc291
cmNlRmlsdGVyKik7Ci0KLSAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0KTsKLQotICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBj
b25zdDsKLSAgICB2b2lkIHNldFN0ZERldmlhdGlvblkoZmxvYXQpOwotCi0gICAgdmlydHVhbCBU
ZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQot
I2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0
IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRUdh
dXNzaWFuQmx1cihTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgZmxvYXQgbV94OwotICAgIGZs
b2F0IG1feTsKLX07CisgICAgY2xhc3MgRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgRmlsdGVyRWZm
ZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFR2F1c3NpYW5C
bHVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOwor
CisgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRT
dGREZXZpYXRpb25YKGZsb2F0KTsKKworICAgICAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9h
dCYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsK
KyAgICAgICAgZmxvYXQgbV94OworICAgICAgICBmbG9hdCBtX3k7CisgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9TVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tCShyZXZpc2lvbiAzNDk5
MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw3NCArMCwwIEBACi0vKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUg
IlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQot
I2ltcG9ydCAiV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1DSUZpbHRlciogU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmdldENJRmlsdGVyKGNvbnN0IEZs
b2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHQgPSBs
aWdodFNvdXJjZSgpOwotICAgIGlmICghbGlnaHQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAg
ICBbV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIgY2xhc3NdOwotCi0gICAgU1ZHUmVzb3VyY2VGaWx0
ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1E
YXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0aWNfY2FzdDxTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxhdGZvcm1EYXRhKCkpOwotCi0gICAgQ0lG
aWx0ZXIqIGZpbHRlcjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgZmls
dGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tEaWZmdXNlTGlnaHRpbmciXTsKLSAg
ICBpZiAoIWZpbHRlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFtmaWx0ZXIgc2V0RGVm
YXVsdHNdOwotICAgIENJSW1hZ2UqIGlucHV0SW1hZ2UgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlu
cHV0SW1hZ2UodGhpcyk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwot
ICAgIENJRmlsdGVyKiBub3JtYWxzID0gZ2V0Tm9ybWFsTWFwKGlucHV0SW1hZ2UsIHN1cmZhY2VT
Y2FsZSgpKTsKLSAgICBpZiAoIW5vcm1hbHMpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBD
SUZpbHRlciogbGlnaHRWZWN0b3JzID0gZ2V0TGlnaHRWZWN0b3JzKG5vcm1hbHMsIGxpZ2h0LCBz
dXJmYWNlU2NhbGUoKSk7Ci0gICAgaWYgKCFsaWdodFZlY3RvcnMpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICBbZmlsdGVyIHNldFZhbHVlOltub3JtYWxzIHZhbHVlRm9yS2V5OkAib3V0cHV0
SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dE5vcm1hbE1hcCJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6
W2xpZ2h0VmVjdG9ycyB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gZm9yS2V5OkAiaW5wdXRM
aWdodFZlY3RvcnMiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmNpQ29sb3IobGlnaHRpbmdDb2xv
cigpKSBmb3JLZXk6QCJpbnB1dExpZ2h0aW5nQ29sb3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVl
OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3VyZmFjZVNjYWxlKCldIGZvcktleTpAImlucHV0
U3VyZmFjZVNjYWxlIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OmRpZmZ1c2VDb25zdGFudCgpXSBmb3JLZXk6QCJpbnB1dERpZmZ1c2VDb25zdGFudCJd
OwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDprZXJuZWxV
bml0TGVuZ3RoWCgpXSBmb3JLZXk6QCJpbnB1dEtlcm5lbFVuaXRMZW5ndGhYIl07Ci0gICAgW2Zp
bHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Omtlcm5lbFVuaXRMZW5ndGhZ
KCldIGZvcktleTpAImlucHV0S2VybmVsVW5pdExlbmd0aFkiXTsKLQotICAgIEZFX1FVQVJUWl9N
QVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwotfQot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlzcGxhY2VtZW50TWFwQ2cu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURp
c3BsYWNlbWVudE1hcENnLm1tCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMSw1OCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgi
Ci0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQotI2ltcG9ydCAiV0tEaXNwbGFjZW1lbnRN
YXBGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVEaXNw
bGFjZW1lbnRNYXA6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsK
LSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVz
b3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRlclBsYXRmb3JtRGF0YSA9IHN0YXRpY19j
YXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9y
bURhdGEoKSk7Ci0KLSAgICBDSUZpbHRlciogZmlsdGVyID0gbmlsOwotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKLSAgICBbV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIgY2xhc3NdOwot
ICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLRGlzcGxhY2VtZW50TWFw
RmlsdGVyIl07Ci0gICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAgQ0lJbWFnZSogaW5wdXRJ
bWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW5wdXRJbWFnZSh0aGlzKTsKLSAgICBDSUltYWdl
KiBkaXNwbGFjZW1lbnRNYXAgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmltYWdlRm9yTmFtZShpbjIo
KSk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIEZFX1FVQVJU
Wl9DSEVDS19JTlBVVChkaXNwbGFjZW1lbnRNYXApOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5w
dXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpkaXNw
bGFjZW1lbnRNYXAgZm9yS2V5OkAiaW5wdXREaXNwbGFjZW1lbnRNYXAiXTsKLSAgICBbZmlsdGVy
IHNldFZhbHVlOmdldFZlY3RvckZvckNoYW5uZWwoeENoYW5uZWxTZWxlY3RvcigpKSBmb3JLZXk6
QCJpbnB1dFhDaGFubmVsU2VsZWN0b3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmdldFZlY3Rv
ckZvckNoYW5uZWwoeUNoYW5uZWxTZWxlY3RvcigpKSBmb3JLZXk6QCJpbnB1dFlDaGFubmVsU2Vs
ZWN0b3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
c2NhbGUoKV0gZm9yS2V5OkAiaW5wdXRTY2FsZSJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19T
VUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tCShyZXZpc2lv
biAzNDk5MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENn
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0g
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVk
ZSAiU1ZHRkVGbG9vZC5oIgotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVk
ZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLSNpbmNsdWRlICJDZ1N1cHBvcnQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVGbG9vZDo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxv
YXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIg
PSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyogZmlsdGVy
UGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFN
YWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsKLSAgICBDSUZpbHRlciogZmlsdGVyOwot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIg
ZmlsdGVyV2l0aE5hbWU6QCJDSUNvbnN0YW50Q29sb3JHZW5lcmF0b3IiXTsKLSAgICBbZmlsdGVy
IHNldERlZmF1bHRzXTsKLSAgICBDR0NvbG9yUmVmIGNvbG9yID0gY2dDb2xvcihmbG9vZENvbG9y
KCkpOwotICAgIENHQ29sb3JSZWYgd2l0aEFscGhhID0gQ0dDb2xvckNyZWF0ZUNvcHlXaXRoQWxw
aGEoY29sb3IsIENHQ29sb3JHZXRBbHBoYShjb2xvcikgKiBmbG9vZE9wYWNpdHkoKSk7Ci0gICAg
Q0lDb2xvciogaW5wdXRDb2xvciA9IFtDSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6d2l0aEFscGhh
XTsKLSAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Ci0gICAgQ0dDb2xvclJlbGVhc2Uod2l0aEFs
cGhhKTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0Q29sb3IgZm9yS2V5OkAiaW5wdXRDb2xv
ciJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVB
UlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVHYXVzc2lhbkJsdXJDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cubW0JKHJldmlzaW9uIDM0OTkyKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUdhdXNzaWFuQmx1ckNnLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVHYXVz
c2lhbkJsdXIuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRUdhdXNzaWFuQmx1cjo6Z2V0Q0lGaWx0ZXIoY29uc3Qg
RmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0
ZXIgPSBmaWx0ZXIoKTsKLSAgICBGRV9RVUFSVFpfU0VUVVBfSU5QVVQoQCJDSUdhdXNzaWFuUHly
YW1pZCIpOwotCi0gICAgZmxvYXQgaW5wdXRSYWRpdXMgPSBzdGREZXZpYXRpb25YKCk7Ci0gICAg
aWYgKGlucHV0UmFkaXVzICE9IHN0ZERldmlhdGlvblkoKSkgewotICAgICAgICBmbG9hdCBpbnB1
dEFzcGVjdFJhdGlvID0gc3RkRGV2aWF0aW9uWCgpL3N0ZERldmlhdGlvblkoKTsKLSAgICAgICAg
Ly8gRklYTUU6IGlucHV0QXNwZWN0UmF0aW8gb25seSBzdXBwb3J0IHRoZSByYW5nZSAuNSB0byAy
LjAhCi0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpp
bnB1dEFzcGVjdFJhdGlvXSBmb3JLZXk6QCJpbnB1dEFzcGVjdFJhdGlvIl07Ci0gICAgfQotICAg
IFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDppbnB1dFJhZGl1c10g
Zm9yS2V5OkAiaW5wdXRSYWRpdXMiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9O
KGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oCShyZXZpc2lvbiAzNDk5
MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DSVZlY3RvciogZ2V0VmVjdG9yRm9yQ2hhbm5lbChTVkdDaGFu
bmVsU2VsZWN0b3JUeXBlIGNoYW5uZWwpOworQ0lWZWN0b3IqIGdldFZlY3RvckZvckNoYW5uZWwo
Q2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVsKTsKIENJQ29sb3IqIGNpQ29sb3IoY29uc3QgQ29s
b3ImIGMpOwogCiAvLyBMaWdodGluZwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9jZy9TVkdGRUhlbHBlcnNDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tCShyZXZpc2lvbiAzNDk5MikKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNJVmVjdG9y
KiBnZXRWZWN0b3JGb3JDaGFubmVsKFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCkKK0NJ
VmVjdG9yKiBnZXRWZWN0b3JGb3JDaGFubmVsKENoYW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCkK
IHsKICAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKLSAgICBjYXNlIFNWR19DSEFOTkVMX1VOS05PV046
CisgICAgY2FzZSBDSEFOTkVMX1VOS05PV046CiAgICAgICAgIHJldHVybiBuaWw7ICAgIAotICAg
IGNhc2UgU1ZHX0NIQU5ORUxfUjoKKyAgICBjYXNlIENIQU5ORUxfUjoKICAgICAgICAgcmV0dXJu
IFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjBmIFk6MC4wZiBaOjAuMGYgVzowLjBmXTsKLSAgICBj
YXNlIFNWR19DSEFOTkVMX0c6CisgICAgY2FzZSBDSEFOTkVMX0c6CiAgICAgICAgIHJldHVybiBb
Q0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjEuMGYgWjowLjBmIFc6MC4wZl07Ci0gICAgY2Fz
ZSBTVkdfQ0hBTk5FTF9COgorICAgIGNhc2UgQ0hBTk5FTF9COgogICAgICAgICByZXR1cm4gW0NJ
VmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTowLjBmIFo6MS4wZiBXOjAuMGZdOwotICAgIGNhc2Ug
U1ZHX0NIQU5ORUxfQToKKyAgICBjYXNlIENIQU5ORUxfQToKICAgICAgICAgcmV0dXJuIFtDSVZl
Y3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6MC4wZiBaOjAuMGYgVzoxLjBmXTsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTowLjBmIFo6MC4w
ZiBXOjAuMGZdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22092</attachid>
            <date>2008-07-04 22:30:07 -0700</date>
            <delta_ts>2008-07-05 14:29:21 -0700</delta_ts>
            <desc>Trying again with the last 5</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>67960</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIxIEBACisyMDA4LTA3LTA0ICBBbGV4IE1hdGhld3MgIDxwb3NzZXNzZWRwZW5n
dWluYm9iQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBidWcgMTk4MzU6IFdlYktpdCBuZWVkcyBjcm9zcy1wbGF0Zm9ybSBmaWx0ZXIg
c3lzdGVtCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MzU+CisKKyAgICAgICAgTW9yZSBjbGFzcyByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBm
b3IgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIAorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRzKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN0cmluZ1RvQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252
b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpGRUNv
bnZvbHZlTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpkaXZpc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6
OnNldERpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6Ymlhcyk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRCaWFzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnRhcmdldE9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRUYXJnZXRPZmZzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb252b2x2ZU1hdHJpeDo6ZWRnZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252
b2x2ZU1hdHJpeDo6c2V0RWRnZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1h
dHJpeDo6a2VybmVsVW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0
cml4OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVN
YXRyaXg6OnByZXNlcnZlQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJp
eDo6c2V0UHJlc2VydmVBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4
OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpkdW1wKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4Lmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpG
RURpZmZ1c2VMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNl
TGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0aW5n
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0aW5n
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnN1cmZhY2VTY2Fs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpkaWZmdXNlQ29uc3RhbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0
aFgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRM
ZW5ndGhYKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0
TGVuZ3RoWSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVs
VW5pdExlbmd0aFkpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodFNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmR1bXApOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNw
bGFjZW1lbnRNYXA6OnhDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNw
bGFjZW1lbnRNYXA6OnNldFhDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OnlDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OnNldFlDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
RkVEaXNwbGFjZW1lbnRNYXA6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2Vt
ZW50TWFwOjpzZXRTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OmR1bXApOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxv
b2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6RkVGbG9vZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUZsb29kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6Zmxv
b2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpzZXRGbG9vZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmZsb29kT3BhY2l0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6ZHVtcCk6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjpGRUdhdXNzaWFuQmx1cik6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRp
b25YKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25Y
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUdhdXNzaWFuQmx1cjo6ZHVtcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVHYXVzc2lhbkJsdXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RURpZmZ1c2VMaWdodGluZ0NnLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1NWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW06IFJlbW92ZWQuCisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cubW06IFJlbW92
ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldFZlY3RvckZvckNoYW5uZWwpOgorCiAyMDA4LTA3LTA0ICBEYXZp
ZCBELiBLaWx6ZXIgIDxkZGtpbHplckB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1ZyAxNTI5MDog
UkVHUkVTU0lPTiAocjE0MTg0LXIxNDIxNik6IER1cGxpY2F0ZSBET0NUWVBFIGRlZmluaXRpb25z
IHdoZW4gc2F2aW5nIGZpbGVzIGFzIHdlYmFyY2hpdmVzCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAwOSwx
MCArMzAwOSw2IEBACiAJCUIyNTU5OTMzMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUNs
aXBwZXJDZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwICov
OyB9OwogCQlCMjU1OTkzNTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODk5
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tICovOyB9OwogCQlCMjU1
OTkzNzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODlCMEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tICovOyB9OwotCQlCMjU1OTkzQzBEMDBEOEJB
MDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBT
VkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tICovOyB9OwotCQlCMjU1OTkzRDBEMDBEOEJBMDBCQjgy
NUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURp
c3BsYWNlbWVudE1hcENnLm1tICovOyB9OwotCQlCMjU1OTkzRTBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHRkVGbG9vZENnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLzsgfTsK
LQkJQjI1NTk5M0YwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFR2F1c3NpYW5CbHVyQ2cubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBNTBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSAqLzsgfTsKIAkJQjI1NTk5NDAw
RDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBNjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZH
RkVIZWxwZXJzQ2cuaCAqLzsgfTsKIAkJQjI1NTk5NDEwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZF
SGVscGVyc0NnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjI1NTk4QTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLm1tICovOyB9Owog
CQlCMjU1OTk0MjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJbWFnZUNnLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTgwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR0ZFSW1hZ2VDZy5tbSAqLzsgfTsKQEAgLTczNTcsMTAgKzczNTMsNiBAQAogCQlC
MjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1Jlc291cmNlQ2xpcHBlckNnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4OTkwRDAwRDhCODAwQkI4MjVD
IC8qIFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI1NTk4OUIwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291cmNlTWFza2VyQ2cu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VN
YXNrZXJDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTIwRDAwRDhC
ODAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZF
RGlzcGxhY2VtZW50TWFwQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUZsb29kQ2cubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEE1MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdG
RUdhdXNzaWFuQmx1ckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNWR0ZFR2F1c3NpYW5CbHVyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNTU5OEE2MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRkVIZWxwZXJzQ2cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0Nn
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFSGVscGVy
c0NnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThBODBEMDBEOEI4MDBC
QjgyNUMgLyogU1ZHRkVJbWFnZUNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNWR0ZFSW1hZ2VDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExOTQ1LDEwICsxMTkzNyw2IEBACiAJCUIyNTU5ODlEMEQwMEQ4QjgwMEJCODI1QyAvKiBjZyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQjI1NTk4QTIw
RDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gKi8sCi0JCQkJQjI1
NTk4QTMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0gKi8sCi0J
CQkJQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLywKLQkJCQlC
MjU1OThBNTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSAqLywKIAkJ
CQlCMjU1OThBNjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLywKIAkJCQlC
MjU1OThBNzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cubW0gKi8sCiAJCQkJQjI1
NTk4QTgwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2VDZy5tbSAqLywKQEAgLTE2NTY5LDIx
ICsxNjU1NywxNyBAQAogCQkJCUIyMjI3OUQwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5N0EwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ZFQ29udm9sdmVNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5
N0MwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUIyNTU5OTNDMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRURpZmZ1c2VMaWdodGlu
Z0NnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RDMwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk3
RTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQjI1NTk5M0QwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFw
Q2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlENjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUQ5
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI1NTk5ODAwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRmxvb2QuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5M0UwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RD
Zy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OURDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdG
RUZsb29kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlERjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVGdW5jQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5
RTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY0JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3OUU1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZ1bmNHRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlFODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5j
UkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5ODIwRDAwRDhCQTAwQkI4MjVD
IC8qIFNWR0ZFR2F1c3NpYW5CbHVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTNGMEQw
MEQ4QkEwMEJCODI1QyAvKiBTVkdGRUdhdXNzaWFuQmx1ckNnLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjc5RUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk0MTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVI
ZWxwZXJzQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4NDBEMDBEOEJBMDBCQjgyNUMg
LyogU1ZHRkVJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
QmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ZFQmxlbmRFbGVt
ZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRl
ICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiRkVCbGVuZC5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAog
I2RlZmluZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUg
IkZFQ29sb3JNYXRyaXguaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaCIKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZp
bmUgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRl
ICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGRUNv
bXBvbmVudFRyYW5zZmVyLmgiCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ZFQ29tcG9zaXRl
RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5j
bHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIkZFQ29tcG9zaXRlLmgiCiAjaW5jbHVk
ZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCi0jaW5jbHVkZSAiU1ZHRkVMaWdo
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCkBAIC03NSwzNSArNzQsMzEg
QEAKIAogU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9m
aWx0ZXJFZmZlY3QpIAotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nOjpjcmVhdGUoZmlsdGVyKTsKLQotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7
Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldERpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQo
KSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFN1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUoKSk7
Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEtlcm5lbFVuaXRMZW5ndGhYKGtlcm5lbFVuaXRMZW5n
dGhYKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLZXJuZWxVbml0TGVuZ3RoWShrZXJuZWxV
bml0TGVuZ3RoWSgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsK
K30KIAorYm9vbCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxk
ZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKKyAgICAKKyAgICBpZighaW5wdXQxKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCiAgICAgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KiBub25Db25zdFRo
aXMgPSBjb25zdF9jYXN0PFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCo+KHRoaXMpOwotCiAg
ICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gbm9uQ29uc3RUaGlzLT5zdHlsZUZvclJlbmRl
cmVyKHBhcmVudCgpLT5yZW5kZXJlcigpKTsKICAgICBSZW5kZXJTdHlsZSogZmlsdGVyU3R5bGUg
PSBub25Db25zdFRoaXMtPnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7CisgICAgQ29sb3IgY29s
b3IgPSBmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+bGlnaHRpbmdDb2xvcigpOwogICAgIAotICAg
IG1fZmlsdGVyRWZmZWN0LT5zZXRMaWdodGluZ0NvbG9yKGZpbHRlclN0eWxlLT5zdmdTdHlsZSgp
LT5saWdodGluZ0NvbG9yKCkpOwotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVm
ZmVjdC5nZXQoKSk7Ci0gCi0gICAgcGFyZW50U3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRl
ckFyZW5hKCkpOwotICAgIGZpbHRlclN0eWxlLT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVu
YSgpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFRGlmZnVzZUxp
Z2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25z
dGFudCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2Vy
bmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgdXBkYXRlTGlnaHRzKCkpOwor
ICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKICAgICAK
LSAgICB1cGRhdGVMaWdodHMoKTsKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojp1
cGRhdGVMaWdodHMoKSBjb25zdAorTGlnaHRTb3VyY2UqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6dXBkYXRlTGlnaHRzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQot
ICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gMDsKICAgICBm
b3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpc3RhbnRMaWdodFRhZykgfHwK
QEAgLTExNSw3ICsxMTAsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9maWx0ZXJFZmZl
Y3QtPnNldExpZ2h0U291cmNlKGxpZ2h0KTsKKyAgICByZXR1cm4gbGlnaHQ7CiB9CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lvbiAz
NTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxMCArMjMsMTEgQEAKICNkZWZpbmUgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
bmNsdWRlICJTVkdGRUxpZ2h0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3Mg
U1ZHRkVEaWZmdXNlTGlnaHRpbmc7CisgICAgY2xhc3MgRkVEaWZmdXNlTGlnaHRpbmc7CiAgICAg
Y2xhc3MgU1ZHQ29sb3I7CiAKICAgICBjbGFzcyBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQg
OiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCkBAIC0zNyw2ICsz
OCw3IEBACiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDgsOSAr
NTAsOSBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJu
ZWxVbml0TGVuZ3RoWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3Ro
WSwga2VybmVsVW5pdExlbmd0aFkpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVEaWZm
dXNlTGlnaHRpbmc+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBMaWdodFNvdXJjZSogdXBkYXRl
TGlnaHRzKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICB2b2lkIHVwZGF0ZUxpZ2h0cygpIGNv
bnN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRURpZmZ1c2VMaWdodGluZz4gbV9maWx0ZXJF
ZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDggQEAKIAogU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0
YWdOYW1lLCBkb2MpCi0gICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoU1ZHX0NIQU5ORUxfQSkKLSAg
ICAsIG1feUNoYW5uZWxTZWxlY3RvcihTVkdfQ0hBTk5FTF9BKQorICAgICwgbV94Q2hhbm5lbFNl
bGVjdG9yKENIQU5ORUxfQSkKKyAgICAsIG1feUNoYW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCiAg
ICAgLCBtX3NjYWxlKDAuMGYpCiAgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewpAQCAtNDYsMTgg
KzQ2LDE4IEBACiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBZQ2hhbm5lbFNlbGVj
dG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIG1f
eUNoYW5uZWxTZWxlY3RvcikKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTY2FsZSwgc2NhbGUs
IFNWR05hbWVzOjpzY2FsZUF0dHIsIG1fc2NhbGUpCiAKLVNWR0NoYW5uZWxTZWxlY3RvclR5cGUg
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0NoYW5uZWwoY29uc3QgU3RyaW5n
JiBrZXkpCitDaGFubmVsU2VsZWN0b3JUeXBlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
c3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIGlmIChrZXkgPT0gIlIi
KQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfUjsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxf
UjsKICAgICBlbHNlIGlmIChrZXkgPT0gIkciKQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxf
RzsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfRzsKICAgICBlbHNlIGlmIChrZXkgPT0gIkIiKQot
ICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfQjsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfQjsK
ICAgICBlbHNlIGlmIChrZXkgPT0gIkEiKQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfQTsK
KyAgICAgICAgcmV0dXJuIENIQU5ORUxfQTsKIAotICAgIHJldHVybiBTVkdfQ0hBTk5FTF9VTktO
T1dOOworICAgIHJldHVybiBDSEFOTkVMX1VOS05PV047CiB9CiAKIHZvaWQgU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0
dHIpCkBAIC03NywxOSArNzcsMjYgQEAKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVEaXNw
bGFjZW1lbnRNYXAqIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNW
R1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJF
ZmZlY3QgPSBTVkdGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlcik7Ci0KLSAgICBtX2Zp
bHRlckVmZmVjdC0+c2V0WENoYW5uZWxTZWxlY3RvcigoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSkg
eENoYW5uZWxTZWxlY3RvcigpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0WUNoYW5uZWxTZWxl
Y3RvcigoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSkgeUNoYW5uZWxTZWxlY3RvcigpKTsKLSAgICBt
X2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbjIo
aW4yKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRTY2FsZShzY2FsZSgpKTsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIHNldFN0YW5kYXJkQXR0
cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0
LmdldCgpOworYm9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1
aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGJ1aWxkZXIt
PmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIAorICAgIGlmKCFpbnB1dDEgfHwgIWlucHV0MikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoaW5wdXQxLCBp
bnB1dDIsIHN0YXRpY19jYXN0PENoYW5uZWxTZWxlY3RvclR5cGU+ICh4Q2hhbm5lbFNlbGVjdG9y
KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxDaGFubmVsU2VsZWN0b3JUeXBlPiAoeUNoYW5uZWxTZWxlY3RvcigpKSwgc2NhbGUoKSk7Cisg
ICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAor
ICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDExIEBA
CiAgICAgICAgIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQoKTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBTVkdDaGFubmVsU2VsZWN0
b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIENo
YW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFRGlzcGxhY2VtZW50TWFwKiBmaWx0ZXJFZmZl
Y3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICBi
b29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdGhpczsgfQpAQCAtNDYsNyArNDcsNyBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBpbnQsIGludCwgWUNo
YW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvcikKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIGZsb2F0
LCBTY2FsZSwgc2NhbGUpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVEaXNwbGFjZW1l
bnRNYXA+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRURpc3BsYWNl
bWVudE1hcD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDI1
ICs0OCwyNSBAQAogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZFRmxvb2QqIFNWR0ZFRmxvb2RFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0Zp
bHRlckVmZmVjdCogU1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAg
IG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVGbG9vZDo6Y3JlYXRlKGZpbHRlcik7Ci0gICAgCi0gICAg
c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAorYm9vbCBTVkdGRUZsb29kRWxlbWVu
dDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKICAgICBTVkdGRUZsb29kRWxlbWVu
dCogbm9uQ29uc3RUaGlzID0gY29uc3RfY2FzdDxTVkdGRUZsb29kRWxlbWVudCo+KHRoaXMpOwot
CiAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gbm9uQ29uc3RUaGlzLT5zdHlsZUZvclJl
bmRlcmVyKHBhcmVudCgpLT5yZW5kZXJlcigpKTsKICAgICBSZW5kZXJTdHlsZSogZmlsdGVyU3R5
bGUgPSBub25Db25zdFRoaXMtPnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7CiAgICAgCi0gICAg
bV9maWx0ZXJFZmZlY3QtPnNldEZsb29kQ29sb3IoZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZs
b29kQ29sb3IoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEZsb29kT3BhY2l0eShmaWx0ZXJT
dHlsZS0+c3ZnU3R5bGUoKS0+Zmxvb2RPcGFjaXR5KCkpOworICAgIENvbG9yIGNvbG9yID0gZmls
dGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kQ29sb3IoKTsKKyAgICBmbG9hdCBvcGFjaXR5ID0g
ZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kT3BhY2l0eSgpOwogICAgIAotICAgIHBhcmVu
dFN0eWxlLT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKLSAgICBmaWx0ZXJTdHls
ZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYWRkZWRFZmZlY3QgPSBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOworICAg
IGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKICAgICAKLSAg
ICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0K
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTQg
QEAKICAgICAgICAgdmlydHVhbCB+U1ZHRkVGbG9vZEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAg
IHZpcnR1YWwgU1ZHRkVGbG9vZCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVz
b3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7
CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRUZsb29kPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAg
bXV0YWJsZSBSZWZQdHI8RkVGbG9vZD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDE3ICs2NiwyMyBAQAogICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQogCi1TVkdGRUdhdXNzaWFuQmx1ciogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRl
ckVmZmVjdCogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAg
ICAgICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyKTsK
LSAgICAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZm
ZWN0LT5zZXRTdGREZXZpYXRpb25YKHN0ZERldmlhdGlvblgoKSk7Ci0gICAgbV9maWx0ZXJFZmZl
Y3QtPnNldFN0ZERldmlhdGlvblkoc3RkRGV2aWF0aW9uWSgpKTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyht
X2ZpbHRlckVmZmVjdC5nZXQoKSk7IAotICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsK
K2Jvb2wgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWls
ZGVyKQoreworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJ
ZChpbjEoKSk7CisgICAgCisgICAgaWYoIWlucHV0MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUoaW5wdXQxLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSk7
CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAg
IAorICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksOCBAQAogICAgICAg
ICB2b2lkIHNldFN0ZERldmlhdGlvbihmbG9hdCBzdGREZXZpYXRpb25YLCBmbG9hdCBzdGREZXZp
YXRpb25ZKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRkVHYXVzc2lhbkJsdXIqIGZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0Zp
bHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAg
ICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdGhpczsgfQpAQCAtNDksNyArNTAsNyBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBmbG9hdCwgZmxvYXQsIFN0ZERl
dmlhdGlvblgsIHN0ZERldmlhdGlvblgpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIGZsb2F0LCBmbG9hdCwgU3RkRGV2aWF0
aW9uWSwgc3RkRGV2aWF0aW9uWSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRUdhdXNz
aWFuQmx1cj4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFR2F1c3Np
YW5CbHVyPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBA
QAogI2RlZmluZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNfaAogCiAjaWYg
RU5BQkxFKFNWRykKKyNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHU3R5
bGVkRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAJKHJldmlz
aW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZl
TWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTM3ICsyMiwxMjIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNp
bmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1h
dHJpeC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFQ29udm9sdmVNYXRyaXg6OlNW
R0ZFQ29udm9sdmVNYXRyaXgoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0Zp
bHRlckVmZmVjdChmaWx0ZXIpCi0gICAgLCBtX2tlcm5lbFNpemUoKQotICAgICwgbV9kaXZpc29y
KDAuMGYpCi0gICAgLCBtX2JpYXMoMC4wZikKLSAgICAsIG1fdGFyZ2V0T2Zmc2V0KCkKLSAgICAs
IG1fZWRnZU1vZGUoU1ZHX0VER0VNT0RFX1VOS05PV04pCi0gICAgLCBtX2tlcm5lbFVuaXRMZW5n
dGgoKQotICAgICwgbV9wcmVzZXJ2ZUFscGhhKGZhbHNlKQorRkVDb252b2x2ZU1hdHJpeDo6RkVD
b252b2x2ZU1hdHJpeChGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3Qg
RmxvYXRTaXplJiBrZXJuZWxTaXplLCAKKyAgICBjb25zdCBmbG9hdCYgZGl2aXNvciwgY29uc3Qg
ZmxvYXQmIGJpYXMsIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBFZGdlTW9k
ZVR5cGUmIGVkZ2VNb2RlLAorICAgIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgs
IGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQor
ICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX2luMihpbjIpCisg
ICAgLCBtX2tlcm5lbFNpemUoa2VybmVsU2l6ZSkKKyAgICAsIG1fZGl2aXNvcihkaXZpc29yKQor
ICAgICwgbV9iaWFzKGJpYXMpCisgICAgLCBtX3RhcmdldE9mZnNldCh0YXJnZXRPZmZzZXQpCisg
ICAgLCBtX2VkZ2VNb2RlKGVkZ2VNb2RlKQorICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoKGtlcm5l
bFVuaXRMZW5ndGgpCisgICAgLCBtX3ByZXNlcnZlQWxwaGEocHJlc2VydmVBbHBoYSkKKyAgICAs
IG1fa2VybmVsTWF0cml4KGtlcm5lbE1hdHJpeCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUNv
bnZvbHZlTWF0cml4PiBTVkdGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0
ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVDb252b2x2ZU1hdHJpeD4gRkVDb252b2x2ZU1hdHJp
eDo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yLCBjb25zdCBGbG9h
dFNpemUmIGtlcm5lbFNpemUsIAorICAgIGNvbnN0IGZsb2F0JiBkaXZpc29yLCBjb25zdCBmbG9h
dCYgYmlhcywgY29uc3QgRmxvYXRTaXplJiB0YXJnZXRPZmZzZXQsIGNvbnN0IEVkZ2VNb2RlVHlw
ZSYgZWRnZU1vZGUsIAorICAgIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJv
b2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVDb252b2x2ZU1hdHJpeChmaWx0ZXIpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZFQ29udm9sdmVNYXRyaXgoaW4sIGluMiwga2VybmVsU2l6
ZSwgZGl2aXNvciwgYmlhcywgdGFyZ2V0T2Zmc2V0LCBlZGdlTW9kZSwga2VybmVsVW5pdExlbmd0
aCwKKyAgICAgICAgcHJlc2VydmVBbHBoYSwga2VybmVsTWF0cml4KSk7CiB9CiAKLUZsb2F0U2l6
ZSBTVkdGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxTaXplKCkgY29uc3QKKworRmxvYXRTaXplIEZF
Q29udm9sdmVNYXRyaXg6Omtlcm5lbFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX2tlcm5l
bFNpemU7CiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsU2l6ZShGbG9h
dFNpemUga2VybmVsU2l6ZSkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsU2l6ZShG
bG9hdFNpemUga2VybmVsU2l6ZSkKIHsKICAgICBtX2tlcm5lbFNpemUgPSBrZXJuZWxTaXplOyAK
IH0KIAotY29uc3QgVmVjdG9yPGZsb2F0PiYgU1ZHRkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKCkg
Y29uc3QKK2NvbnN0IFZlY3RvcjxmbG9hdD4mIEZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fa2VybmVsTWF0cml4OyAKIH0KIAotdm9pZCBTVkdGRUNvbnZv
bHZlTWF0cml4OjpzZXRLZXJuZWwoY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsKQordm9pZCBG
RUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWwoY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsKQog
ewogICAgIG1fa2VybmVsTWF0cml4ID0ga2VybmVsOyAKIH0KIAotZmxvYXQgU1ZHRkVDb252b2x2
ZU1hdHJpeDo6ZGl2aXNvcigpIGNvbnN0CitmbG9hdCBGRUNvbnZvbHZlTWF0cml4OjpkaXZpc29y
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kaXZpc29yOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZv
bHZlTWF0cml4OjpzZXREaXZpc29yKGZsb2F0IGRpdmlzb3IpCit2b2lkIEZFQ29udm9sdmVNYXRy
aXg6OnNldERpdmlzb3IoZmxvYXQgZGl2aXNvcikKIHsKICAgICBtX2Rpdmlzb3IgPSBkaXZpc29y
OyAKIH0KIAotZmxvYXQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6YmlhcygpIGNvbnN0CitmbG9hdCBG
RUNvbnZvbHZlTWF0cml4OjpiaWFzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iaWFzOyAKIH0K
IAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRCaWFzKGZsb2F0IGJpYXMpCit2b2lkIEZF
Q29udm9sdmVNYXRyaXg6OnNldEJpYXMoZmxvYXQgYmlhcykKIHsKICAgICBtX2JpYXMgPSBiaWFz
OyAKIH0KIAotRmxvYXRTaXplIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnRhcmdldE9mZnNldCgpIGNv
bnN0CitGbG9hdFNpemUgRkVDb252b2x2ZU1hdHJpeDo6dGFyZ2V0T2Zmc2V0KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV90YXJnZXRPZmZzZXQ7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRy
aXg6OnNldFRhcmdldE9mZnNldChGbG9hdFNpemUgdGFyZ2V0T2Zmc2V0KQordm9pZCBGRUNvbnZv
bHZlTWF0cml4OjpzZXRUYXJnZXRPZmZzZXQoRmxvYXRTaXplIHRhcmdldE9mZnNldCkKIHsKICAg
ICBtX3RhcmdldE9mZnNldCA9IHRhcmdldE9mZnNldDsgCiB9CiAKLVNWR0VkZ2VNb2RlVHlwZSBT
VkdGRUNvbnZvbHZlTWF0cml4OjplZGdlTW9kZSgpIGNvbnN0CitFZGdlTW9kZVR5cGUgRkVDb252
b2x2ZU1hdHJpeDo6ZWRnZU1vZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2VkZ2VNb2RlOyAK
IH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRFZGdlTW9kZShTVkdFZGdlTW9kZVR5
cGUgZWRnZU1vZGUpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldEVkZ2VNb2RlKEVkZ2VNb2Rl
VHlwZSBlZGdlTW9kZSkKIHsKICAgICBtX2VkZ2VNb2RlID0gZWRnZU1vZGU7IAogfQogCi1GbG9h
dFBvaW50IFNWR0ZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbFVuaXRMZW5ndGgoKSBjb25zdAorRmxv
YXRQb2ludCBGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxVbml0TGVuZ3RoKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0
cml4OjpzZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCkKK3Zv
aWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsVW5pdExlbmd0aChGbG9hdFBvaW50IGtlcm5l
bFVuaXRMZW5ndGgpCiB7CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoID0ga2VybmVsVW5pdExlbmd0
aDsgCiB9CiAKLWJvb2wgU1ZHRkVDb252b2x2ZU1hdHJpeDo6cHJlc2VydmVBbHBoYSgpIGNvbnN0
Citib29sIEZFQ29udm9sdmVNYXRyaXg6OnByZXNlcnZlQWxwaGEoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3ByZXNlcnZlQWxwaGE7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNl
dFByZXNlcnZlQWxwaGEoYm9vbCBwcmVzZXJ2ZUFscGhhKQordm9pZCBGRUNvbnZvbHZlTWF0cml4
OjpzZXRQcmVzZXJ2ZUFscGhhKGJvb2wgcHJlc2VydmVBbHBoYSkKIHsKICAgICBtX3ByZXNlcnZl
QWxwaGEgPSBwcmVzZXJ2ZUFscGhhOyAKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIFNWR0VkZ2VNb2RlVHlwZSB0KQordm9pZCBGRUNvbnZvbHZlTWF0
cml4OjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6ZHVtcCgpCiB7Ci0g
ICAgc3dpdGNoICh0KQotICAgIHsKLSAgICAgICAgY2FzZSBTVkdfRURHRU1PREVfVU5LTk9XTjoK
LSAgICAgICAgICAgIHRzIDw8ICJVTktOT1dOIjticmVhazsKLSAgICAgICAgY2FzZSBTVkdfRURH
RU1PREVfRFVQTElDQVRFOgotICAgICAgICAgICAgdHMgPDwgIkRVUExJQ0FURSI7YnJlYWs7Ci0g
ICAgICAgIGNhc2UgU1ZHX0VER0VNT0RFX1dSQVA6Ci0gICAgICAgICAgICB0cyA8PCAiV1JBUCI7
IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19FREdFTU9ERV9OT05FOgotICAgICAgICAgICAgdHMg
PDwgIk5PTkUiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1UZXh0U3RyZWFt
JiBTVkdGRUNvbnZvbHZlTWF0cml4OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
IHRzKSBjb25zdAotewotICAgIHRzIDw8ICJbdHlwZT1DT05WT0xWRS1NQVRSSVhdICI7Ci0gICAg
U1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKLSAgICB0cyA8PCAi
IFtvcmRlciAiIDw8IG1fa2VybmVsU2l6ZSA8PCAiXSIKLSAgICAgICAgPDwgIiBba2VybmVsIG1h
dHJpeD0iIDw8IG1fa2VybmVsTWF0cml4ICA8PCAiXSIKLSAgICAgICAgPDwgIiBbZGl2aXNvcj0i
IDw8IG1fZGl2aXNvciA8PCAiXSIKLSAgICAgICAgPDwgIiBbYmlhcz0iIDw8IG1fYmlhcyA8PCAi
XSIKLSAgICAgICAgPDwgIiBbdGFyZ2V0ICIgPDwgbV90YXJnZXRPZmZzZXQgPDwgIl0iCi0gICAg
ICAgIDw8ICIgW2VkZ2UgbW9kZT0iIDw8IG1fZWRnZU1vZGUgPDwgIl0iCi0gICAgICAgIDw8ICIg
W2tlcm5lbCB1bml0IGxlbmd0aCAiIDw8IG1fa2VybmVsVW5pdExlbmd0aCA8PCAiXSIKLSAgICAg
ICAgPDwgIiBbcHJlc2VydmUgYWxwaGE9IiA8PCBtX3ByZXNlcnZlQWxwaGEgPDwgIl0iOwotICAg
IHJldHVybiB0czsKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCShyZXZp
c2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2
ZU1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw1OSArMjMsNjkgQEAKICNkZWZpbmUgU1ZH
RkVDb252b2x2ZU1hdHJpeF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU1ZH
RWRnZU1vZGVUeXBlIHsKLSAgICBTVkdfRURHRU1PREVfVU5LTk9XTiAgID0gMCwKLSAgICBTVkdf
RURHRU1PREVfRFVQTElDQVRFID0gMSwKLSAgICBTVkdfRURHRU1PREVfV1JBUCAgICAgID0gMiwK
LSAgICBTVkdfRURHRU1PREVfTk9ORSAgICAgID0gMwotfTsKLQotY2xhc3MgU1ZHRkVDb252b2x2
ZU1hdHJpeCA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNWR0ZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciop
OwotCi0gICAgRmxvYXRTaXplIGtlcm5lbFNpemUoKSBjb25zdDsKLSAgICB2b2lkIHNldEtlcm5l
bFNpemUoRmxvYXRTaXplKTsKLQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGZs
b2F0IGRpdmlzb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldERpdmlzb3IoZmxvYXQpOwotCi0gICAg
ZmxvYXQgYmlhcygpIGNvbnN0OwotICAgIHZvaWQgc2V0QmlhcyhmbG9hdCk7Ci0KLSAgICBGbG9h
dFNpemUgdGFyZ2V0T2Zmc2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUYXJnZXRPZmZzZXQoRmxv
YXRTaXplKTsKLQotICAgIFNWR0VkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0RWRnZU1vZGUoU1ZHRWRnZU1vZGVUeXBlKTsKLQotICAgIEZsb2F0UG9pbnQga2VybmVs
VW5pdExlbmd0aCgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aChGbG9hdFBv
aW50KTsKLQotICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJl
c2VydmVBbHBoYShib29sKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVDb252
b2x2ZU1hdHJpeChTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgRmxvYXRTaXplIG1fa2VybmVs
U2l6ZTsKLSAgICBmbG9hdCBtX2Rpdmlzb3I7Ci0gICAgZmxvYXQgbV9iaWFzOwotICAgIEZsb2F0
U2l6ZSBtX3RhcmdldE9mZnNldDsKLSAgICBTVkdFZGdlTW9kZVR5cGUgbV9lZGdlTW9kZTsKLSAg
ICBGbG9hdFBvaW50IG1fa2VybmVsVW5pdExlbmd0aDsKLSAgICBib29sIG1fcHJlc2VydmVBbHBo
YTsKLSAgICBWZWN0b3I8ZmxvYXQ+IG1fa2VybmVsTWF0cml4OyAvLyBtYXliZSBzaG91bGQgYmUg
YSByZWFsIG1hdHJpeD8KLX07CisgICAgZW51bSBFZGdlTW9kZVR5cGUgeworICAgICAgICBFREdF
TU9ERV9VTktOT1dOICAgPSAwLAorICAgICAgICBFREdFTU9ERV9EVVBMSUNBVEUgPSAxLAorICAg
ICAgICBFREdFTU9ERV9XUkFQICAgICAgPSAyLAorICAgICAgICBFREdFTU9ERV9OT05FICAgICAg
PSAzCisgICAgfTsKKworICAgIGNsYXNzIEZFQ29udm9sdmVNYXRyaXggOiBwdWJsaWMgRmlsdGVy
RWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFQ29udm9s
dmVNYXRyaXg+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBjb25zdCBGbG9h
dFNpemUmLCAKKyAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgRWRnZU1vZGVUeXBlJiwgY29uc3QgRmxvYXRQb2ludCYsCisg
ICAgICAgICAgICAgICAgYm9vbCwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworCisgICAgICAgIEZs
b2F0U2l6ZSBrZXJuZWxTaXplKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsU2l6ZShG
bG9hdFNpemUpOworCisgICAgICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldEtlcm5lbChjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICAg
ICAgZmxvYXQgZGl2aXNvcigpIGNvbnN0OworICAgICAgICB2b2lkIHNldERpdmlzb3IoZmxvYXQp
OworCisgICAgICAgIGZsb2F0IGJpYXMoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRCaWFzKGZs
b2F0KTsKKworICAgICAgICBGbG9hdFNpemUgdGFyZ2V0T2Zmc2V0KCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0VGFyZ2V0T2Zmc2V0KEZsb2F0U2l6ZSk7CisKKyAgICAgICAgRWRnZU1vZGVUeXBl
IGVkZ2VNb2RlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0RWRnZU1vZGUoRWRnZU1vZGVUeXBl
KTsKKworICAgICAgICBGbG9hdFBvaW50IGtlcm5lbFVuaXRMZW5ndGgoKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9pbnQpOworCisgICAgICAgIGJvb2wg
cHJlc2VydmVBbHBoYSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFByZXNlcnZlQWxwaGEoYm9v
bCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkdW1wKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRUNvbnZvbHZlTWF0cml4KEZpbHRl
ckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IGZsb2F0Jiwg
Y29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEVk
Z2VNb2RlVHlwZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sLCBjb25zdCBWZWN0b3I8ZmxvYXQ+
Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gbV9pbjI7CisgICAgICAgIEZsb2F0U2l6ZSBtX2tlcm5lbFNpemU7Cisg
ICAgICAgIGZsb2F0IG1fZGl2aXNvcjsKKyAgICAgICAgZmxvYXQgbV9iaWFzOworICAgICAgICBG
bG9hdFNpemUgbV90YXJnZXRPZmZzZXQ7CisgICAgICAgIEVkZ2VNb2RlVHlwZSBtX2VkZ2VNb2Rl
OworICAgICAgICBGbG9hdFBvaW50IG1fa2VybmVsVW5pdExlbmd0aDsKKyAgICAgICAgYm9vbCBt
X3ByZXNlcnZlQWxwaGE7CisgICAgICAgIFZlY3RvcjxmbG9hdD4gbV9rZXJuZWxNYXRyaXg7Cisg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAkocmV2aXNp
b24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOTggKzI0LDk5IEBACiAjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0xpZ2h0U291cmNlLmgi
CiAjaW5jbHVkZSAiU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OlNWR0ZF
RGlmZnVzZUxpZ2h0aW5nKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0
ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV9saWdodGluZ0NvbG9yKCkKLSAgICAsIG1fc3VyZmFj
ZVNjYWxlKDAuMGYpCi0gICAgLCBtX2RpZmZ1c2VDb25zdGFudCgwLjBmKQotICAgICwgbV9rZXJu
ZWxVbml0TGVuZ3RoWCgwLjBmKQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWSgwLjBmKQotICAg
ICwgbV9saWdodFNvdXJjZSgwKQorRkVEaWZmdXNlTGlnaHRpbmc6OkZFRGlmZnVzZUxpZ2h0aW5n
KEZpbHRlckVmZmVjdCogaW4gLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgY29uc3QgZmxv
YXQmIHN1cmZhY2VTY2FsZSwKKyAgICBjb25zdCBmbG9hdCYgZGlmZnVzZUNvbnN0YW50LCBjb25z
dCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFgsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3Ro
WSwgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAs
IG1faW4oaW4pCisgICAgLCBtX2xpZ2h0aW5nQ29sb3IobGlnaHRpbmdDb2xvcikKKyAgICAsIG1f
c3VyZmFjZVNjYWxlKHN1cmZhY2VTY2FsZSkKKyAgICAsIG1fZGlmZnVzZUNvbnN0YW50KGRpZmZ1
c2VDb25zdGFudCkKKyAgICAsIG1fa2VybmVsVW5pdExlbmd0aFgoa2VybmVsVW5pdExlbmd0aFgp
CisgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhZKGtlcm5lbFVuaXRMZW5ndGhZKQorICAgICwgbV9s
aWdodFNvdXJjZShsaWdodFNvdXJjZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRURpZmZ1c2VM
aWdodGluZz4gU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyKQorUGFzc1JlZlB0cjxGRURpZmZ1c2VMaWdodGluZz4gRkVEaWZmdXNlTGlnaHRpbmc6
OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluICwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsCisg
ICAgY29uc3QgZmxvYXQmIHN1cmZhY2VTY2FsZSwgY29uc3QgZmxvYXQmIGRpZmZ1c2VDb25zdGFu
dCwgY29uc3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLAorICAgIGNvbnN0IGZsb2F0JiBrZXJu
ZWxVbml0TGVuZ3RoWSwgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHRkVEaWZmdXNlTGlnaHRpbmcoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGRURpZmZ1c2VMaWdodGluZyhpbiwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNj
YWxlLCBkaWZmdXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3Ro
WSwgbGlnaHRTb3VyY2UpKTsKIH0KIAotU1ZHRkVEaWZmdXNlTGlnaHRpbmc6On5TVkdGRURpZmZ1
c2VMaWdodGluZygpCitGRURpZmZ1c2VMaWdodGluZzo6fkZFRGlmZnVzZUxpZ2h0aW5nKCkKIHsK
IH0KIAotQ29sb3IgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0aW5nQ29sb3IoKSBjb25zdAor
Q29sb3IgRkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0aW5nQ29sb3IoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2xpZ2h0aW5nQ29sb3I7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IpCit2b2lkIEZFRGlmZnVz
ZUxpZ2h0aW5nOjpzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKQog
ewogICAgIG1fbGlnaHRpbmdDb2xvciA9IGxpZ2h0aW5nQ29sb3I7CiB9CiAKLWZsb2F0IFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nOjpzdXJmYWNlU2NhbGUoKSBjb25zdCAKK2Zsb2F0IEZFRGlmZnVzZUxp
Z2h0aW5nOjpzdXJmYWNlU2NhbGUoKSBjb25zdCAKIHsKICAgICByZXR1cm4gbV9zdXJmYWNlU2Nh
bGU7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNldFN1cmZhY2VTY2FsZShmbG9h
dCBzdXJmYWNlU2NhbGUpCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUo
ZmxvYXQgc3VyZmFjZVNjYWxlKQogewogICAgIG1fc3VyZmFjZVNjYWxlID0gc3VyZmFjZVNjYWxl
OwogfQogCi1mbG9hdCBTVkdGRURpZmZ1c2VMaWdodGluZzo6ZGlmZnVzZUNvbnN0YW50KCkgY29u
c3QKK2Zsb2F0IEZFRGlmZnVzZUxpZ2h0aW5nOjpkaWZmdXNlQ29uc3RhbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2RpZmZ1c2VDb25zdGFudDsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdo
dGluZzo6c2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0IGRpZmZ1c2VDb25zdGFudCkKK3ZvaWQgRkVE
aWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29uc3RhbnQp
CiB7CiAgICAgbV9kaWZmdXNlQ29uc3RhbnQgPSBkaWZmdXNlQ29uc3RhbnQ7CiB9CiAKLWZsb2F0
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0CitmbG9hdCBG
RURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFgoKSBjb25zdAogewogICAgIHJldHVy
biBtX2tlcm5lbFVuaXRMZW5ndGhYOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpz
ZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCkKK3ZvaWQgRkVEaWZm
dXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhY
KQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFggPSBrZXJuZWxVbml0TGVuZ3RoWDsKIH0KIAot
ZmxvYXQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QKK2Zs
b2F0IEZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFk7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRp
bmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKQordm9pZCBG
RURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQga2VybmVsVW5pdExl
bmd0aFkpCiB7CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWSA9IGtlcm5lbFVuaXRMZW5ndGhZOwog
fQogCi1jb25zdCBMaWdodFNvdXJjZSogU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0U291cmNl
KCkgY29uc3QKK2NvbnN0IExpZ2h0U291cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3Vy
Y2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0U291cmNlLmdldCgpOwogfQogCi12b2lk
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSogbGlnaHRT
b3VyY2UpCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZShMaWdodFNvdXJj
ZSogbGlnaHRTb3VyY2UpCiB7ICAgIAogICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsK
IH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmV4dGVybmFsUmVwcmVzZW50
YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjphcHBs
eSgpCit7Cit9CisKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmR1bXAoKQogewotICAgIHRzIDw8
ICJbdHlwZT1ESUZGVVNFLUxJR0hUSU5HXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbc3VyZmFjZSBzY2FsZT0iIDw8IG1f
c3VyZmFjZVNjYWxlIDw8ICJdIgotICAgICAgICA8PCAiIFtkaWZmdXNlIGNvbnN0YW50PSIgPDwg
bV9kaWZmdXNlQ29uc3RhbnQgPDwgIl0iCi0gICAgICAgIDw8ICIgW2tlcm5lbCB1bml0IGxlbmd0
aCAiIDw8IG1fa2VybmVsVW5pdExlbmd0aFggPDwgIiwgIiA8PCBtX2tlcm5lbFVuaXRMZW5ndGhZ
IDw8ICJdIjsKLSAgICByZXR1cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nLmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw1MSArMjQsNTEg
QEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJD
b2xvci5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIExpZ2h0U291cmNlOworICAg
IGNsYXNzIExpZ2h0U291cmNlOwogCi1jbGFzcyBTVkdGRURpZmZ1c2VMaWdodGluZyA6IHB1Ymxp
YyBTVkdGaWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLSAgICB2aXJ0dWFs
IH5TVkdGRURpZmZ1c2VMaWdodGluZygpOwotCi0gICAgQ29sb3IgbGlnaHRpbmdDb2xvcigpIGNv
bnN0OwotICAgIHZvaWQgc2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYpOwotCi0gICAgZmxv
YXQgc3VyZmFjZVNjYWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdXJmYWNlU2NhbGUoZmxvYXQp
OwotCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREaWZm
dXNlQ29uc3RhbnQoZmxvYXQpOwotCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25z
dDsKLSAgICB2b2lkIHNldEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0KTsKLQotICAgIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWShm
bG9hdCk7Ci0KLSAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAg
ICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7Ci0KLSAgICB2aXJ0dWFsIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi0jaWYg
UExBVEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxv
YXRSZWN0JiBiYm94KSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0gICAgCi0gICAgQ29sb3IgbV9saWdodGlu
Z0NvbG9yOwotICAgIGZsb2F0IG1fc3VyZmFjZVNjYWxlOwotICAgIGZsb2F0IG1fZGlmZnVzZUNv
bnN0YW50OwotICAgIGZsb2F0IG1fa2VybmVsVW5pdExlbmd0aFg7Ci0gICAgZmxvYXQgbV9rZXJu
ZWxVbml0TGVuZ3RoWTsKLSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7Ci19
OworICAgIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRURpZmZ1c2VMaWdodGluZz4g
Y3JlYXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IENvbG9yJiwgY29uc3QgZmxvYXQmLCBjb25zdCBm
bG9hdCYsCisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0
U291cmNlKik7CisgICAgICAgIHZpcnR1YWwgfkZFRGlmZnVzZUxpZ2h0aW5nKCk7CisKKyAgICAg
ICAgQ29sb3IgbGlnaHRpbmdDb2xvcigpIGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0aW5n
Q29sb3IoY29uc3QgQ29sb3ImKTsKKworICAgICAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRTdXJmYWNlU2NhbGUoZmxvYXQpOworCisgICAgICAgIGZsb2F0
IGRpZmZ1c2VDb25zdGFudCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldERpZmZ1c2VDb25zdGFu
dChmbG9hdCk7CisKKyAgICAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCk7CisKKyAgICAgICAgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWxVbml0TGVu
Z3RoWShmbG9hdCk7CisKKyAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsK
KyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVy
RWZmZWN0KiwgY29uc3QgQ29sb3ImLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwKKyAgICAg
ICAgICAgICAgICBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgTGlnaHRTb3VyY2UqKTsKKwor
ICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOworICAgICAgICBDb2xvciBtX2xpZ2h0
aW5nQ29sb3I7CisgICAgICAgIGZsb2F0IG1fc3VyZmFjZVNjYWxlOworICAgICAgICBmbG9hdCBt
X2RpZmZ1c2VDb25zdGFudDsKKyAgICAgICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWDsKKyAg
ICAgICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWTsKKyAgICAgICAgUmVmUHRyPExpZ2h0U291
cmNlPiBtX2xpZ2h0U291cmNlOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3Bs
YWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDky
ICsyMiw2MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKICNpbmNs
dWRlICJTVkdGRURpc3BsYWNlbWVudE1hcC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNW
R0ZFRGlzcGxhY2VtZW50TWFwOjpTVkdGRURpc3BsYWNlbWVudE1hcChTVkdSZXNvdXJjZUZpbHRl
ciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1feENoYW5u
ZWxTZWxlY3RvcihTVkdfQ0hBTk5FTF9VTktOT1dOKQotICAgICwgbV95Q2hhbm5lbFNlbGVjdG9y
KFNWR19DSEFOTkVMX1VOS05PV04pCi0gICAgLCBtX3NjYWxlKDApCitGRURpc3BsYWNlbWVudE1h
cDo6RkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIs
IGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUmIHhDaGFubmVsU2VsZWN0b3IsCisgICAgY29uc3Qg
Q2hhbm5lbFNlbGVjdG9yVHlwZSYgeUNoYW5uZWxTZWxlY3RvciwgY29uc3QgZmxvYXQmIHNjYWxl
KQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX2luMihpbjIp
CisgICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoeENoYW5uZWxTZWxlY3RvcikKKyAgICAsIG1feUNo
YW5uZWxTZWxlY3Rvcih5Q2hhbm5lbFNlbGVjdG9yKQorICAgICwgbV9zY2FsZShzY2FsZSkKIHsK
IH0KIAotUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcD4gU1ZHRkVEaXNwbGFjZW1lbnRN
YXA6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1JlZlB0cjxGRURpc3Bs
YWNlbWVudE1hcD4gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBG
aWx0ZXJFZmZlY3QqIGluMiwKKyAgICBjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlJiB4Q2hhbm5l
bFNlbGVjdG9yLCBjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlJiB5Q2hhbm5lbFNlbGVjdG9yLCBj
b25zdCBmbG9hdCYgc2NhbGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGRURpc3Bs
YWNlbWVudE1hcChmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFRGlzcGxhY2Vt
ZW50TWFwKGluLCBpbjIsIHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxl
KSk7CiB9CiAKLVN0cmluZyBTVkdGRURpc3BsYWNlbWVudE1hcDo6aW4yKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9pbjI7Ci19Ci0KLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNldEluMihj
b25zdCBTdHJpbmcgJmluMikKLXsKLSAgICBtX2luMiA9IGluMjsKLX0KLQotU1ZHQ2hhbm5lbFNl
bGVjdG9yVHlwZSBTVkdGRURpc3BsYWNlbWVudE1hcDo6eENoYW5uZWxTZWxlY3RvcigpIGNvbnN0
CitDaGFubmVsU2VsZWN0b3JUeXBlIEZFRGlzcGxhY2VtZW50TWFwOjp4Q2hhbm5lbFNlbGVjdG9y
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV94Q2hhbm5lbFNlbGVjdG9yOwogfQogCi12b2lkIFNW
R0ZFRGlzcGxhY2VtZW50TWFwOjpzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxT
ZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcikKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNl
dFhDaGFubmVsU2VsZWN0b3IoY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVj
dG9yKQogewogICAgIG1feENoYW5uZWxTZWxlY3RvciA9IHhDaGFubmVsU2VsZWN0b3I7CiB9CiAK
LVNWR0NoYW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnlDaGFubmVsU2Vs
ZWN0b3IoKSBjb25zdAorQ2hhbm5lbFNlbGVjdG9yVHlwZSBGRURpc3BsYWNlbWVudE1hcDo6eUNo
YW5uZWxTZWxlY3RvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feUNoYW5uZWxTZWxlY3RvcjsK
IH0KIAotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcihjb25z
dCBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IpCit2b2lkIEZFRGlzcGxh
Y2VtZW50TWFwOjpzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUg
eUNoYW5uZWxTZWxlY3RvcikKIHsKICAgICBtX3lDaGFubmVsU2VsZWN0b3IgPSB5Q2hhbm5lbFNl
bGVjdG9yOwogfQogCi1mbG9hdCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2NhbGUoKSBjb25zdAor
ZmxvYXQgRkVEaXNwbGFjZW1lbnRNYXA6OnNjYWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
Y2FsZTsKIH0KIAotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgc2Nh
bGUpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKIHsKICAg
ICBtX3NjYWxlID0gc2NhbGU7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHQpCit2b2lkIEZFRGlzcGxhY2Vt
ZW50TWFwOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmR1bXAoKQog
ewotICAgIHN3aXRjaCAodCkKLSAgICB7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfVU5LTk9X
TjoKLSAgICAgICAgICAgIHRzIDw8ICJVTktOT1dOIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
X0NIQU5ORUxfUjoKLSAgICAgICAgICAgIHRzIDw8ICJSRUQiOyBicmVhazsKLSAgICAgICAgY2Fz
ZSBTVkdfQ0hBTk5FTF9HOgotICAgICAgICAgICAgdHMgPDwgIkdSRUVOIjsgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU1ZHX0NIQU5ORUxfQjoKLSAgICAgICAgICAgIHRzIDw8ICJCTFVFIjsgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfQToKLSAgICAgICAgICAgIHRzIDw8ICJBTFBIQSI7
IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIFNWR0ZFRGlz
cGxhY2VtZW50TWFwOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25z
dAotewotICAgIHRzIDw8ICJbdHlwZT1ESVNQTEFDRU1FTlQtTUFQXSAiOwotICAgIFNWR0ZpbHRl
ckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgaWYgKCFpbjIoKS5pc0Vt
cHR5KCkpCi0gICAgICAgIHRzIDw8ICIgW2luMj0iIDw8IGluMigpIDw8ICJdIjsKLSAgICB0cyA8
PCAiIFtzY2FsZT0iIDw8IG1fc2NhbGUgPDwgIl0iCi0gICAgICAgIDw8ICIgW3ggY2hhbm5lbCBz
ZWxlY3Rvcj0iIDw8IG1feENoYW5uZWxTZWxlY3RvciA8PCAiXSIKLSAgICAgICAgPDwgIiBbeSBj
aGFubmVsIHNlbGVjdG9yPSIgPDwgbV95Q2hhbm5lbFNlbGVjdG9yIDw8ICJdIjsKLSAgICByZXR1
cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9u
IDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVu
dE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw0OCArMjMsNDYgQEAKICNkZWZpbmUgU1ZHRkVE
aXNwbGFjZW1lbnRNYXBfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ZW51bSBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHsKLSAgICBTVkdfQ0hBTk5FTF9VTktOT1dOID0g
MCwKLSAgICBTVkdfQ0hBTk5FTF9SICAgICAgID0gMSwKLSAgICBTVkdfQ0hBTk5FTF9HICAgICAg
ID0gMiwKLSAgICBTVkdfQ0hBTk5FTF9CICAgICAgID0gMywKLSAgICBTVkdfQ0hBTk5FTF9BICAg
ICAgID0gNAotfTsKLQotY2xhc3MgU1ZHRkVEaXNwbGFjZW1lbnRNYXAgOiBwdWJsaWMgU1ZHRmls
dGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNl
bWVudE1hcD4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBTdHJpbmcgaW4yKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRJbjIoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBTVkdDaGFubmVs
U2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdDsKLSAgICB2b2lkIHNldFhDaGFu
bmVsU2VsZWN0b3IoY29uc3QgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSk7Ci0KLSAgICBTVkdDaGFu
bmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdDsKLSAgICB2b2lkIHNldFlD
aGFubmVsU2VsZWN0b3IoY29uc3QgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSk7Ci0KLSAgICBmbG9h
dCBzY2FsZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0U2NhbGUoZmxvYXQgc2NhbGUpOwotCi0gICAg
dmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBj
b25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmls
dGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAg
ICBTVkdGRURpc3BsYWNlbWVudE1hcChTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgU1ZHQ2hh
bm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFubmVsU2VsZWN0b3I7Ci0gICAgU1ZHQ2hhbm5lbFNlbGVj
dG9yVHlwZSBtX3lDaGFubmVsU2VsZWN0b3I7Ci0gICAgZmxvYXQgbV9zY2FsZTsKLSAgICBTdHJp
bmcgbV9pbjI7Ci19OworICAgIGVudW0gQ2hhbm5lbFNlbGVjdG9yVHlwZSB7CisgICAgICAgIENI
QU5ORUxfVU5LTk9XTiA9IDAsCisgICAgICAgIENIQU5ORUxfUiAgICAgICA9IDEsCisgICAgICAg
IENIQU5ORUxfRyAgICAgICA9IDIsCisgICAgICAgIENIQU5ORUxfQiAgICAgICA9IDMsCisgICAg
ICAgIENIQU5ORUxfQSAgICAgICA9IDQKKyAgICB9OworICAgIAorICAgIGNsYXNzIEZFRGlzcGxh
Y2VtZW50TWFwIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGRURpc3BsYWNlbWVudE1hcD4gY3JlYXRlKEZpbHRlckVmZmVjdCos
IEZpbHRlckVmZmVjdCosIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUmLAorICAgICAgICAgICAg
ICAgIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUmLCBjb25zdCBmbG9hdCYpOworCisgICAgICAg
IENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0OworICAgICAgICB2
b2lkIHNldFhDaGFubmVsU2VsZWN0b3IoY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSk7CisKKyAg
ICAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlKTsK
KworICAgICAgICBmbG9hdCBzY2FsZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNjYWxlKGZs
b2F0IHNjYWxlKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZFRGlzcGxhY2VtZW50
TWFwKEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5
cGUmLAorICAgICAgICAgICAgY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSYsIGNvbnN0IGZsb2F0
Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gbV9pbjI7CisgICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUgbV94Q2hh
bm5lbFNlbGVjdG9yOworICAgICAgICBDaGFubmVsU2VsZWN0b3JUeXBlIG1feUNoYW5uZWxTZWxl
Y3RvcjsKKyAgICAgICAgZmxvYXQgbV9zY2FsZTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29k
LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw1MCArMjIsNDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNp
bmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU1ZHRkVGbG9vZC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRmxvb2Q6OlNWR0ZFRmxvb2QoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAgLCBt
X2Zsb29kQ29sb3IoKQotICAgICwgbV9mbG9vZE9wYWNpdHkoMC4wZikKK0ZFRmxvb2Q6OkZFRmxv
b2QoY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGNvbnN0IGZsb2F0JiBmbG9vZE9wYWNpdHkpCisg
ICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9mbG9vZENvbG9yKGZsb29kQ29sb3IpCisgICAg
LCBtX2Zsb29kT3BhY2l0eShmbG9vZE9wYWNpdHkpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVG
bG9vZD4gU1ZHRkVGbG9vZDo6Y3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNz
UmVmUHRyPEZFRmxvb2Q+IEZFRmxvb2Q6OmNyZWF0ZShjb25zdCBDb2xvciYgZmxvb2RDb2xvciwg
Y29uc3QgZmxvYXQmIGZsb29kT3BhY2l0eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R0ZFRmxvb2QoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUZsb29kKGZsb29k
Q29sb3IsIGZsb29kT3BhY2l0eSkpOwogfQogCi1Db2xvciBTVkdGRUZsb29kOjpmbG9vZENvbG9y
KCkgY29uc3QKK0NvbG9yIEZFRmxvb2Q6OmZsb29kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVy
biBtX2Zsb29kQ29sb3I7CiB9CiAKLXZvaWQgU1ZHRkVGbG9vZDo6c2V0Rmxvb2RDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCit2b2lkIEZFRmxvb2Q6OnNldEZsb29kQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQogewogICAgIG1fZmxvb2RDb2xvciA9IGNvbG9yOwogfQogCi1mbG9hdCBTVkdGRUZs
b29kOjpmbG9vZE9wYWNpdHkoKSBjb25zdAorZmxvYXQgRkVGbG9vZDo6Zmxvb2RPcGFjaXR5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9mbG9vZE9wYWNpdHk7CiB9CiAKLXZvaWQgU1ZHRkVGbG9v
ZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb29kT3BhY2l0eSkKK3ZvaWQgRkVGbG9vZDo6c2V0
Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb29kT3BhY2l0eSkKIHsKICAgICBtX2Zsb29kT3BhY2l0eSA9
IGZsb29kT3BhY2l0eTsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVGbG9vZDo6ZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKK3ZvaWQgRkVGbG9vZDo6YXBwbHkoKQor
eworfQorCit2b2lkIEZFRmxvb2Q6OmR1bXAoKQogewotICAgIHRzIDw8ICJbdHlwZT1GTE9PRF0g
IjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAg
IHRzIDw8ICIgW2NvbG9yPSIgPDwgZmxvb2RDb2xvcigpIDw8ICJdIgotICAgICAgICA8PCAiIFtv
cGFjaXR5PSIgPDwgZmxvb2RPcGFjaXR5KCkgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUZsb29kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUZsb29kLmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMyICsyNCwyOSBAQAog
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9y
LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRkVGbG9vZCA6IHB1YmxpYyBT
VkdGaWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRmxv
b2Q+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOworICAgIGNsYXNzIEZFRmxvb2QgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZFRmxvb2Q+IGNyZWF0ZShjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0Jik7CiAKLSAgICBDb2xv
ciBmbG9vZENvbG9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9y
ICYpOworICAgICAgICBDb2xvciBmbG9vZENvbG9yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
Rmxvb2RDb2xvcihjb25zdCBDb2xvciAmKTsKIAotICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNv
bnN0OwotICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsKKyAgICAgICAgZmxvYXQgZmxv
b2RPcGFjaXR5KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsK
IAotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZHVtcCgpOwogCi0jaWYgUExBVEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRl
ciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdDsKLSNlbmRpZgorICAg
IHByaXZhdGU6CisgICAgICAgIEZFRmxvb2QoY29uc3QgQ29sb3ImLCBjb25zdCBmbG9hdCYpOwog
Ci1wcml2YXRlOgotICAgIFNWR0ZFRmxvb2QoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIENv
bG9yIG1fZmxvb2RDb2xvcjsKLSAgICBmbG9hdCBtX2Zsb29kT3BhY2l0eTsKLX07CisgICAgICAg
IENvbG9yIG1fZmxvb2RDb2xvcjsKKyAgICAgICAgZmxvYXQgbV9mbG9vZE9wYWNpdHk7CisgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gMzUwMDYp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNDggKzIzLDQ4IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVHYXVzc2lh
bkJsdXI6OlNWR0ZFR2F1c3NpYW5CbHVyKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAg
OiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV94KDAuMGYpCi0gICAgLCBtX3koMC4w
ZikKK0ZFR2F1c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1cihGaWx0ZXJFZmZlY3QqIGluLCBjb25z
dCBmbG9hdCYgeCwgY29uc3QgZmxvYXQmIHkpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwg
bV9pbihpbikKKyAgICAsIG1feCh4KQorICAgICwgbV95KHkpCiB7CiB9CiAKLVBhc3NSZWZQdHI8
U1ZHRkVHYXVzc2lhbkJsdXI+IFNWR0ZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVHYXVzc2lhbkJsdXI+IEZFR2F1c3NpYW5CbHVy
OjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgZmxvYXQmIHgsIGNvbnN0IGZsb2F0JiB5
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVHYXVzc2lhbkJsdXIoZmlsdGVyKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUdhdXNzaWFuQmx1cihpbiwgeCwgeSkpOwogfQog
Ci1mbG9hdCBTVkdGRUdhdXNzaWFuQmx1cjo6c3RkRGV2aWF0aW9uWCgpIGNvbnN0CitmbG9hdCBG
RUdhdXNzaWFuQmx1cjo6c3RkRGV2aWF0aW9uWCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feDsK
IH0KIAotdm9pZCBTVkdGRUdhdXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9uWChmbG9hdCB4KQor
dm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9uWChmbG9hdCB4KQogewogICAgIG1f
eCA9IHg7CiB9CiAKLWZsb2F0IFNWR0ZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKCkgY29u
c3QKK2Zsb2F0IEZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV95OwogfQogCi12b2lkIFNWR0ZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25Z
KGZsb2F0IHkpCit2b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZsb2F0IHkp
CiB7CiAgICAgbV95ID0geTsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVHYXVzc2lhbkJsdXI6OmV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFR2F1c3Np
YW5CbHVyOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmR1bXAoKQogewot
ICAgIHRzIDw8ICJbdHlwZT1HQVVTU0lBTi1CTFVSXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbc3RkIGRldi4geD0iIDw8
IHN0ZERldmlhdGlvblgoKSA8PCAiIHk9IiA8PCBzdGREZXZpYXRpb25ZKCkgPDwgIl0iOwotICAg
IHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24g
MzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMyICsyMywzMCBAQAogI2RlZmluZSBTVkdGRUdhdXNz
aWFuQmx1cl9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5j
bHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgU1ZH
RmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUdhdXNz
aWFuQmx1cj4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBmbG9hdCBzdGREZXZp
YXRpb25YKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0KTsKLQotICAg
IGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdDsKLSAgICB2b2lkIHNldFN0ZERldmlhdGlvblko
ZmxvYXQpOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lG
aWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYK
LQotcHJpdmF0ZToKLSAgICBTVkdGRUdhdXNzaWFuQmx1cihTVkdSZXNvdXJjZUZpbHRlciopOwot
Ci0gICAgZmxvYXQgbV94OwotICAgIGZsb2F0IG1feTsKLX07CisgICAgY2xhc3MgRkVHYXVzc2lh
bkJsdXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZFR2F1c3NpYW5CbHVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
ZmxvYXQmLCBjb25zdCBmbG9hdCYpOworCisgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0KTsKKworICAgICAgICBm
bG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9u
WShmbG9hdCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkdW1wKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRUdhdXNzaWFuQmx1cihG
aWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgZmxvYXQgbV94OworICAgICAgICBmbG9h
dCBtX3k7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0NnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw3NCAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJv
amVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFp
bnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCi0jaW5jbHVk
ZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQotI2ltcG9ydCAiV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVEaWZmdXNlTGlnaHRp
bmc6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBjb25z
dCBMaWdodFNvdXJjZSogbGlnaHQgPSBsaWdodFNvdXJjZSgpOwotICAgIGlmICghbGlnaHQpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIgY2xhc3Nd
OwotCi0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIFNW
R1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0
aWNfY2FzdDxTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxh
dGZvcm1EYXRhKCkpOwotCi0gICAgQ0lGaWx0ZXIqIGZpbHRlcjsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAi
V0tEaWZmdXNlTGlnaHRpbmciXTsKLSAgICBpZiAoIWZpbHRlcikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAgIENJSW1hZ2UqIGlucHV0SW1hZ2Ug
PSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhpcyk7Ci0gICAgRkVfUVVBUlRaX0NI
RUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIENJRmlsdGVyKiBub3JtYWxzID0gZ2V0Tm9ybWFs
TWFwKGlucHV0SW1hZ2UsIHN1cmZhY2VTY2FsZSgpKTsKLSAgICBpZiAoIW5vcm1hbHMpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBDSUZpbHRlciogbGlnaHRWZWN0b3JzID0gZ2V0TGlnaHRW
ZWN0b3JzKG5vcm1hbHMsIGxpZ2h0LCBzdXJmYWNlU2NhbGUoKSk7Ci0gICAgaWYgKCFsaWdodFZl
Y3RvcnMpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbZmlsdGVyIHNldFZhbHVlOltub3Jt
YWxzIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dE5vcm1hbE1hcCJd
OwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2xpZ2h0VmVjdG9ycyB2YWx1ZUZvcktleTpAIm91dHB1
dEltYWdlIl0gZm9yS2V5OkAiaW5wdXRMaWdodFZlY3RvcnMiXTsKLSAgICBbZmlsdGVyIHNldFZh
bHVlOmNpQ29sb3IobGlnaHRpbmdDb2xvcigpKSBmb3JLZXk6QCJpbnB1dExpZ2h0aW5nQ29sb3Ii
XTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3VyZmFj
ZVNjYWxlKCldIGZvcktleTpAImlucHV0U3VyZmFjZVNjYWxlIl07Ci0gICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmRpZmZ1c2VDb25zdGFudCgpXSBmb3JLZXk6
QCJpbnB1dERpZmZ1c2VDb25zdGFudCJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDprZXJuZWxVbml0TGVuZ3RoWCgpXSBmb3JLZXk6QCJpbnB1dEtlcm5l
bFVuaXRMZW5ndGhYIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0Omtlcm5lbFVuaXRMZW5ndGhZKCldIGZvcktleTpAImlucHV0S2VybmVsVW5pdExlbmd0
aFkiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FV
QVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9TVkdGRURpc3BsYWNlbWVudE1hcENnLm1tCShyZXZpc2lvbiAzNTAw
NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRN
YXBDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUg
IlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQot
I2ltcG9ydCAiV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1DSUZpbHRlciogU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OmdldENJRmlsdGVyKGNvbnN0IEZs
b2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVy
ID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRl
clBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRh
TWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0KLSAgICBDSUZpbHRlciogZmlsdGVy
ID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBbV0tEaXNwbGFj
ZW1lbnRNYXBGaWx0ZXIgY2xhc3NdOwotICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRo
TmFtZTpAIldLRGlzcGxhY2VtZW50TWFwRmlsdGVyIl07Ci0gICAgW2ZpbHRlciBzZXREZWZhdWx0
c107Ci0gICAgQ0lJbWFnZSogaW5wdXRJbWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW5wdXRJ
bWFnZSh0aGlzKTsKLSAgICBDSUltYWdlKiBkaXNwbGFjZW1lbnRNYXAgPSBmaWx0ZXJQbGF0Zm9y
bURhdGEtPmltYWdlRm9yTmFtZShpbjIoKSk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlu
cHV0SW1hZ2UpOwotICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChkaXNwbGFjZW1lbnRNYXApOwot
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0g
ICAgW2ZpbHRlciBzZXRWYWx1ZTpkaXNwbGFjZW1lbnRNYXAgZm9yS2V5OkAiaW5wdXREaXNwbGFj
ZW1lbnRNYXAiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmdldFZlY3RvckZvckNoYW5uZWwoeENo
YW5uZWxTZWxlY3RvcigpKSBmb3JLZXk6QCJpbnB1dFhDaGFubmVsU2VsZWN0b3IiXTsKLSAgICBb
ZmlsdGVyIHNldFZhbHVlOmdldFZlY3RvckZvckNoYW5uZWwoeUNoYW5uZWxTZWxlY3RvcigpKSBm
b3JLZXk6QCJpbnB1dFlDaGFubmVsU2VsZWN0b3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6c2NhbGUoKV0gZm9yS2V5OkAiaW5wdXRTY2FsZSJdOwot
Ci0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09V
VFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVG
bG9vZENnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVGbG9vZENnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU0ICswLDAg
QEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVGbG9vZC5oIgotCi0jaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLSNpbmNsdWRlICJD
Z1N1cHBvcnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVGbG9v
ZDo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jl
c291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVz
b3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsK
LSAgICBDSUZpbHRlciogZmlsdGVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
LSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbnN0YW50Q29sb3JH
ZW5lcmF0b3IiXTsKLSAgICBbZmlsdGVyIHNldERlZmF1bHRzXTsKLSAgICBDR0NvbG9yUmVmIGNv
bG9yID0gY2dDb2xvcihmbG9vZENvbG9yKCkpOwotICAgIENHQ29sb3JSZWYgd2l0aEFscGhhID0g
Q0dDb2xvckNyZWF0ZUNvcHlXaXRoQWxwaGEoY29sb3IsIENHQ29sb3JHZXRBbHBoYShjb2xvcikg
KiBmbG9vZE9wYWNpdHkoKSk7Ci0gICAgQ0lDb2xvciogaW5wdXRDb2xvciA9IFtDSUNvbG9yIGNv
bG9yV2l0aENHQ29sb3I6d2l0aEFscGhhXTsKLSAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Ci0g
ICAgQ0dDb2xvclJlbGVhc2Uod2l0aEFscGhhKTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0
Q29sb3IgZm9yS2V5OkAiaW5wdXRDb2xvciJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJS
RUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cu
bW0JKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9T
VkdGRUdhdXNzaWFuQmx1ckNnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBl
cnNDZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRUdhdXNzaWFu
Qmx1cjo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNW
R1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBGRV9RVUFSVFpfU0VU
VVBfSU5QVVQoQCJDSUdhdXNzaWFuUHlyYW1pZCIpOwotCi0gICAgZmxvYXQgaW5wdXRSYWRpdXMg
PSBzdGREZXZpYXRpb25YKCk7Ci0gICAgaWYgKGlucHV0UmFkaXVzICE9IHN0ZERldmlhdGlvblko
KSkgewotICAgICAgICBmbG9hdCBpbnB1dEFzcGVjdFJhdGlvID0gc3RkRGV2aWF0aW9uWCgpL3N0
ZERldmlhdGlvblkoKTsKLSAgICAgICAgLy8gRklYTUU6IGlucHV0QXNwZWN0UmF0aW8gb25seSBz
dXBwb3J0IHRoZSByYW5nZSAuNSB0byAyLjAhCi0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDppbnB1dEFzcGVjdFJhdGlvXSBmb3JLZXk6QCJpbnB1dEFz
cGVjdFJhdGlvIl07Ci0gICAgfQotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDppbnB1dFJhZGl1c10gZm9yS2V5OkAiaW5wdXRSYWRpdXMiXTsKLQotICAgIEZF
X1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVU
VVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0Nn
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhl
bHBlcnNDZy5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNJVmVjdG9yKiBnZXRWZWN0b3JGb3JDaGFubmVsKFNW
R0NoYW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCk7CitDSVZlY3RvciogZ2V0VmVjdG9yRm9yQ2hh
bm5lbChDaGFubmVsU2VsZWN0b3JUeXBlIGNoYW5uZWwpOwogQ0lDb2xvciogY2lDb2xvcihjb25z
dCBDb2xvciYgYyk7CiAKIC8vIExpZ2h0aW5nCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cubW0JKHJldmlzaW9uIDM1MDA2KQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTggKzM5LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0lW
ZWN0b3IqIGdldFZlY3RvckZvckNoYW5uZWwoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVs
KQorQ0lWZWN0b3IqIGdldFZlY3RvckZvckNoYW5uZWwoQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFu
bmVsKQogewogICAgIHN3aXRjaCAoY2hhbm5lbCkgewotICAgIGNhc2UgU1ZHX0NIQU5ORUxfVU5L
Tk9XTjoKKyAgICBjYXNlIENIQU5ORUxfVU5LTk9XTjoKICAgICAgICAgcmV0dXJuIG5pbDsgICAg
Ci0gICAgY2FzZSBTVkdfQ0hBTk5FTF9SOgorICAgIGNhc2UgQ0hBTk5FTF9SOgogICAgICAgICBy
ZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMGYgWTowLjBmIFo6MC4wZiBXOjAuMGZdOwot
ICAgIGNhc2UgU1ZHX0NIQU5ORUxfRzoKKyAgICBjYXNlIENIQU5ORUxfRzoKICAgICAgICAgcmV0
dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6MS4wZiBaOjAuMGYgVzowLjBmXTsKLSAg
ICBjYXNlIFNWR19DSEFOTkVMX0I6CisgICAgY2FzZSBDSEFOTkVMX0I6CiAgICAgICAgIHJldHVy
biBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjAuMGYgWjoxLjBmIFc6MC4wZl07Ci0gICAg
Y2FzZSBTVkdfQ0hBTk5FTF9BOgorICAgIGNhc2UgQ0hBTk5FTF9BOgogICAgICAgICByZXR1cm4g
W0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTowLjBmIFo6MC4wZiBXOjEuMGZdOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjAuMGYg
WjowLjBmIFc6MC4wZl07Cg==
</data>
<flag name="review"
          id="9725"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22101</attachid>
            <date>2008-07-05 14:29:21 -0700</date>
            <delta_ts>2008-07-07 03:31:40 -0700</delta_ts>
            <desc>Trying again, again</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>68258</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIxIEBACisyMDA4LTA3LTA0ICBBbGV4IE1hdGhld3MgIDxwb3NzZXNzZWRwZW5n
dWluYm9iQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBidWcgMTk4MzU6IFdlYktpdCBuZWVkcyBjcm9zcy1wbGF0Zm9ybSBmaWx0ZXIg
c3lzdGVtCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MzU+CisKKyAgICAgICAgTW9yZSBjbGFzcyByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBm
b3IgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIAorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRzKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN0cmluZ1RvQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252
b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpGRUNv
bnZvbHZlTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpkaXZpc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6
OnNldERpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6Ymlhcyk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRCaWFzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnRhcmdldE9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRUYXJnZXRPZmZzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb252b2x2ZU1hdHJpeDo6ZWRnZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252
b2x2ZU1hdHJpeDo6c2V0RWRnZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1h
dHJpeDo6a2VybmVsVW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0
cml4OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVN
YXRyaXg6OnByZXNlcnZlQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJp
eDo6c2V0UHJlc2VydmVBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4
OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpkdW1wKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4Lmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpG
RURpZmZ1c2VMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNl
TGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0aW5n
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0aW5n
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnN1cmZhY2VTY2Fs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpkaWZmdXNlQ29uc3RhbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0
aFgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRM
ZW5ndGhYKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0
TGVuZ3RoWSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVs
VW5pdExlbmd0aFkpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodFNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmR1bXApOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNw
bGFjZW1lbnRNYXA6OnhDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNw
bGFjZW1lbnRNYXA6OnNldFhDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OnlDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OnNldFlDaGFubmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
RkVEaXNwbGFjZW1lbnRNYXA6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2Vt
ZW50TWFwOjpzZXRTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OmR1bXApOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxv
b2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6RkVGbG9vZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUZsb29kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6Zmxv
b2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpzZXRGbG9vZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmZsb29kT3BhY2l0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6ZHVtcCk6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjpGRUdhdXNzaWFuQmx1cik6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRp
b25YKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25Y
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUdhdXNzaWFuQmx1cjo6ZHVtcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVHYXVzc2lhbkJsdXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RURpZmZ1c2VMaWdodGluZ0NnLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1NWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW06IFJlbW92ZWQuCisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cubW06IFJlbW92
ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldFZlY3RvckZvckNoYW5uZWwpOgorCiAyMDA4LTA3LTA0ICBEYXZp
ZCBELiBLaWx6ZXIgIDxkZGtpbHplckB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1ZyAxNTI5MDog
UkVHUkVTU0lPTiAocjE0MTg0LXIxNDIxNik6IER1cGxpY2F0ZSBET0NUWVBFIGRlZmluaXRpb25z
IHdoZW4gc2F2aW5nIGZpbGVzIGFzIHdlYmFyY2hpdmVzCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAwOSwx
MCArMzAwOSw2IEBACiAJCUIyNTU5OTMzMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUNs
aXBwZXJDZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwICov
OyB9OwogCQlCMjU1OTkzNTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODk5
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tICovOyB9OwogCQlCMjU1
OTkzNzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODlCMEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tICovOyB9OwotCQlCMjU1OTkzQzBEMDBEOEJB
MDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBT
VkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tICovOyB9OwotCQlCMjU1OTkzRDBEMDBEOEJBMDBCQjgy
NUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURp
c3BsYWNlbWVudE1hcENnLm1tICovOyB9OwotCQlCMjU1OTkzRTBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHRkVGbG9vZENnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLzsgfTsK
LQkJQjI1NTk5M0YwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFR2F1c3NpYW5CbHVyQ2cubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBNTBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSAqLzsgfTsKIAkJQjI1NTk5NDAw
RDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBNjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZH
RkVIZWxwZXJzQ2cuaCAqLzsgfTsKIAkJQjI1NTk5NDEwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZF
SGVscGVyc0NnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjI1NTk4QTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLm1tICovOyB9Owog
CQlCMjU1OTk0MjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJbWFnZUNnLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTgwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR0ZFSW1hZ2VDZy5tbSAqLzsgfTsKQEAgLTczNTcsMTAgKzczNTMsNiBAQAogCQlC
MjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1Jlc291cmNlQ2xpcHBlckNnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4OTkwRDAwRDhCODAwQkI4MjVD
IC8qIFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI1NTk4OUIwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291cmNlTWFza2VyQ2cu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VN
YXNrZXJDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTIwRDAwRDhC
ODAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZF
RGlzcGxhY2VtZW50TWFwQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUZsb29kQ2cubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEE1MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdG
RUdhdXNzaWFuQmx1ckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNWR0ZFR2F1c3NpYW5CbHVyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNTU5OEE2MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRkVIZWxwZXJzQ2cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0Nn
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFSGVscGVy
c0NnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThBODBEMDBEOEI4MDBC
QjgyNUMgLyogU1ZHRkVJbWFnZUNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNWR0ZFSW1hZ2VDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExOTQ1LDEwICsxMTkzNyw2IEBACiAJCUIyNTU5ODlEMEQwMEQ4QjgwMEJCODI1QyAvKiBjZyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQjI1NTk4QTIw
RDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gKi8sCi0JCQkJQjI1
NTk4QTMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0gKi8sCi0J
CQkJQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLywKLQkJCQlC
MjU1OThBNTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSAqLywKIAkJ
CQlCMjU1OThBNjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLywKIAkJCQlC
MjU1OThBNzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cubW0gKi8sCiAJCQkJQjI1
NTk4QTgwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2VDZy5tbSAqLywKQEAgLTE2NTY5LDIx
ICsxNjU1NywxNyBAQAogCQkJCUIyMjI3OUQwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5N0EwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ZFQ29udm9sdmVNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5
N0MwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUIyNTU5OTNDMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRURpZmZ1c2VMaWdodGlu
Z0NnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RDMwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk3
RTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQjI1NTk5M0QwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFw
Q2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlENjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUQ5
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI1NTk5ODAwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRmxvb2QuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5M0UwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RD
Zy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OURDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdG
RUZsb29kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlERjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVGdW5jQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5
RTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY0JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3OUU1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZ1bmNHRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlFODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5j
UkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5ODIwRDAwRDhCQTAwQkI4MjVD
IC8qIFNWR0ZFR2F1c3NpYW5CbHVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTNGMEQw
MEQ4QkEwMEJCODI1QyAvKiBTVkdGRUdhdXNzaWFuQmx1ckNnLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjc5RUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk0MTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVI
ZWxwZXJzQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4NDBEMDBEOEJBMDBCQjgyNUMg
LyogU1ZHRkVJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
QmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ZFQmxlbmRFbGVt
ZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRl
ICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiRkVCbGVuZC5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAog
I2RlZmluZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUg
IkZFQ29sb3JNYXRyaXguaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaCIKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZp
bmUgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRl
ICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGRUNv
bXBvbmVudFRyYW5zZmVyLmgiCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ZFQ29tcG9zaXRl
RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5j
bHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIkZFQ29tcG9zaXRlLmgiCiAjaW5jbHVk
ZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCi0jaW5jbHVkZSAiU1ZHRkVMaWdo
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCkBAIC03NSwzNSArNzQsMzMg
QEAKIAogU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9m
aWx0ZXJFZmZlY3QpIAotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nOjpjcmVhdGUoZmlsdGVyKTsKLQotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7
Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldERpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQo
KSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFN1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUoKSk7
Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEtlcm5lbFVuaXRMZW5ndGhYKGtlcm5lbFVuaXRMZW5n
dGhYKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLZXJuZWxVbml0TGVuZ3RoWShrZXJuZWxV
bml0TGVuZ3RoWSgpKTsKLQotICAgIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCogbm9uQ29u
c3RUaGlzID0gY29uc3RfY2FzdDxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQqPih0aGlzKTsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSA9IG5vbkNvbnN0VGhpcy0+c3R5bGVGb3JSZW5kZXJlcihwYXJl
bnQoKS0+cmVuZGVyZXIoKSk7Ci0gICAgUmVuZGVyU3R5bGUqIGZpbHRlclN0eWxlID0gbm9uQ29u
c3RUaGlzLT5yZXNvbHZlU3R5bGUocGFyZW50U3R5bGUpOworYm9vbCBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVy
RWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICAKKyAg
ICBpZighaW5wdXQxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlID0gdGhpcy0+c3R5bGVGb3JSZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVy
ZXIoKSk7CisgICAgUmVuZGVyU3R5bGUqIGZpbHRlclN0eWxlID0gdGhpcy0+cmVzb2x2ZVN0eWxl
KHBhcmVudFN0eWxlKTsKKyAgICBDb2xvciBjb2xvciA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgp
LT5saWdodGluZ0NvbG9yKCk7CiAgICAgCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldExpZ2h0aW5n
Q29sb3IoZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKSk7Ci0gICAgc2V0
U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKLSAKICAgICBwYXJlbnRT
dHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmlsdGVyU3R5bGUt
PmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAgIAotICAgIHVwZGF0ZUxpZ2h0
cygpOwotICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBj
b2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgdXBkYXRlTGlnaHRzKCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQo
KSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnVwZGF0ZUxpZ2h0cygpIGNvbnN0CitM
aWdodFNvdXJjZSogU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojp1cGRhdGVMaWdodHMoKSBj
b25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIHJldHVybjsKLSAgICAK
ICAgICBMaWdodFNvdXJjZSogbGlnaHQgPSAwOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hp
bGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKG4tPmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSB8fApAQCAtMTE1LDcgKzExMiw3IEBACiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0TGlnaHRTb3VyY2UobGln
aHQpOworICAgIHJldHVybiBsaWdodDsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsy
MywxMSBAQAogI2RlZmluZSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnRfaAogCiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIlNWR0ZFTGlnaHRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTVkdGRURpZmZ1c2VMaWdodGluZzsK
KyAgICBjbGFzcyBGRURpZmZ1c2VMaWdodGluZzsKICAgICBjbGFzcyBTVkdDb2xvcjsKIAogICAg
IGNsYXNzIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMKQEAgLTM3LDYgKzM4LDcgQEAKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAg
IHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
KSBjb25zdDsKKyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBAIC00OCw5ICs1MCw5IEBACiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZs
b2F0LCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LCBmbG9hdCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkK
IAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZz4gbV9maWx0ZXJF
ZmZlY3Q7CisgICAgICAgIExpZ2h0U291cmNlKiB1cGRhdGVMaWdodHMoKSBjb25zdDsKICAgICAg
ICAgCi0gICAgICAgIHZvaWQgdXBkYXRlTGlnaHRzKCkgY29uc3Q7CisgICAgICAgIG11dGFibGUg
UmVmUHRyPEZFRGlmZnVzZUxpZ2h0aW5nPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAog
CiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1f
eENoYW5uZWxTZWxlY3RvcihTVkdfQ0hBTk5FTF9BKQotICAgICwgbV95Q2hhbm5lbFNlbGVjdG9y
KFNWR19DSEFOTkVMX0EpCisgICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoQ0hBTk5FTF9BKQorICAg
ICwgbV95Q2hhbm5lbFNlbGVjdG9yKENIQU5ORUxfQSkKICAgICAsIG1fc2NhbGUoMC4wZikKICAg
ICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CkBAIC00NiwxOCArNDYsMTggQEAKIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgaW50LCBFbnVt
ZXJhdGlvbiwgZW51bWVyYXRpb24sIFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3Is
IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciwgbV95Q2hhbm5lbFNlbGVjdG9yKQogQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBm
bG9hdCwgTnVtYmVyLCBudW1iZXIsIFNjYWxlLCBzY2FsZSwgU1ZHTmFtZXM6OnNjYWxlQXR0ciwg
bV9zY2FsZSkKIAotU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSBTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6OnN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmIGtleSkKK0NoYW5uZWxTZWxlY3Rv
clR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0NoYW5uZWwoY29uc3Qg
U3RyaW5nJiBrZXkpCiB7CiAgICAgaWYgKGtleSA9PSAiUiIpCi0gICAgICAgIHJldHVybiBTVkdf
Q0hBTk5FTF9SOworICAgICAgICByZXR1cm4gQ0hBTk5FTF9SOwogICAgIGVsc2UgaWYgKGtleSA9
PSAiRyIpCi0gICAgICAgIHJldHVybiBTVkdfQ0hBTk5FTF9HOworICAgICAgICByZXR1cm4gQ0hB
Tk5FTF9HOwogICAgIGVsc2UgaWYgKGtleSA9PSAiQiIpCi0gICAgICAgIHJldHVybiBTVkdfQ0hB
Tk5FTF9COworICAgICAgICByZXR1cm4gQ0hBTk5FTF9COwogICAgIGVsc2UgaWYgKGtleSA9PSAi
QSIpCi0gICAgICAgIHJldHVybiBTVkdfQ0hBTk5FTF9BOworICAgICAgICByZXR1cm4gQ0hBTk5F
TF9BOwogCi0gICAgcmV0dXJuIFNWR19DSEFOTkVMX1VOS05PV047CisgICAgcmV0dXJuIENIQU5O
RUxfVU5LTk9XTjsKIH0KIAogdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKQEAgLTc3LDE5ICs3NywyNiBA
QAogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGRURpc3BsYWNlbWVudE1hcCogU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRl
cikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAo
IW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwOjpjcmVhdGUoZmlsdGVyKTsKLQotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRYQ2hhbm5l
bFNlbGVjdG9yKChTVkdDaGFubmVsU2VsZWN0b3JUeXBlKSB4Q2hhbm5lbFNlbGVjdG9yKCkpOwot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRZQ2hhbm5lbFNlbGVjdG9yKChTVkdDaGFubmVsU2VsZWN0
b3JUeXBlKSB5Q2hhbm5lbFNlbGVjdG9yKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihp
bjEoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluMihpbjIoKSk7Ci0gICAgbV9maWx0ZXJF
ZmZlY3QtPnNldFNjYWxlKHNjYWxlKCkpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiAwOworfQogCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0
LmdldCgpKTsKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7Citib29sIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwor
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7
CisgICAgCisgICAgaWYoIWlucHV0MSB8fCAhaW5wdXQyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0g
RkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8Q2hh
bm5lbFNlbGVjdG9yVHlwZT4gKHhDaGFubmVsU2VsZWN0b3IoKSksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENoYW5uZWxTZWxlY3RvclR5cGU+
ICh5Q2hhbm5lbFNlbGVjdG9yKCkpLCBzY2FsZSgpKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0
KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZp
c2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTEgQEAKICAgICAgICAgU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7
CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCgpOwogICAgICAg
ICAKLSAgICAgICAgc3RhdGljIFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFubmVs
KGNvbnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMgQ2hhbm5lbFNlbGVjdG9yVHlwZSBzdHJp
bmdUb0NoYW5uZWwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1
YWwgU1ZHRkVEaXNwbGFjZW1lbnRNYXAqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciop
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNW
R1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRl
ciopOwogICAgICAgICAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBAIC00Niw3
ICs0Nyw3IEBACiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQsIGludCwgaW50LCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5l
bFNlbGVjdG9yKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LCBmbG9hdCwgZmxvYXQsIFNjYWxlLCBzY2FsZSkKIAotICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcD4gbV9maWx0ZXJFZmZlY3Q7
CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFRGlzcGxhY2VtZW50TWFwPiBtX2ZpbHRlckVmZmVj
dDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRUZsb29kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMjUgKzQ4LDI3IEBACiAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KIAotU1ZHRkVGbG9vZCogU1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUZsb29k
RWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdG
RUZsb29kOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAKLSAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMo
bV9maWx0ZXJFZmZlY3QuZ2V0KCkpOwotCi0gICAgU1ZHRkVGbG9vZEVsZW1lbnQqIG5vbkNvbnN0
VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHRkVGbG9vZEVsZW1lbnQqPih0aGlzKTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IG5vbkNvbnN0VGhpcy0+c3R5bGVGb3JSZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVy
ZXIoKSk7Ci0gICAgUmVuZGVyU3R5bGUqIGZpbHRlclN0eWxlID0gbm9uQ29uc3RUaGlzLT5yZXNv
bHZlU3R5bGUocGFyZW50U3R5bGUpOworYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQoRmls
dGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSB0
aGlzLT5zdHlsZUZvclJlbmRlcmVyKHBhcmVudCgpLT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJT
dHlsZSogZmlsdGVyU3R5bGUgPSB0aGlzLT5yZXNvbHZlU3R5bGUocGFyZW50U3R5bGUpOwogICAg
IAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRGbG9vZENvbG9yKGZpbHRlclN0eWxlLT5zdmdTdHls
ZSgpLT5mbG9vZENvbG9yKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRGbG9vZE9wYWNpdHko
ZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kT3BhY2l0eSgpKTsKKyAgICBDb2xvciBjb2xv
ciA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5mbG9vZENvbG9yKCk7CisgICAgZmxvYXQgb3Bh
Y2l0eSA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5mbG9vZE9wYWNpdHkoKTsKICAgICAKICAg
ICBwYXJlbnRTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmls
dGVyU3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAgIAotICAgIHJl
dHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRl
ZEVmZmVjdCA9IEZFRmxvb2Q6OmNyZWF0ZShjb2xvciwgb3BhY2l0eSk7CisgICAgYnVpbGRlci0+
YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0
cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTMgKzM2LDE0IEBACiAgICAgICAgIHZpcnR1YWwgflNWR0ZFRmxvb2RFbGVtZW50KCk7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFRmxvb2QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVy
RWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmls
dGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVGbG9vZD4gbV9maWx0ZXJFZmZl
Y3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFRmxvb2Q+IG1fZmlsdGVyRWZmZWN0OwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxNyArNjYsMjMg
QEAKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVHYXVzc2lhbkJsdXIqIFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNv
bnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRl
ckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRUdhdXNzaWFuQmx1cjo6Y3Jl
YXRlKGZpbHRlcik7Ci0gICAgCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluMSgpKTsKLSAg
ICBtX2ZpbHRlckVmZmVjdC0+c2V0U3RkRGV2aWF0aW9uWChzdGREZXZpYXRpb25YKCkpOwotICAg
IG1fZmlsdGVyRWZmZWN0LT5zZXRTdGREZXZpYXRpb25ZKHN0ZERldmlhdGlvblkoKSk7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBzZXRTdGFuZGFy
ZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QuZ2V0KCkpOyAKLSAgICByZXR1cm4gbV9maWx0ZXJF
ZmZlY3QuZ2V0KCk7Citib29sIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoRmlsdGVy
QnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXIt
PmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIAorICAgIGlmKCFpbnB1dDEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZl
Y3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGlucHV0MSwgc3RkRGV2aWF0aW9uWCgpLCBzdGRE
ZXZpYXRpb25ZKCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVs
ZWFzZSgpKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDggQEAKICAgICAgICAgdm9pZCBzZXRTdGREZXZpYXRpb24oZmxvYXQgc3RkRGV2aWF0aW9uWCwg
ZmxvYXQgc3RkRGV2aWF0aW9uWSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFR2F1c3Np
YW5CbHVyKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciop
IGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTQ5LDcgKzUwLDcgQEAKICAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgZmxvYXQs
IGZsb2F0LCBTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQogICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBmbG9hdCwgZmxv
YXQsIFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQ
dHI8U1ZHRkVHYXVzc2lhbkJsdXI+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxGRUdhdXNzaWFuQmx1cj4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzX2gKIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2lu
Y2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRy
aXguY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEzNyArMjIsMTIy
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNW
R0ZFQ29udm9sdmVNYXRyaXguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUNvbnZv
bHZlTWF0cml4OjpTVkdGRUNvbnZvbHZlTWF0cml4KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIp
Ci0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV9rZXJuZWxTaXplKCkKLSAg
ICAsIG1fZGl2aXNvcigwLjBmKQotICAgICwgbV9iaWFzKDAuMGYpCi0gICAgLCBtX3RhcmdldE9m
ZnNldCgpCi0gICAgLCBtX2VkZ2VNb2RlKFNWR19FREdFTU9ERV9VTktOT1dOKQotICAgICwgbV9r
ZXJuZWxVbml0TGVuZ3RoKCkKLSAgICAsIG1fcHJlc2VydmVBbHBoYShmYWxzZSkKK0ZFQ29udm9s
dmVNYXRyaXg6OkZFQ29udm9sdmVNYXRyaXgoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0
KiBpbjIsIGNvbnN0IEZsb2F0U2l6ZSYga2VybmVsU2l6ZSwgCisgICAgY29uc3QgZmxvYXQmIGRp
dmlzb3IsIGNvbnN0IGZsb2F0JiBiaWFzLCBjb25zdCBGbG9hdFNpemUmIHRhcmdldE9mZnNldCwg
Y29uc3QgRWRnZU1vZGVUeXBlJiBlZGdlTW9kZSwKKyAgICBjb25zdCBGbG9hdFBvaW50JiBrZXJu
ZWxVbml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtl
cm5lbE1hdHJpeCkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQorICAgICwg
bV9pbjIoaW4yKQorICAgICwgbV9rZXJuZWxTaXplKGtlcm5lbFNpemUpCisgICAgLCBtX2Rpdmlz
b3IoZGl2aXNvcikKKyAgICAsIG1fYmlhcyhiaWFzKQorICAgICwgbV90YXJnZXRPZmZzZXQodGFy
Z2V0T2Zmc2V0KQorICAgICwgbV9lZGdlTW9kZShlZGdlTW9kZSkKKyAgICAsIG1fa2VybmVsVW5p
dExlbmd0aChrZXJuZWxVbml0TGVuZ3RoKQorICAgICwgbV9wcmVzZXJ2ZUFscGhhKHByZXNlcnZl
QWxwaGEpCisgICAgLCBtX2tlcm5lbE1hdHJpeChrZXJuZWxNYXRyaXgpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeD4gU1ZHRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKFNW
R1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZFQ29udm9sdmVNYXRyaXg+IEZF
Q29udm9sdmVNYXRyaXg6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGlu
MiwgY29uc3QgRmxvYXRTaXplJiBrZXJuZWxTaXplLCAKKyAgICBjb25zdCBmbG9hdCYgZGl2aXNv
ciwgY29uc3QgZmxvYXQmIGJpYXMsIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0T2Zmc2V0LCBjb25z
dCBFZGdlTW9kZVR5cGUmIGVkZ2VNb2RlLCAKKyAgICBjb25zdCBGbG9hdFBvaW50JiBrZXJuZWxV
bml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5l
bE1hdHJpeCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFQ29udm9sdmVNYXRyaXgo
ZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUNvbnZvbHZlTWF0cml4KGluLCBp
bjIsIGtlcm5lbFNpemUsIGRpdmlzb3IsIGJpYXMsIHRhcmdldE9mZnNldCwgZWRnZU1vZGUsIGtl
cm5lbFVuaXRMZW5ndGgsCisgICAgICAgIHByZXNlcnZlQWxwaGEsIGtlcm5lbE1hdHJpeCkpOwog
fQogCi1GbG9hdFNpemUgU1ZHRkVDb252b2x2ZU1hdHJpeDo6a2VybmVsU2l6ZSgpIGNvbnN0CisK
K0Zsb2F0U2l6ZSBGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxTaXplKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9rZXJuZWxTaXplOwogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldEtl
cm5lbFNpemUoRmxvYXRTaXplIGtlcm5lbFNpemUpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNl
dEtlcm5lbFNpemUoRmxvYXRTaXplIGtlcm5lbFNpemUpCiB7CiAgICAgbV9rZXJuZWxTaXplID0g
a2VybmVsU2l6ZTsgCiB9CiAKLWNvbnN0IFZlY3RvcjxmbG9hdD4mIFNWR0ZFQ29udm9sdmVNYXRy
aXg6Omtlcm5lbCgpIGNvbnN0Citjb25zdCBWZWN0b3I8ZmxvYXQ+JiBGRUNvbnZvbHZlTWF0cml4
OjprZXJuZWwoKSBjb25zdAogewogICAgIHJldHVybiBtX2tlcm5lbE1hdHJpeDsgCiB9CiAKLXZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtl
cm5lbCkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9h
dD4mIGtlcm5lbCkKIHsKICAgICBtX2tlcm5lbE1hdHJpeCA9IGtlcm5lbDsgCiB9CiAKLWZsb2F0
IFNWR0ZFQ29udm9sdmVNYXRyaXg6OmRpdmlzb3IoKSBjb25zdAorZmxvYXQgRkVDb252b2x2ZU1h
dHJpeDo6ZGl2aXNvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGl2aXNvcjsgCiB9CiAKLXZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0RGl2aXNvcihmbG9hdCBkaXZpc29yKQordm9pZCBG
RUNvbnZvbHZlTWF0cml4OjpzZXREaXZpc29yKGZsb2F0IGRpdmlzb3IpCiB7CiAgICAgbV9kaXZp
c29yID0gZGl2aXNvcjsgCiB9CiAKLWZsb2F0IFNWR0ZFQ29udm9sdmVNYXRyaXg6OmJpYXMoKSBj
b25zdAorZmxvYXQgRkVDb252b2x2ZU1hdHJpeDo6YmlhcygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fYmlhczsgCiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0QmlhcyhmbG9hdCBi
aWFzKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRCaWFzKGZsb2F0IGJpYXMpCiB7CiAgICAg
bV9iaWFzID0gYmlhczsgCiB9CiAKLUZsb2F0U2l6ZSBTVkdGRUNvbnZvbHZlTWF0cml4Ojp0YXJn
ZXRPZmZzZXQoKSBjb25zdAorRmxvYXRTaXplIEZFQ29udm9sdmVNYXRyaXg6OnRhcmdldE9mZnNl
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGFyZ2V0T2Zmc2V0OyAKIH0KIAotdm9pZCBTVkdG
RUNvbnZvbHZlTWF0cml4OjpzZXRUYXJnZXRPZmZzZXQoRmxvYXRTaXplIHRhcmdldE9mZnNldCkK
K3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0VGFyZ2V0T2Zmc2V0KEZsb2F0U2l6ZSB0YXJnZXRP
ZmZzZXQpCiB7CiAgICAgbV90YXJnZXRPZmZzZXQgPSB0YXJnZXRPZmZzZXQ7IAogfQogCi1TVkdF
ZGdlTW9kZVR5cGUgU1ZHRkVDb252b2x2ZU1hdHJpeDo6ZWRnZU1vZGUoKSBjb25zdAorRWRnZU1v
ZGVUeXBlIEZFQ29udm9sdmVNYXRyaXg6OmVkZ2VNb2RlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9lZGdlTW9kZTsgCiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0RWRnZU1vZGUo
U1ZHRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRFZGdl
TW9kZShFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiB7CiAgICAgbV9lZGdlTW9kZSA9IGVkZ2VNb2Rl
OyAKIH0KIAotRmxvYXRQb2ludCBTVkdGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxVbml0TGVuZ3Ro
KCkgY29uc3QKK0Zsb2F0UG9pbnQgRkVDb252b2x2ZU1hdHJpeDo6a2VybmVsVW5pdExlbmd0aCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aDsgCiB9CiAKLXZvaWQgU1ZH
RkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsVW5pdExlbmd0aChGbG9hdFBvaW50IGtlcm5lbFVu
aXRMZW5ndGgpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbFVuaXRMZW5ndGgoRmxv
YXRQb2ludCBrZXJuZWxVbml0TGVuZ3RoKQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aCA9IGtl
cm5lbFVuaXRMZW5ndGg7IAogfQogCi1ib29sIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnByZXNlcnZl
QWxwaGEoKSBjb25zdAorYm9vbCBGRUNvbnZvbHZlTWF0cml4OjpwcmVzZXJ2ZUFscGhhKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9wcmVzZXJ2ZUFscGhhOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZv
bHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKGJvb2wgcHJlc2VydmVBbHBoYSkKK3ZvaWQgRkVD
b252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBoYShib29sIHByZXNlcnZlQWxwaGEpCiB7CiAg
ICAgbV9wcmVzZXJ2ZUFscGhhID0gcHJlc2VydmVBbHBoYTsgCiB9CiAKLXN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTVkdFZGdlTW9kZVR5cGUgdCkKK3ZvaWQg
RkVDb252b2x2ZU1hdHJpeDo6YXBwbHkoKQoreworfQorCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6
OmR1bXAoKQogewotICAgIHN3aXRjaCAodCkKLSAgICB7Ci0gICAgICAgIGNhc2UgU1ZHX0VER0VN
T0RFX1VOS05PV046Ci0gICAgICAgICAgICB0cyA8PCAiVU5LTk9XTiI7YnJlYWs7Ci0gICAgICAg
IGNhc2UgU1ZHX0VER0VNT0RFX0RVUExJQ0FURToKLSAgICAgICAgICAgIHRzIDw8ICJEVVBMSUNB
VEUiO2JyZWFrOwotICAgICAgICBjYXNlIFNWR19FREdFTU9ERV9XUkFQOgotICAgICAgICAgICAg
dHMgPDwgIldSQVAiOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfRURHRU1PREVfTk9ORToKLSAg
ICAgICAgICAgIHRzIDw8ICJOT05FIjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0K
LQotVGV4dFN0cmVhbSYgU1ZHRkVDb252b2x2ZU1hdHJpeDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cyA8PCAiW3R5cGU9Q09OVk9MVkUtTUFU
UklYXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7
Ci0gICAgdHMgPDwgIiBbb3JkZXIgIiA8PCBtX2tlcm5lbFNpemUgPDwgIl0iCi0gICAgICAgIDw8
ICIgW2tlcm5lbCBtYXRyaXg9IiA8PCBtX2tlcm5lbE1hdHJpeCAgPDwgIl0iCi0gICAgICAgIDw8
ICIgW2Rpdmlzb3I9IiA8PCBtX2Rpdmlzb3IgPDwgIl0iCi0gICAgICAgIDw8ICIgW2JpYXM9IiA8
PCBtX2JpYXMgPDwgIl0iCi0gICAgICAgIDw8ICIgW3RhcmdldCAiIDw8IG1fdGFyZ2V0T2Zmc2V0
IDw8ICJdIgotICAgICAgICA8PCAiIFtlZGdlIG1vZGU9IiA8PCBtX2VkZ2VNb2RlIDw8ICJdIgot
ICAgICAgICA8PCAiIFtrZXJuZWwgdW5pdCBsZW5ndGggIiA8PCBtX2tlcm5lbFVuaXRMZW5ndGgg
PDwgIl0iCi0gICAgICAgIDw8ICIgW3ByZXNlcnZlIGFscGhhPSIgPDwgbV9wcmVzZXJ2ZUFscGhh
IDw8ICJdIjsKLSAgICByZXR1cm4gdHM7CiB9CiAKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVN
YXRyaXguaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFQ29udm9sdmVNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNTkgKzIzLDY5IEBA
CiAjZGVmaW5lIFNWR0ZFQ29udm9sdmVNYXRyaXhfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9h
dFNpemUuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1lbnVtIFNWR0VkZ2VNb2RlVHlwZSB7Ci0gICAgU1ZHX0VER0VNT0RFX1VOS05PV04gICA9
IDAsCi0gICAgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDEsCi0gICAgU1ZHX0VER0VNT0RFX1dS
QVAgICAgICA9IDIsCi0gICAgU1ZHX0VER0VNT0RFX05PTkUgICAgICA9IDMKLX07Ci0KLWNsYXNz
IFNWR0ZFQ29udm9sdmVNYXRyaXggOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0cml4PiBjcmVhdGUoU1ZHUmVz
b3VyY2VGaWx0ZXIqKTsKLQotICAgIEZsb2F0U2l6ZSBrZXJuZWxTaXplKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRLZXJuZWxTaXplKEZsb2F0U2l6ZSk7Ci0KLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBrZXJuZWwoKSBjb25zdDsKLSAgICB2b2lkIHNldEtlcm5lbChjb25zdCBWZWN0b3I8ZmxvYXQ+
Jik7Ci0KLSAgICBmbG9hdCBkaXZpc29yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREaXZpc29yKGZs
b2F0KTsKLQotICAgIGZsb2F0IGJpYXMoKSBjb25zdDsKLSAgICB2b2lkIHNldEJpYXMoZmxvYXQp
OwotCi0gICAgRmxvYXRTaXplIHRhcmdldE9mZnNldCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VGFy
Z2V0T2Zmc2V0KEZsb2F0U2l6ZSk7Ci0KLSAgICBTVkdFZGdlTW9kZVR5cGUgZWRnZU1vZGUoKSBj
b25zdDsKLSAgICB2b2lkIHNldEVkZ2VNb2RlKFNWR0VkZ2VNb2RlVHlwZSk7Ci0KLSAgICBGbG9h
dFBvaW50IGtlcm5lbFVuaXRMZW5ndGgoKSBjb25zdDsKLSAgICB2b2lkIHNldEtlcm5lbFVuaXRM
ZW5ndGgoRmxvYXRQb2ludCk7Ci0KLSAgICBib29sIHByZXNlcnZlQWxwaGEoKSBjb25zdDsKLSAg
ICB2b2lkIHNldFByZXNlcnZlQWxwaGEoYm9vbCk7Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi1wcml2YXRlOgot
ICAgIFNWR0ZFQ29udm9sdmVNYXRyaXgoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIEZsb2F0
U2l6ZSBtX2tlcm5lbFNpemU7Ci0gICAgZmxvYXQgbV9kaXZpc29yOwotICAgIGZsb2F0IG1fYmlh
czsKLSAgICBGbG9hdFNpemUgbV90YXJnZXRPZmZzZXQ7Ci0gICAgU1ZHRWRnZU1vZGVUeXBlIG1f
ZWRnZU1vZGU7Ci0gICAgRmxvYXRQb2ludCBtX2tlcm5lbFVuaXRMZW5ndGg7Ci0gICAgYm9vbCBt
X3ByZXNlcnZlQWxwaGE7Ci0gICAgVmVjdG9yPGZsb2F0PiBtX2tlcm5lbE1hdHJpeDsgLy8gbWF5
YmUgc2hvdWxkIGJlIGEgcmVhbCBtYXRyaXg/Ci19OworICAgIGVudW0gRWRnZU1vZGVUeXBlIHsK
KyAgICAgICAgRURHRU1PREVfVU5LTk9XTiAgID0gMCwKKyAgICAgICAgRURHRU1PREVfRFVQTElD
QVRFID0gMSwKKyAgICAgICAgRURHRU1PREVfV1JBUCAgICAgID0gMiwKKyAgICAgICAgRURHRU1P
REVfTk9ORSAgICAgID0gMworICAgIH07CisKKyAgICBjbGFzcyBGRUNvbnZvbHZlTWF0cml4IDog
cHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGRUNvbnZvbHZlTWF0cml4PiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgRmlsdGVyRWZmZWN0
KiwgY29uc3QgRmxvYXRTaXplJiwgCisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25z
dCBmbG9hdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEVkZ2VNb2RlVHlwZSYsIGNvbnN0IEZs
b2F0UG9pbnQmLAorICAgICAgICAgICAgICAgIGJvb2wsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsK
KworICAgICAgICBGbG9hdFNpemUga2VybmVsU2l6ZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dEtlcm5lbFNpemUoRmxvYXRTaXplKTsKKworICAgICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBr
ZXJuZWwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWwoY29uc3QgVmVjdG9yPGZsb2F0
PiYpOworCisgICAgICAgIGZsb2F0IGRpdmlzb3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRE
aXZpc29yKGZsb2F0KTsKKworICAgICAgICBmbG9hdCBiaWFzKCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0QmlhcyhmbG9hdCk7CisKKyAgICAgICAgRmxvYXRTaXplIHRhcmdldE9mZnNldCgpIGNv
bnN0OworICAgICAgICB2b2lkIHNldFRhcmdldE9mZnNldChGbG9hdFNpemUpOworCisgICAgICAg
IEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldEVkZ2VNb2Rl
KEVkZ2VNb2RlVHlwZSk7CisKKyAgICAgICAgRmxvYXRQb2ludCBrZXJuZWxVbml0TGVuZ3RoKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aChGbG9hdFBvaW50KTsKKwor
ICAgICAgICBib29sIHByZXNlcnZlQWxwaGEoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRQcmVz
ZXJ2ZUFscGhhKGJvb2wpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVDb252b2x2
ZU1hdHJpeChGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwKKyAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBFZGdlTW9kZVR5cGUmLCBjb25zdCBGbG9hdFBvaW50JiwgYm9vbCwgY29uc3Qg
VmVjdG9yPGZsb2F0PiYpOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47Cisg
ICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW4yOworICAgICAgICBGbG9hdFNpemUgbV9r
ZXJuZWxTaXplOworICAgICAgICBmbG9hdCBtX2Rpdmlzb3I7CisgICAgICAgIGZsb2F0IG1fYmlh
czsKKyAgICAgICAgRmxvYXRTaXplIG1fdGFyZ2V0T2Zmc2V0OworICAgICAgICBFZGdlTW9kZVR5
cGUgbV9lZGdlTW9kZTsKKyAgICAgICAgRmxvYXRQb2ludCBtX2tlcm5lbFVuaXRMZW5ndGg7Cisg
ICAgICAgIGJvb2wgbV9wcmVzZXJ2ZUFscGhhOworICAgICAgICBWZWN0b3I8ZmxvYXQ+IG1fa2Vy
bmVsTWF0cml4OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGlu
Zy5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDk4ICsyNCw5OSBA
QAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdM
aWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCi0jaW5jbHVk
ZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRGlmZnVzZUxp
Z2h0aW5nOjpTVkdGRURpZmZ1c2VMaWdodGluZyhTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQot
ICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1fbGlnaHRpbmdDb2xvcigpCi0g
ICAgLCBtX3N1cmZhY2VTY2FsZSgwLjBmKQotICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoMC4wZikK
LSAgICAsIG1fa2VybmVsVW5pdExlbmd0aFgoMC4wZikKLSAgICAsIG1fa2VybmVsVW5pdExlbmd0
aFkoMC4wZikKLSAgICAsIG1fbGlnaHRTb3VyY2UoMCkKK0ZFRGlmZnVzZUxpZ2h0aW5nOjpGRURp
ZmZ1c2VMaWdodGluZyhGaWx0ZXJFZmZlY3QqIGluICwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29s
b3IsIGNvbnN0IGZsb2F0JiBzdXJmYWNlU2NhbGUsCisgICAgY29uc3QgZmxvYXQmIGRpZmZ1c2VD
b25zdGFudCwgY29uc3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLCBjb25zdCBmbG9hdCYga2Vy
bmVsVW5pdExlbmd0aFksIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKKyAgICA6IEZpbHRlckVm
ZmVjdCgpCisgICAgLCBtX2luKGluKQorICAgICwgbV9saWdodGluZ0NvbG9yKGxpZ2h0aW5nQ29s
b3IpCisgICAgLCBtX3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCisgICAgLCBtX2RpZmZ1c2VD
b25zdGFudChkaWZmdXNlQ29uc3RhbnQpCisgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKGtlcm5l
bFVuaXRMZW5ndGhYKQorICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWShrZXJuZWxVbml0TGVuZ3Ro
WSkKKyAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCiB7CiB9CiAKLVBhc3NSZWZQdHI8
U1ZHRkVEaWZmdXNlTGlnaHRpbmc+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlm
ZnVzZUxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiAsIGNvbnN0IENvbG9yJiBsaWdo
dGluZ0NvbG9yLAorICAgIGNvbnN0IGZsb2F0JiBzdXJmYWNlU2NhbGUsIGNvbnN0IGZsb2F0JiBk
aWZmdXNlQ29uc3RhbnQsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWCwKKyAgICBjb25z
dCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFksIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlcikpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVEaWZmdXNlTGlnaHRpbmcoaW4sIGxpZ2h0aW5nQ29s
b3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2Vy
bmVsVW5pdExlbmd0aFksIGxpZ2h0U291cmNlKSk7CiB9CiAKLVNWR0ZFRGlmZnVzZUxpZ2h0aW5n
Ojp+U1ZHRkVEaWZmdXNlTGlnaHRpbmcoKQorRkVEaWZmdXNlTGlnaHRpbmc6On5GRURpZmZ1c2VM
aWdodGluZygpCiB7CiB9CiAKLUNvbG9yIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodGluZ0Nv
bG9yKCkgY29uc3QKK0NvbG9yIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9saWdodGluZ0NvbG9yOwogfQogCi12b2lkIFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nOjpzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKQor
dm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvcikKIHsKICAgICBtX2xpZ2h0aW5nQ29sb3IgPSBsaWdodGluZ0NvbG9yOwogfQog
Ci1mbG9hdCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c3VyZmFjZVNjYWxlKCkgY29uc3QgCitmbG9h
dCBGRURpZmZ1c2VMaWdodGluZzo6c3VyZmFjZVNjYWxlKCkgY29uc3QgCiB7CiAgICAgcmV0dXJu
IG1fc3VyZmFjZVNjYWxlOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJm
YWNlU2NhbGUoZmxvYXQgc3VyZmFjZVNjYWxlKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0
U3VyZmFjZVNjYWxlKGZsb2F0IHN1cmZhY2VTY2FsZSkKIHsKICAgICBtX3N1cmZhY2VTY2FsZSA9
IHN1cmZhY2VTY2FsZTsKIH0KIAotZmxvYXQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmRpZmZ1c2VD
b25zdGFudCgpIGNvbnN0CitmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6ZGlmZnVzZUNvbnN0YW50
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQ7CiB9CiAKLXZvaWQgU1ZH
RkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29uc3Rh
bnQpCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXREaWZmdXNlQ29uc3RhbnQoZmxvYXQgZGlm
ZnVzZUNvbnN0YW50KQogewogICAgIG1fZGlmZnVzZUNvbnN0YW50ID0gZGlmZnVzZUNvbnN0YW50
OwogfQogCi1mbG9hdCBTVkdGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFgoKSBj
b25zdAorZmxvYXQgRkVEaWZmdXNlTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsKIH0KIAotdm9pZCBTVkdGRURpZmZ1
c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQga2VybmVsVW5pdExlbmd0aFgp
Cit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCkKIHsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhYID0ga2VybmVsVW5pdExl
bmd0aFg7CiB9CiAKLWZsb2F0IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3Ro
WSgpIGNvbnN0CitmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFkoKSBj
b25zdAogewogICAgIHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZOwogfQogCi12b2lkIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSkKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhZKQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFkgPSBrZXJuZWxV
bml0TGVuZ3RoWTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
OjpsaWdodFNvdXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSogRkVEaWZmdXNlTGlnaHRp
bmc6OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saWdodFNvdXJjZS5nZXQo
KTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UoTGlnaHRT
b3VyY2UqIGxpZ2h0U291cmNlKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQogeyAgICAKICAgICBtX2xpZ2h0U291cmNlID0g
bGlnaHRTb3VyY2U7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAordm9pZCBGRURpZmZ1c2VM
aWdodGluZzo6YXBwbHkoKQoreworfQorCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpkdW1wKCkK
IHsKLSAgICB0cyA8PCAiW3R5cGU9RElGRlVTRS1MSUdIVElOR10gIjsKLSAgICBTVkdGaWx0ZXJF
ZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICIgW3N1cmZhY2Ug
c2NhbGU9IiA8PCBtX3N1cmZhY2VTY2FsZSA8PCAiXSIKLSAgICAgICAgPDwgIiBbZGlmZnVzZSBj
b25zdGFudD0iIDw8IG1fZGlmZnVzZUNvbnN0YW50IDw8ICJdIgotICAgICAgICA8PCAiIFtrZXJu
ZWwgdW5pdCBsZW5ndGggIiA8PCBtX2tlcm5lbFVuaXRMZW5ndGhYIDw8ICIsICIgPDwgbV9rZXJu
ZWxVbml0TGVuZ3RoWSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRURpZmZ1c2VMaWdodGluZy5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNTEgKzI0LDUxIEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMp
CiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMaWdo
dFNvdXJjZTsKKyAgICBjbGFzcyBMaWdodFNvdXJjZTsKIAotY2xhc3MgU1ZHRkVEaWZmdXNlTGln
aHRpbmcgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7
Ci0gICAgdmlydHVhbCB+U1ZHRkVEaWZmdXNlTGlnaHRpbmcoKTsKLQotICAgIENvbG9yIGxpZ2h0
aW5nQ29sb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3Im
KTsKLQotICAgIGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3VyZmFj
ZVNjYWxlKGZsb2F0KTsKLQotICAgIGZsb2F0IGRpZmZ1c2VDb25zdGFudCgpIGNvbnN0OwotICAg
IHZvaWQgc2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKLQotICAgIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhYKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCk7Ci0K
LSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVs
VW5pdExlbmd0aFkoZmxvYXQpOwotCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNl
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwotCi0gICAg
dmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBj
b25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmls
dGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAg
ICBTVkdGRURpZmZ1c2VMaWdodGluZyhTVkdSZXNvdXJjZUZpbHRlciopOwotICAgIAotICAgIENv
bG9yIG1fbGlnaHRpbmdDb2xvcjsKLSAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKLSAgICBmbG9h
dCBtX2RpZmZ1c2VDb25zdGFudDsKLSAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhYOwotICAg
IGZsb2F0IG1fa2VybmVsVW5pdExlbmd0aFk7Ci0gICAgUmVmUHRyPExpZ2h0U291cmNlPiBtX2xp
Z2h0U291cmNlOwotfTsKKyAgICBjbGFzcyBGRURpZmZ1c2VMaWdodGluZyA6IHB1YmxpYyBGaWx0
ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVEaWZm
dXNlTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0IGZs
b2F0JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3Qg
ZmxvYXQmLCBMaWdodFNvdXJjZSopOworICAgICAgICB2aXJ0dWFsIH5GRURpZmZ1c2VMaWdodGlu
ZygpOworCisgICAgICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICAgICAgZmxvYXQgc3VyZmFj
ZVNjYWxlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKKwor
ICAgICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRE
aWZmdXNlQ29uc3RhbnQoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhY
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQpOworCisg
ICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOworCisgICAgICAgIGNvbnN0IExpZ2h0U291cmNlKiBs
aWdodFNvdXJjZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291
cmNlKik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkdW1wKCk7CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIEZFRGlmZnVzZUxp
Z2h0aW5nKEZpbHRlckVmZmVjdCosIGNvbnN0IENvbG9yJiwgY29uc3QgZmxvYXQmLCBjb25zdCBm
bG9hdCYsCisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0
U291cmNlKik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAg
Q29sb3IgbV9saWdodGluZ0NvbG9yOworICAgICAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKKyAg
ICAgICAgZmxvYXQgbV9kaWZmdXNlQ29uc3RhbnQ7CisgICAgICAgIGZsb2F0IG1fa2VybmVsVW5p
dExlbmd0aFg7CisgICAgICAgIGZsb2F0IG1fa2VybmVsVW5pdExlbmd0aFk7CisgICAgICAgIFJl
ZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNw
bGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw5MiArMjIsNjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNU
ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TVkdGRURpc3BsYWNlbWVudE1hcDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXAoU1ZH
UmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0g
ICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoU1ZHX0NIQU5ORUxfVU5LTk9XTikKLSAgICAsIG1feUNo
YW5uZWxTZWxlY3RvcihTVkdfQ0hBTk5FTF9VTktOT1dOKQotICAgICwgbV9zY2FsZSgwKQorRkVE
aXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKEZpbHRlckVmZmVjdCogaW4sIEZpbHRl
ckVmZmVjdCogaW4yLCBjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlJiB4Q2hhbm5lbFNlbGVjdG9y
LAorICAgIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUmIHlDaGFubmVsU2VsZWN0b3IsIGNvbnN0
IGZsb2F0JiBzY2FsZSkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQorICAg
ICwgbV9pbjIoaW4yKQorICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKHhDaGFubmVsU2VsZWN0b3Ip
CisgICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoeUNoYW5uZWxTZWxlY3RvcikKKyAgICAsIG1fc2Nh
bGUoc2NhbGUpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVEaXNwbGFjZW1lbnRNYXA+IFNWR0ZF
RGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NS
ZWZQdHI8RkVEaXNwbGFjZW1lbnRNYXA+IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoRmlsdGVy
RWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIsCisgICAgY29uc3QgQ2hhbm5lbFNlbGVjdG9y
VHlwZSYgeENoYW5uZWxTZWxlY3RvciwgY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSYgeUNoYW5u
ZWxTZWxlY3RvciwgY29uc3QgZmxvYXQmIHNjYWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHRkVEaXNwbGFjZW1lbnRNYXAoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBGRURpc3BsYWNlbWVudE1hcChpbiwgaW4yLCB4Q2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNl
bGVjdG9yLCBzY2FsZSkpOwogfQogCi1TdHJpbmcgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OmluMigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW4yOwotfQotCi12b2lkIFNWR0ZFRGlzcGxhY2VtZW50
TWFwOjpzZXRJbjIoY29uc3QgU3RyaW5nICZpbjIpCi17Ci0gICAgbV9pbjIgPSBpbjI7Ci19Ci0K
LVNWR0NoYW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnhDaGFubmVsU2Vs
ZWN0b3IoKSBjb25zdAorQ2hhbm5lbFNlbGVjdG9yVHlwZSBGRURpc3BsYWNlbWVudE1hcDo6eENo
YW5uZWxTZWxlY3RvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feENoYW5uZWxTZWxlY3RvcjsK
IH0KIAotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcihjb25z
dCBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IpCit2b2lkIEZFRGlzcGxh
Y2VtZW50TWFwOjpzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUg
eENoYW5uZWxTZWxlY3RvcikKIHsKICAgICBtX3hDaGFubmVsU2VsZWN0b3IgPSB4Q2hhbm5lbFNl
bGVjdG9yOwogfQogCi1TVkdDaGFubmVsU2VsZWN0b3JUeXBlIFNWR0ZFRGlzcGxhY2VtZW50TWFw
Ojp5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QKK0NoYW5uZWxTZWxlY3RvclR5cGUgRkVEaXNwbGFj
ZW1lbnRNYXA6OnlDaGFubmVsU2VsZWN0b3IoKSBjb25zdAogewogICAgIHJldHVybiBtX3lDaGFu
bmVsU2VsZWN0b3I7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNldFlDaGFubmVs
U2VsZWN0b3IoY29uc3QgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yKQor
dm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVs
U2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IpCiB7CiAgICAgbV95Q2hhbm5lbFNlbGVjdG9y
ID0geUNoYW5uZWxTZWxlY3RvcjsKIH0KIAotZmxvYXQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNj
YWxlKCkgY29uc3QKK2Zsb2F0IEZFRGlzcGxhY2VtZW50TWFwOjpzY2FsZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fc2NhbGU7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNldFNj
YWxlKGZsb2F0IHNjYWxlKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQg
c2NhbGUpCiB7CiAgICAgbV9zY2FsZSA9IHNjYWxlOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB0KQordm9p
ZCBGRURpc3BsYWNlbWVudE1hcDo6YXBwbHkoKQoreworfQorCit2b2lkIEZFRGlzcGxhY2VtZW50
TWFwOjpkdW1wKCkKIHsKLSAgICBzd2l0Y2ggKHQpCi0gICAgewotICAgICAgICBjYXNlIFNWR19D
SEFOTkVMX1VOS05PV046Ci0gICAgICAgICAgICB0cyA8PCAiVU5LTk9XTiI7IGJyZWFrOwotICAg
ICAgICBjYXNlIFNWR19DSEFOTkVMX1I6Ci0gICAgICAgICAgICB0cyA8PCAiUkVEIjsgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfRzoKLSAgICAgICAgICAgIHRzIDw8ICJHUkVFTiI7
IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19DSEFOTkVMX0I6Ci0gICAgICAgICAgICB0cyA8PCAi
QkxVRSI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19DSEFOTkVMX0E6Ci0gICAgICAgICAgICB0
cyA8PCAiQUxQSEEiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1UZXh0U3Ry
ZWFtJiBTVkdGRURpc3BsYWNlbWVudE1hcDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cyA8PCAiW3R5cGU9RElTUExBQ0VNRU5ULU1BUF0gIjsK
LSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIGlm
ICghaW4yKCkuaXNFbXB0eSgpKQotICAgICAgICB0cyA8PCAiIFtpbjI9IiA8PCBpbjIoKSA8PCAi
XSI7Ci0gICAgdHMgPDwgIiBbc2NhbGU9IiA8PCBtX3NjYWxlIDw8ICJdIgotICAgICAgICA8PCAi
IFt4IGNoYW5uZWwgc2VsZWN0b3I9IiA8PCBtX3hDaGFubmVsU2VsZWN0b3IgPDwgIl0iCi0gICAg
ICAgIDw8ICIgW3kgY2hhbm5lbCBzZWxlY3Rvcj0iIDw8IG1feUNoYW5uZWxTZWxlY3RvciA8PCAi
XSI7Ci0gICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1h
cC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVEaXNwbGFjZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDggKzIzLDQ2IEBACiAj
ZGVmaW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwX2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWVudW0gU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB7Ci0gICAgU1ZHX0NIQU5O
RUxfVU5LTk9XTiA9IDAsCi0gICAgU1ZHX0NIQU5ORUxfUiAgICAgICA9IDEsCi0gICAgU1ZHX0NI
QU5ORUxfRyAgICAgICA9IDIsCi0gICAgU1ZHX0NIQU5ORUxfQiAgICAgICA9IDMsCi0gICAgU1ZH
X0NIQU5ORUxfQSAgICAgICA9IDQKLX07Ci0KLWNsYXNzIFNWR0ZFRGlzcGxhY2VtZW50TWFwIDog
cHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHRkVEaXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAg
U3RyaW5nIGluMigpIGNvbnN0OwotICAgIHZvaWQgc2V0SW4yKGNvbnN0IFN0cmluZyYpOwotCi0g
ICAgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxTZWxlY3RvclR5cGUpOwot
Ci0gICAgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxTZWxlY3RvclR5cGUp
OwotCi0gICAgZmxvYXQgc2NhbGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNj
YWxlKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9STShDSSkKLSAgICB2aXJ0dWFsIENJRmls
dGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0OwotI2VuZGlmCi0K
LXByaXZhdGU6Ci0gICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXAoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsK
LQotICAgIFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgbV94Q2hhbm5lbFNlbGVjdG9yOwotICAgIFNW
R0NoYW5uZWxTZWxlY3RvclR5cGUgbV95Q2hhbm5lbFNlbGVjdG9yOwotICAgIGZsb2F0IG1fc2Nh
bGU7Ci0gICAgU3RyaW5nIG1faW4yOwotfTsKKyAgICBlbnVtIENoYW5uZWxTZWxlY3RvclR5cGUg
eworICAgICAgICBDSEFOTkVMX1VOS05PV04gPSAwLAorICAgICAgICBDSEFOTkVMX1IgICAgICAg
PSAxLAorICAgICAgICBDSEFOTkVMX0cgICAgICAgPSAyLAorICAgICAgICBDSEFOTkVMX0IgICAg
ICAgPSAzLAorICAgICAgICBDSEFOTkVMX0EgICAgICAgPSA0CisgICAgfTsKKyAgICAKKyAgICBj
bGFzcyBGRURpc3BsYWNlbWVudE1hcCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVEaXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShG
aWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlJiwK
KyAgICAgICAgICAgICAgICBjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlJiwgY29uc3QgZmxvYXQm
KTsKKworICAgICAgICBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3Rv
clR5cGUpOworCisgICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3Rvcigp
IGNvbnN0OworICAgICAgICB2b2lkIHNldFlDaGFubmVsU2VsZWN0b3IoY29uc3QgQ2hhbm5lbFNl
bGVjdG9yVHlwZSk7CisKKyAgICAgICAgZmxvYXQgc2NhbGUoKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBzZXRTY2FsZShmbG9hdCBzY2FsZSk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBG
RURpc3BsYWNlbWVudE1hcChGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBjb25zdCBDaGFu
bmVsU2VsZWN0b3JUeXBlJiwKKyAgICAgICAgICAgIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUm
LCBjb25zdCBmbG9hdCYpOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47Cisg
ICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW4yOworICAgICAgICBDaGFubmVsU2VsZWN0
b3JUeXBlIG1feENoYW5uZWxTZWxlY3RvcjsKKyAgICAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSBt
X3lDaGFubmVsU2VsZWN0b3I7CisgICAgICAgIGZsb2F0IG1fc2NhbGU7CisgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFRmxvb2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVGbG9vZC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNTAgKzIyLDQ4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNW
R0ZFRmxvb2QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUZsb29kOjpTVkdGRUZs
b29kKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmls
dGVyKQotICAgICwgbV9mbG9vZENvbG9yKCkKLSAgICAsIG1fZmxvb2RPcGFjaXR5KDAuMGYpCitG
RUZsb29kOjpGRUZsb29kKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBjb25zdCBmbG9hdCYgZmxv
b2RPcGFjaXR5KQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1fZmxvb2RDb2xvcihmbG9v
ZENvbG9yKQorICAgICwgbV9mbG9vZE9wYWNpdHkoZmxvb2RPcGFjaXR5KQogewogfQogCi1QYXNz
UmVmUHRyPFNWR0ZFRmxvb2Q+IFNWR0ZFRmxvb2Q6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyKQorUGFzc1JlZlB0cjxGRUZsb29kPiBGRUZsb29kOjpjcmVhdGUoY29uc3QgQ29sb3Im
IGZsb29kQ29sb3IsIGNvbnN0IGZsb2F0JiBmbG9vZE9wYWNpdHkpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTVkdGRUZsb29kKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RkVGbG9vZChmbG9vZENvbG9yLCBmbG9vZE9wYWNpdHkpKTsKIH0KIAotQ29sb3IgU1ZHRkVGbG9v
ZDo6Zmxvb2RDb2xvcigpIGNvbnN0CitDb2xvciBGRUZsb29kOjpmbG9vZENvbG9yKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9mbG9vZENvbG9yOwogfQogCi12b2lkIFNWR0ZFRmxvb2Q6OnNldEZs
b29kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBGRUZsb29kOjpzZXRGbG9vZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX2Zsb29kQ29sb3IgPSBjb2xvcjsKIH0KIAot
ZmxvYXQgU1ZHRkVGbG9vZDo6Zmxvb2RPcGFjaXR5KCkgY29uc3QKK2Zsb2F0IEZFRmxvb2Q6OmZs
b29kT3BhY2l0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmxvb2RPcGFjaXR5OwogfQogCi12
b2lkIFNWR0ZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBmbG9vZE9wYWNpdHkpCit2b2lk
IEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBmbG9vZE9wYWNpdHkpCiB7CiAgICAgbV9m
bG9vZE9wYWNpdHkgPSBmbG9vZE9wYWNpdHk7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFRmxvb2Q6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFRmxv
b2Q6OmFwcGx5KCkKK3sKK30KKwordm9pZCBGRUZsb29kOjpkdW1wKCkKIHsKLSAgICB0cyA8PCAi
W3R5cGU9RkxPT0RdICI7Ci0gICAgU1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0
aW9uKHRzKTsKLSAgICB0cyA8PCAiIFtjb2xvcj0iIDw8IGZsb29kQ29sb3IoKSA8PCAiXSIKLSAg
ICAgICAgPDwgIiBbb3BhY2l0eT0iIDw8IGZsb29kT3BhY2l0eSgpIDw8ICJdIjsKLSAgICByZXR1
cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwz
MiArMjQsMjkgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNp
bmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ZFRmxv
b2QgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdGRUZsb29kPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICBjbGFzcyBG
RUZsb29kIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGRUZsb29kPiBjcmVhdGUoY29uc3QgQ29sb3ImLCBjb25zdCBmbG9hdCYp
OwogCi0gICAgQ29sb3IgZmxvb2RDb2xvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0Rmxvb2RDb2xv
cihjb25zdCBDb2xvciAmKTsKKyAgICAgICAgQ29sb3IgZmxvb2RDb2xvcigpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldEZsb29kQ29sb3IoY29uc3QgQ29sb3IgJik7CiAKLSAgICBmbG9hdCBmbG9v
ZE9wYWNpdHkoKSBjb25zdDsKLSAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7CisgICAg
ICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldEZsb29kT3Bh
Y2l0eShmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIAotI2lmIFBMQVRGT1JNKENJKQotICAgIHZp
cnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7
Ci0jZW5kaWYKKyAgICBwcml2YXRlOgorICAgICAgICBGRUZsb29kKGNvbnN0IENvbG9yJiwgY29u
c3QgZmxvYXQmKTsKIAotcHJpdmF0ZToKLSAgICBTVkdGRUZsb29kKFNWR1Jlc291cmNlRmlsdGVy
Kik7Ci0KLSAgICBDb2xvciBtX2Zsb29kQ29sb3I7Ci0gICAgZmxvYXQgbV9mbG9vZE9wYWNpdHk7
Ci19OworICAgICAgICBDb2xvciBtX2Zsb29kQ29sb3I7CisgICAgICAgIGZsb2F0IG1fZmxvb2RP
cGFjaXR5OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAJKHJl
dmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNz
aWFuQmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDQ4ICsyMyw0OCBAQAogCiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFR2F1c3NpYW5C
bHVyLmgiCi0jaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNWR0ZFR2F1c3NpYW5CbHVyOjpTVkdGRUdhdXNzaWFuQmx1cihTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1feCgwLjBmKQot
ICAgICwgbV95KDAuMGYpCitGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIoRmlsdGVyRWZm
ZWN0KiBpbiwgY29uc3QgZmxvYXQmIHgsIGNvbnN0IGZsb2F0JiB5KQorICAgIDogRmlsdGVyRWZm
ZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX3goeCkKKyAgICAsIG1feSh5KQogewogfQog
Ci1QYXNzUmVmUHRyPFNWR0ZFR2F1c3NpYW5CbHVyPiBTVkdGRUdhdXNzaWFuQmx1cjo6Y3JlYXRl
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZFR2F1c3NpYW5CbHVyPiBG
RUdhdXNzaWFuQmx1cjo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGZsb2F0JiB4LCBj
b25zdCBmbG9hdCYgeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFR2F1c3NpYW5C
bHVyKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVHYXVzc2lhbkJsdXIoaW4s
IHgsIHkpKTsKIH0KIAotZmxvYXQgU1ZHRkVHYXVzc2lhbkJsdXI6OnN0ZERldmlhdGlvblgoKSBj
b25zdAorZmxvYXQgRkVHYXVzc2lhbkJsdXI6OnN0ZERldmlhdGlvblgoKSBjb25zdAogewogICAg
IHJldHVybiBtX3g7CiB9CiAKLXZvaWQgU1ZHRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlv
blgoZmxvYXQgeCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblgoZmxvYXQg
eCkKIHsKICAgICBtX3ggPSB4OwogfQogCi1mbG9hdCBTVkdGRUdhdXNzaWFuQmx1cjo6c3RkRGV2
aWF0aW9uWSgpIGNvbnN0CitmbG9hdCBGRUdhdXNzaWFuQmx1cjo6c3RkRGV2aWF0aW9uWSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1feTsKIH0KIAotdm9pZCBTVkdGRUdhdXNzaWFuQmx1cjo6c2V0
U3RkRGV2aWF0aW9uWShmbG9hdCB5KQordm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0
aW9uWShmbG9hdCB5KQogewogICAgIG1feSA9IHk7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFR2F1
c3NpYW5CbHVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAor
dm9pZCBGRUdhdXNzaWFuQmx1cjo6YXBwbHkoKQoreworfQorCit2b2lkIEZFR2F1c3NpYW5CbHVy
OjpkdW1wKCkKIHsKLSAgICB0cyA8PCAiW3R5cGU9R0FVU1NJQU4tQkxVUl0gIjsKLSAgICBTVkdG
aWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICIgW3N0
ZCBkZXYuIHg9IiA8PCBzdGREZXZpYXRpb25YKCkgPDwgIiB5PSIgPDwgc3RkRGV2aWF0aW9uWSgp
IDw8ICJdIjsKLSAgICByZXR1cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVy
LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUdhdXNzaWFuQmx1ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzMiArMjMsMzAgQEAKICNkZWZp
bmUgU1ZHRkVHYXVzc2lhbkJsdXJfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ZFR2F1c3NpYW5CbHVy
IDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHRkVHYXVzc2lhbkJsdXI+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAg
ZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWChm
bG9hdCk7Ci0KLSAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRT
dGREZXZpYXRpb25ZKGZsb2F0KTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9STShDSSkKLSAg
ICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNv
bnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgU1ZHRkVHYXVzc2lhbkJsdXIoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqKTsKLQotICAgIGZsb2F0IG1feDsKLSAgICBmbG9hdCBtX3k7Ci19OworICAgIGNs
YXNzIEZFR2F1c3NpYW5CbHVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUdhdXNzaWFuQmx1cj4gY3JlYXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmKTsKKworICAgICAgICBmbG9hdCBzdGRE
ZXZpYXRpb25YKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWChmbG9hdCk7
CisKKyAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWSgpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dFN0ZERldmlhdGlvblkoZmxvYXQpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVH
YXVzc2lhbkJsdXIoRmlsdGVyRWZmZWN0KiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOwor
CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47CisgICAgICAgIGZsb2F0IG1feDsK
KyAgICAgICAgZmxvYXQgbV95OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0NnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdDZy5tbQkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGRURpZmZ1c2VMaWdodGlu
Zy5oIgotI2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCi0KLSNpbXBvcnQgIldLRGlmZnVzZUxp
Z2h0aW5nRmlsdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nOjpnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0
Ci17Ci0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gbGlnaHRTb3VyY2UoKTsKLSAgICBp
ZiAoIWxpZ2h0KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgW1dLRGlmZnVzZUxpZ2h0aW5n
RmlsdGVyIGNsYXNzXTsKLQotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0
ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZv
cm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihz
dmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsKLQotICAgIENJRmlsdGVyKiBmaWx0ZXI7Ci0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0
ZXJXaXRoTmFtZTpAIldLRGlmZnVzZUxpZ2h0aW5nIl07Ci0gICAgaWYgKCFmaWx0ZXIpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBbZmlsdGVyIHNldERlZmF1bHRzXTsKLSAgICBDSUltYWdl
KiBpbnB1dEltYWdlID0gZmlsdGVyUGxhdGZvcm1EYXRhLT5pbnB1dEltYWdlKHRoaXMpOwotICAg
IEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dEltYWdlKTsKLSAgICBDSUZpbHRlciogbm9ybWFs
cyA9IGdldE5vcm1hbE1hcChpbnB1dEltYWdlLCBzdXJmYWNlU2NhbGUoKSk7Ci0gICAgaWYgKCFu
b3JtYWxzKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgQ0lGaWx0ZXIqIGxpZ2h0VmVjdG9y
cyA9IGdldExpZ2h0VmVjdG9ycyhub3JtYWxzLCBsaWdodCwgc3VyZmFjZVNjYWxlKCkpOwotICAg
IGlmICghbGlnaHRWZWN0b3JzKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgW2ZpbHRlciBz
ZXRWYWx1ZTpbbm9ybWFscyB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gZm9yS2V5OkAiaW5w
dXROb3JtYWxNYXAiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltsaWdodFZlY3RvcnMgdmFsdWVG
b3JLZXk6QCJvdXRwdXRJbWFnZSJdIGZvcktleTpAImlucHV0TGlnaHRWZWN0b3JzIl07Ci0gICAg
W2ZpbHRlciBzZXRWYWx1ZTpjaUNvbG9yKGxpZ2h0aW5nQ29sb3IoKSkgZm9yS2V5OkAiaW5wdXRM
aWdodGluZ0NvbG9yIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OnN1cmZhY2VTY2FsZSgpXSBmb3JLZXk6QCJpbnB1dFN1cmZhY2VTY2FsZSJdOwotICAg
IFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpkaWZmdXNlQ29uc3Rh
bnQoKV0gZm9yS2V5OkAiaW5wdXREaWZmdXNlQ29uc3RhbnQiXTsKLSAgICBbZmlsdGVyIHNldFZh
bHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6a2VybmVsVW5pdExlbmd0aFgoKV0gZm9yS2V5
OkAiaW5wdXRLZXJuZWxVbml0TGVuZ3RoWCJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVt
YmVyIG51bWJlcldpdGhGbG9hdDprZXJuZWxVbml0TGVuZ3RoWSgpXSBmb3JLZXk6QCJpbnB1dEtl
cm5lbFVuaXRMZW5ndGhZIl07Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94
KTsKLSAgICBGRV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9jZy9TVkdGRURpc3BsYWNlbWVudE1hcENnLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbQko
cmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNTggKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKLSNpbmNsdWRlICJTVkdGRURpc3BsYWNlbWVudE1hcC5oIgotI2luY2x1ZGUgIlNWR0ZFSGVs
cGVyc0NnLmgiCi0KLSNpbXBvcnQgIldLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZFRGlzcGxhY2VtZW50TWFwOjpnZXRDSUZp
bHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0Ci17Ci0gICAgU1ZHUmVzb3VyY2VGaWx0
ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1E
YXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0aWNfY2FzdDxTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxhdGZvcm1EYXRhKCkpOwotCi0gICAgQ0lG
aWx0ZXIqIGZpbHRlciA9IG5pbDsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0g
ICAgW1dLRGlzcGxhY2VtZW50TWFwRmlsdGVyIGNsYXNzXTsKLSAgICBmaWx0ZXIgPSBbQ0lGaWx0
ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0Rpc3BsYWNlbWVudE1hcEZpbHRlciJdOwotICAgIFtmaWx0
ZXIgc2V0RGVmYXVsdHNdOwotICAgIENJSW1hZ2UqIGlucHV0SW1hZ2UgPSBmaWx0ZXJQbGF0Zm9y
bURhdGEtPmlucHV0SW1hZ2UodGhpcyk7Ci0gICAgQ0lJbWFnZSogZGlzcGxhY2VtZW50TWFwID0g
ZmlsdGVyUGxhdGZvcm1EYXRhLT5pbWFnZUZvck5hbWUoaW4yKCkpOwotICAgIEZFX1FVQVJUWl9D
SEVDS19JTlBVVChpbnB1dEltYWdlKTsKLSAgICBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQoZGlzcGxh
Y2VtZW50TWFwKTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5w
dXRJbWFnZSJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6ZGlzcGxhY2VtZW50TWFwIGZvcktleTpA
ImlucHV0RGlzcGxhY2VtZW50TWFwIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRWZWN0b3JG
b3JDaGFubmVsKHhDaGFubmVsU2VsZWN0b3IoKSkgZm9yS2V5OkAiaW5wdXRYQ2hhbm5lbFNlbGVj
dG9yIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRWZWN0b3JGb3JDaGFubmVsKHlDaGFubmVs
U2VsZWN0b3IoKSkgZm9yS2V5OkAiaW5wdXRZQ2hhbm5lbFNlbGVjdG9yIl07Ci0gICAgW2ZpbHRl
ciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnNjYWxlKCldIGZvcktleTpAImlu
cHV0U2NhbGUiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAg
IEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1NWR0ZFRmxvb2RDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1NWR0ZFRmxvb2RDZy5tbQkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRmxvb2RDZy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMSw1NCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFRmxvb2QuaCIKLQot
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgi
Ci0jaW5jbHVkZSAiQ2dTdXBwb3J0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0
ZXIqIFNWR0ZFRmxvb2Q6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QK
LXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVyKCk7Ci0gICAgU1ZH
UmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRlclBsYXRmb3JtRGF0YSA9IHN0YXRp
Y19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKj4oc3ZnRmlsdGVyLT5wbGF0
Zm9ybURhdGEoKSk7Ci0gICAgQ0lGaWx0ZXIqIGZpbHRlcjsKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7Ci0gICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lD
b25zdGFudENvbG9yR2VuZXJhdG9yIl07Ci0gICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAg
Q0dDb2xvclJlZiBjb2xvciA9IGNnQ29sb3IoZmxvb2RDb2xvcigpKTsKLSAgICBDR0NvbG9yUmVm
IHdpdGhBbHBoYSA9IENHQ29sb3JDcmVhdGVDb3B5V2l0aEFscGhhKGNvbG9yLCBDR0NvbG9yR2V0
QWxwaGEoY29sb3IpICogZmxvb2RPcGFjaXR5KCkpOwotICAgIENJQ29sb3IqIGlucHV0Q29sb3Ig
PSBbQ0lDb2xvciBjb2xvcldpdGhDR0NvbG9yOndpdGhBbHBoYV07Ci0gICAgQ0dDb2xvclJlbGVh
c2UoY29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKHdpdGhBbHBoYSk7Ci0gICAgW2ZpbHRlciBz
ZXRWYWx1ZTppbnB1dENvbG9yIGZvcktleTpAImlucHV0Q29sb3IiXTsKLQotICAgIEZFX1FVQVJU
Wl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwot
fQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUdh
dXNzaWFuQmx1ckNnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw0
OSArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFR2F1c3NpYW5CbHVyLmgiCi0jaW5jbHVk
ZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciog
U1ZHRkVHYXVzc2lhbkJsdXI6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29u
c3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVyKCk7Ci0gICAg
RkVfUVVBUlRaX1NFVFVQX0lOUFVUKEAiQ0lHYXVzc2lhblB5cmFtaWQiKTsKLQotICAgIGZsb2F0
IGlucHV0UmFkaXVzID0gc3RkRGV2aWF0aW9uWCgpOwotICAgIGlmIChpbnB1dFJhZGl1cyAhPSBz
dGREZXZpYXRpb25ZKCkpIHsKLSAgICAgICAgZmxvYXQgaW5wdXRBc3BlY3RSYXRpbyA9IHN0ZERl
dmlhdGlvblgoKS9zdGREZXZpYXRpb25ZKCk7Ci0gICAgICAgIC8vIEZJWE1FOiBpbnB1dEFzcGVj
dFJhdGlvIG9ubHkgc3VwcG9ydCB0aGUgcmFuZ2UgLjUgdG8gMi4wIQotICAgICAgICBbZmlsdGVy
IHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6aW5wdXRBc3BlY3RSYXRpb10gZm9y
S2V5OkAiaW5wdXRBc3BlY3RSYXRpbyJdOwotICAgIH0KLSAgICBbZmlsdGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6aW5wdXRSYWRpdXNdIGZvcktleTpAImlucHV0UmFkaXVz
Il07Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94KTsKLSAgICBGRV9RVUFS
VFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9T
VkdGRUhlbHBlcnNDZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DSVZlY3RvciogZ2V0VmVjdG9y
Rm9yQ2hhbm5lbChTVkdDaGFubmVsU2VsZWN0b3JUeXBlIGNoYW5uZWwpOworQ0lWZWN0b3IqIGdl
dFZlY3RvckZvckNoYW5uZWwoQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVsKTsKIENJQ29sb3Iq
IGNpQ29sb3IoY29uc3QgQ29sb3ImIGMpOwogCiAvLyBMaWdodGluZwpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tCShyZXZpc2lv
biAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJz
Q2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUNJVmVjdG9yKiBnZXRWZWN0b3JGb3JDaGFubmVsKFNWR0NoYW5uZWxTZWxlY3Rv
clR5cGUgY2hhbm5lbCkKK0NJVmVjdG9yKiBnZXRWZWN0b3JGb3JDaGFubmVsKENoYW5uZWxTZWxl
Y3RvclR5cGUgY2hhbm5lbCkKIHsKICAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKLSAgICBjYXNlIFNW
R19DSEFOTkVMX1VOS05PV046CisgICAgY2FzZSBDSEFOTkVMX1VOS05PV046CiAgICAgICAgIHJl
dHVybiBuaWw7ICAgIAotICAgIGNhc2UgU1ZHX0NIQU5ORUxfUjoKKyAgICBjYXNlIENIQU5ORUxf
UjoKICAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjBmIFk6MC4wZiBaOjAu
MGYgVzowLjBmXTsKLSAgICBjYXNlIFNWR19DSEFOTkVMX0c6CisgICAgY2FzZSBDSEFOTkVMX0c6
CiAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjEuMGYgWjowLjBm
IFc6MC4wZl07Ci0gICAgY2FzZSBTVkdfQ0hBTk5FTF9COgorICAgIGNhc2UgQ0hBTk5FTF9COgog
ICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTowLjBmIFo6MS4wZiBX
OjAuMGZdOwotICAgIGNhc2UgU1ZHX0NIQU5ORUxfQToKKyAgICBjYXNlIENIQU5ORUxfQToKICAg
ICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6MC4wZiBaOjAuMGYgVzox
LjBmXTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhY
OjAuMGYgWTowLjBmIFo6MC4wZiBXOjAuMGZdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22122</attachid>
            <date>2008-07-07 00:22:08 -0700</date>
            <delta_ts>2008-07-08 00:45:27 -0700</delta_ts>
            <desc>Last twelve</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>136247</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTAzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjM5IEBACisyMDA4LTA3LTA3ICBBbGV4IE1hdGhld3MgIDxwb3NzZXNzZWRwZW5n
dWluYm9iQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBidWcgMTk4MzU6IFdlYktpdCBuZWVkcyBjcm9zcy1wbGF0Zm9ybSBmaWx0ZXIg
c3lzdGVtCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MzU+CisKKyAgICAgICAgTW9yZSBjbGFzcyByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBm
b3IgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIAorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50Ojp1cGRhdGVMaWdodHMpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6c3RyaW5nVG9DaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVm
ZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6dXBkYXRlTGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6
OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbnZvbHZlTWF0cml4OjprZXJuZWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9s
dmVNYXRyaXg6OnNldEtlcm5lbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1h
dHJpeDo6a2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEtl
cm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpkaXZpc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldERpdmlzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6Ymlhcyk6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bnZvbHZlTWF0cml4OjpzZXRCaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRy
aXg6OnRhcmdldE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4Ojpz
ZXRUYXJnZXRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6ZWRn
ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6c2V0RWRnZU1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6a2VybmVsVW5pdExlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxVbml0TGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnByZXNlcnZlQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBoYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjphcHBseSk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbnZvbHZlTWF0cml4OjpkdW1wKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUNvbnZvbHZlTWF0cml4Lmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnN1cmZhY2VTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RURpZmZ1c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
RGlmZnVzZUxpZ2h0aW5nOjpkaWZmdXNlQ29uc3RhbnQpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudCk6CisgICAgICAgIChXZWJDb3JlOjpG
RURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFgpOgorICAgICAgICAoV2ViQ29yZTo6
RkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhYKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWSk6CisgICAgICAgIChXZWJD
b3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkpOgorICAgICAgICAo
V2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0U291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNl
TGlnaHRpbmc6OmR1bXApOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNw
bGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OkZF
RGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnhDaGFubmVsU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnNldFhDaGFubmVs
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnlDaGFubmVs
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnNldFlDaGFu
bmVsU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaXNwbGFjZW1lbnRNYXA6OmR1bXApOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVGbG9vZDo6RkVGbG9vZCk6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6Zmxvb2RDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpGRUZsb29kOjpzZXRGbG9vZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6
OmZsb29kT3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpzZXRGbG9vZE9wYWNp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVGbG9vZDo6ZHVtcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVG
bG9vZC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1cik6
CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25YKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25YKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
R2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5C
bHVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6ZHVtcCk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OkZFSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6On5GRUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnNl
dENhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmFwcGx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmR1bXApOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1l
cmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OkZFTWVyZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RkVNZXJnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6Om1l
cmdlSW5wdXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnNldE1lcmdlSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZF
TWVyZ2U6OmR1bXApOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpGRU1vcnBob2xvZ3kpOgorICAgICAgICAo
V2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3Jw
aG9sb2d5OjpzZXRNb3JwaG9sb2d5T3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3Jw
aG9sb2d5OjpyYWRpdXNYKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6c2V0UmFk
aXVzWCk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnJhZGl1c1kpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFTW9ycGhvbG9neTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5Ojpk
dW1wKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaDoK
KyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OkZFT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVP
ZmZzZXQ6OmR4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpzZXREeCk6CisgICAgICAg
IChXZWJDb3JlOjpGRU9mZnNldDo6ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnNl
dER5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjphcHBseSk6CisgICAgICAgIChXZWJD
b3JlOjpGRU9mZnNldDo6ZHVtcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVPZmZzZXQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNw
ZWN1bGFyTGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjp+RkVTcGVjdWxh
ckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRp
bmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0
aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpzdXJmYWNl
U2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTdXJmYWNl
U2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpzcGVjdWxhckNv
bnN0YW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6c2V0U3BlY3Vs
YXJDb25zdGFudCk6CisgICAgICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6OnNwZWN1
bGFyRXhwb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRT
cGVjdWxhckV4cG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6
a2VybmVsVW5pdExlbmd0aFgpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5n
OjpzZXRLZXJuZWxVbml0TGVuZ3RoWCk6CisgICAgICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGln
aHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJM
aWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVj
dWxhckxpZ2h0aW5nOjpsaWdodFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpGRVNwZWN1bGFy
TGlnaHRpbmc6OnNldExpZ2h0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJM
aWdodGluZzo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpk
dW1wKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmcuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVUaWxlOjpGRVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjphcHBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OmR1bXApOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFVGlsZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpz
ZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6YmFzZUZyZXF1ZW5jeVkp
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXRCYXNlRnJlcXVlbmN5WSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmJhc2VGcmVxdWVuY3lYKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1ZW5jeVgpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVUdXJidWxlbmNlOjpzZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5j
ZTo6c2V0U2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6Om51bU9jdGF2ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXROdW1PY3RhdmVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6c3RpdGNoVGlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVUdXJidWxlbmNlOjpzZXRTdGl0Y2hUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1
cmJ1bGVuY2U6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6ZHVtcCk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nQ2cubW06IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUZsb29kQ2cubW06IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0VmVjdG9yRm9yQ2hhbm5lbCk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvU1ZHRkVJbWFnZUNnLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFTWVyZ2VDZy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRU9mZnNldENnLm1tOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tOiBS
ZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFVGlsZUNnLm1t
OiBSZW1vdmVkLgorCiAyMDA4LTA3LTA2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDA5
LDE3ICszMDA5LDggQEAKIAkJQjI1NTk5MzMwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNl
Q2xpcHBlckNnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNTU5ODk3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAg
Ki87IH07CiAJCUIyNTU5OTM1MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNn
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4
OTkwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gKi87IH07CiAJCUIy
NTU5OTM3MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OUIwRDAwRDhCODAw
QkI4MjVDIC8qIFNWR1Jlc291cmNlTWFza2VyQ2cubW0gKi87IH07Ci0JCUIyNTU5OTNDMEQwMEQ4
QkEwMEJCODI1QyAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTIwRDAwRDhCODAwQkI4MjVDIC8q
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gKi87IH07Ci0JCUIyNTU5OTNEMEQwMEQ4QkEwMEJC
ODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZF
RGlzcGxhY2VtZW50TWFwQ2cubW0gKi87IH07Ci0JCUIyNTU5OTNFMEQwMEQ4QkEwMEJCODI1QyAv
KiBTVkdGRUZsb29kQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjU1OThBNDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVGbG9vZENnLm1tICovOyB9
OwotCQlCMjU1OTkzRjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE1MEQw
MEQ4QjgwMEJCODI1QyAvKiBTVkdGRUdhdXNzaWFuQmx1ckNnLm1tICovOyB9OwogCQlCMjU1OTk0
MDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE2MEQwMEQ4QjgwMEJCODI1QyAvKiBT
VkdGRUhlbHBlcnNDZy5oICovOyB9OwogCQlCMjU1OTk0MTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZH
RkVIZWxwZXJzQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjU1OThBNzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cubW0gKi87IH07
Ci0JCUIyNTU5OTQyMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUltYWdlQ2cubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBODBEMDBEOEI4MDBC
QjgyNUMgLyogU1ZHRkVJbWFnZUNnLm1tICovOyB9OwotCQlCMjU1OTk0MzBEMDBEOEJBMDBCQjgy
NUMgLyogU1ZHRkVNZXJnZUNnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI1NTk4QTkwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFTWVyZ2VDZy5tbSAq
LzsgfTsKLQkJQjI1NTk5NDQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFT2Zmc2V0Q2cubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBQTBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHRkVPZmZzZXRDZy5tbSAqLzsgfTsKLQkJQjI1NTk5NDUwRDAwRDhC
QTAwQkI4MjVDIC8qIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QUIwRDAwRDhCODAwQkI4MjVDIC8q
IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tICovOyB9OwotCQlCMjU1OTk0NjBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHRkVUaWxlQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjU1OThBQzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVUaWxlQ2cubW0g
Ki87IH07CiAJCUIyNTU5OTQ3MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGaWx0ZXJFZmZlY3RDZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEFE
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGaWx0ZXJFZmZlY3RDZy5tbSAqLzsgfTsKIAkJQjI1NTk5
NDgwRDAwRDhCQTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5jaWtlcm5lbCBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QUUwRDAwRDhC
OTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5jaWtlcm5lbCAqLzsgfTsKIAkJQjI1NTk5
NDkwRDAwRDhCQTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QUYwRDAwRDhCOTAwQkI4MjVD
IC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5oICovOyB9OwpAQCAtNzM1NywxNyArNzM0OCw4IEBACiAJ
CUIyNTU5ODk3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VDbGlwcGVyQ2cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5OTBEMDBEOEI4MDBCQjgy
NUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTVkdSZXNvdXJjZUZpbHRlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMjU1OTg5QjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXJD
Zy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdSZXNvdXJj
ZU1hc2tlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThBMjBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThBMzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZH
RkVEaXNwbGFjZW1lbnRNYXBDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjU1OThBNDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVGbG9vZENnLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFRmxvb2RDZy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTUwRDAwRDhCODAwQkI4MjVDIC8qIFNW
R0ZFR2F1c3NpYW5CbHVyQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI1NTk4QTYwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGRUhlbHBlcnNDZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjU1OThBNzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJz
Q2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVIZWxw
ZXJzQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEE4MEQwMEQ4Qjgw
MEJCODI1QyAvKiBTVkdGRUltYWdlQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU1ZHRkVJbWFnZUNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMjU1OThBOTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVNZXJnZUNnLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFTWVyZ2VDZy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QUEwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFT2Zm
c2V0Q2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVP
ZmZzZXRDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QUIwRDAwRDhC
ODAwQkI4MjVDIC8qIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThBQzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZH
RkVUaWxlQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZH
RkVUaWxlQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEFEMEQwMEQ4
QjgwMEJCODI1QyAvKiBTVkdGaWx0ZXJFZmZlY3RDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGaWx0ZXJFZmZlY3RDZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QUUwRDAwRDhCOTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRpY0Zp
bHRlci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0tBcml0aG1ldGljRmlsdGVy
LmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThBRjBEMDBEOEI5
MDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0FyaXRobWV0aWNGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExOTQ1LDE3ICsxMTkyNyw4IEBACiAJCUIyNTU5ODlEMEQwMEQ4QjgwMEJCODI1QyAv
KiBjZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQjI1
NTk4QTIwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gKi8sCi0J
CQkJQjI1NTk4QTMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0g
Ki8sCi0JCQkJQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSAqLywK
LQkJCQlCMjU1OThBNTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSAq
LywKIAkJCQlCMjU1OThBNjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLywK
IAkJCQlCMjU1OThBNzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cubW0gKi8sCi0J
CQkJQjI1NTk4QTgwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2VDZy5tbSAqLywKLQkJCQlC
MjU1OThBOTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVNZXJnZUNnLm1tICovLAotCQkJCUIyNTU5
OEFBMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRU9mZnNldENnLm1tICovLAotCQkJCUIyNTU5OEFC
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5tbSAqLywKLQkJCQlC
MjU1OThBQzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVUaWxlQ2cubW0gKi8sCiAJCQkJQjI1NTk4
QUQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZpbHRlckVmZmVjdENnLm1tICovLAogCQkJCUIyNTU5
OEFFMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuY2lrZXJuZWwgKi8sCiAJ
CQkJQjI1NTk4QUYwRDAwRDhCOTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5oICovLApA
QCAtMTY1NjksNDEgKzE2NTQyLDMyIEBACiAJCQkJQjIyMjc5RDAwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk3QTBE
MDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjU1OTk3QzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5M0MwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlEMzBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyNTU5OTdFMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1hcC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzRDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaXNw
bGFjZW1lbnRNYXBDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUQ2MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjc5RDkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4MDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVG
bG9vZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzRTBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHRkVGbG9vZENnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5REMwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFRmxvb2RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OURG
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZ1bmNBRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjIyNzlFMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5jQkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RTUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY0dF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUU4MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUZ1bmNSRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4MjBEMDBE
OEJBMDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QjI1NTk5M0YwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFR2F1c3NpYW5CbHVyQ2cubW0gaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyNzlFQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTQxMEQwMEQ4QkEwMEJCODI1
QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTg0MEQwMEQ4
QkEwMEJCODI1QyAvKiBTVkdGRUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTQy
MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUltYWdlQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyNzlFRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjc5RjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTGlnaHRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTg2MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdG
RU1lcmdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTQzMEQwMEQ4QkEwMEJCODI1QyAv
KiBTVkdGRU1lcmdlQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGMzBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5
RjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMjU1OTk4ODBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVNb3JwaG9sb2d5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OThBMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRU9m
ZnNldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk0NDBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHRkVPZmZzZXRDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUY5MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGRU9mZnNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5
RkMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI1NTk5OEMwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFU3BlY3VsYXJMaWdo
dGluZy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk0NTBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGRjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyN0EwMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVTcG90TGlnaHRF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTQ2MEQwMEQ4QkEwMEJCODI1QyAv
KiBTVkdGRVRpbGVDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTA1MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGRVRpbGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OThG
MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRVR1cmJ1bGVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBMDgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDM1
MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdGRUJsZW5kRWxlbWVudF9oCiAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5o
IgogI2luY2x1ZGUgIkZFQmxlbmQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaCIKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQotI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJGRUNvbG9yTWF0cml4Lmgi
CiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkocmV2aXNp
b24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKLSNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5o
IgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnRfaAogCiAjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIkZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJGRUNvbXBvc2l0ZS5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNiBAQAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJTVkdDb2xvci5oIgotI2luY2x1ZGUgIlNWR0ZFTGlnaHRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJTVkdSZW5kZXJTdHlsZS5oIgpAQCAtNzUsMzUgKzc0LDMzIEBACiAKIFNWR0ZpbHRlckVm
ZmVjdCogU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KSAKLSAg
ICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRl
cik7Ci0KLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZm
ZWN0LT5zZXREaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KCkpOwotICAgIG1fZmlsdGVy
RWZmZWN0LT5zZXRTdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxlKCkpOwotICAgIG1fZmlsdGVyRWZm
ZWN0LT5zZXRLZXJuZWxVbml0TGVuZ3RoWChrZXJuZWxVbml0TGVuZ3RoWCgpKTsKLSAgICBtX2Zp
bHRlckVmZmVjdC0+c2V0S2VybmVsVW5pdExlbmd0aFkoa2VybmVsVW5pdExlbmd0aFkoKSk7Ci0K
LSAgICBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0X2Nh
c3Q8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Kj4odGhpcyk7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUgPSBub25Db25zdFRoaXMtPnN0eWxlRm9yUmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkp
OwotICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHlsZSA9IG5vbkNvbnN0VGhpcy0+cmVzb2x2ZVN0
eWxlKHBhcmVudFN0eWxlKTsKK2Jvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWls
ZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0g
YnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgCisgICAgaWYoIWlucHV0MSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9
IHRoaXMtPnN0eWxlRm9yUmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOworICAgIFJlbmRl
clN0eWxlKiBmaWx0ZXJTdHlsZSA9IHRoaXMtPnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7Cisg
ICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+bGlnaHRpbmdDb2xvcigp
OwogICAgIAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRMaWdodGluZ0NvbG9yKGZpbHRlclN0eWxl
LT5zdmdTdHlsZSgpLT5saWdodGluZ0NvbG9yKCkpOwotICAgIHNldFN0YW5kYXJkQXR0cmlidXRl
cyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0gCiAgICAgcGFyZW50U3R5bGUtPmRlcmVmKGRvY3Vt
ZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAgIGZpbHRlclN0eWxlLT5kZXJlZihkb2N1bWVudCgp
LT5yZW5kZXJBcmVuYSgpKTsKICAgICAKLSAgICB1cGRhdGVMaWdodHMoKTsKLSAgICByZXR1cm4g
bV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZl
Y3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGlucHV0MSwgY29sb3IsIHN1cmZhY2VTY2Fs
ZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIHVw
ZGF0ZUxpZ2h0cygpKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJl
bGVhc2UoKSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50Ojp1cGRhdGVMaWdodHMoKSBjb25zdAorTGlnaHRTb3VyY2UqIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRzKCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fZmlsdGVyRWZmZWN0KQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgTGlnaHRTb3VyY2Uq
IGxpZ2h0ID0gMDsKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5u
ZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZURp
c3RhbnRMaWdodFRhZykgfHwKQEAgLTExNSw3ICsxMTIsNyBAQAogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldExpZ2h0U291cmNlKGxpZ2h0KTsKKyAgICByZXR1cm4g
bGlnaHQ7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsMTEgQEAKICNkZWZpbmUg
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJTVkdGRUxpZ2h0RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgY2xhc3MgU1ZHRkVEaWZmdXNlTGlnaHRpbmc7CisgICAgY2xhc3MgRkVEaWZm
dXNlTGlnaHRpbmc7CiAgICAgY2xhc3MgU1ZHQ29sb3I7CiAKICAgICBjbGFzcyBTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzCkBAIC0zNyw2ICszOCw3IEBACiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAg
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQpAQCAtNDgsOSArNTAsOSBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgZmxvYXQsIEtlcm5l
bFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIGZsb2F0
LCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCiAKLSAgICAgICAgbXV0YWJs
ZSBSZWZQdHI8U1ZHRkVEaWZmdXNlTGlnaHRpbmc+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBM
aWdodFNvdXJjZSogdXBkYXRlTGlnaHRzKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICB2b2lk
IHVwZGF0ZUxpZ2h0cygpIGNvbnN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRURpZmZ1c2VM
aWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKIAogU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3hDaGFubmVsU2VsZWN0b3Io
U1ZHX0NIQU5ORUxfQSkKLSAgICAsIG1feUNoYW5uZWxTZWxlY3RvcihTVkdfQ0hBTk5FTF9BKQor
ICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKENIQU5ORUxfQSkKKyAgICAsIG1feUNoYW5uZWxTZWxl
Y3RvcihDSEFOTkVMX0EpCiAgICAgLCBtX3NjYWxlKDAuMGYpCiAgICAgLCBtX2ZpbHRlckVmZmVj
dCgwKQogewpAQCAtNDYsMTggKzQ2LDE4IEBACiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0
aW9uLCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBTVkdOYW1lczo6eUNoYW5u
ZWxTZWxlY3RvckF0dHIsIG1feUNoYW5uZWxTZWxlY3RvcikKIEFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVt
YmVyLCBTY2FsZSwgc2NhbGUsIFNWR05hbWVzOjpzY2FsZUF0dHIsIG1fc2NhbGUpCiAKLVNWR0No
YW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0No
YW5uZWwoY29uc3QgU3RyaW5nJiBrZXkpCitDaGFubmVsU2VsZWN0b3JUeXBlIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6c3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0cmluZyYga2V5KQogewog
ICAgIGlmIChrZXkgPT0gIlIiKQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfUjsKKyAgICAg
ICAgcmV0dXJuIENIQU5ORUxfUjsKICAgICBlbHNlIGlmIChrZXkgPT0gIkciKQotICAgICAgICBy
ZXR1cm4gU1ZHX0NIQU5ORUxfRzsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfRzsKICAgICBlbHNl
IGlmIChrZXkgPT0gIkIiKQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfQjsKKyAgICAgICAg
cmV0dXJuIENIQU5ORUxfQjsKICAgICBlbHNlIGlmIChrZXkgPT0gIkEiKQotICAgICAgICByZXR1
cm4gU1ZHX0NIQU5ORUxfQTsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfQTsKIAotICAgIHJldHVy
biBTVkdfQ0hBTk5FTF9VTktOT1dOOworICAgIHJldHVybiBDSEFOTkVMX1VOS05PV047CiB9CiAK
IHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUqIGF0dHIpCkBAIC03NywxOSArNzcsMjYgQEAKICAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KIAotU1ZHRkVEaXNwbGFjZW1lbnRNYXAqIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0
ZXJFZmZlY3QqIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkK
LSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZp
bHRlcik7Ci0KLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0WENoYW5uZWxTZWxlY3RvcigoU1ZHQ2hh
bm5lbFNlbGVjdG9yVHlwZSkgeENoYW5uZWxTZWxlY3RvcigpKTsKLSAgICBtX2ZpbHRlckVmZmVj
dC0+c2V0WUNoYW5uZWxTZWxlY3RvcigoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSkgeUNoYW5uZWxT
ZWxlY3RvcigpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIG1fZmls
dGVyRWZmZWN0LT5zZXRJbjIoaW4yKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRTY2FsZShz
Y2FsZSgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAot
ICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0gICAgcmV0
dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgpOworYm9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBp
bnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MiA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIAorICAgIGlmKCFp
bnB1dDEgfHwgIWlucHV0MikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFw
OjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PENoYW5uZWxTZWxlY3RvclR5cGU+
ICh4Q2hhbm5lbFNlbGVjdG9yKCkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxDaGFubmVsU2VsZWN0b3JUeXBlPiAoeUNoYW5uZWxTZWxlY3Rv
cigpKSwgc2NhbGUoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5y
ZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTAgKzMxLDExIEBACiAgICAgICAgIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFs
IH5TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoKTsKICAgICAgICAgCi0gICAgICAgIHN0YXRp
YyBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmKTsK
KyAgICAgICAgc3RhdGljIENoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFubmVsKGNvbnN0
IFN0cmluZyYpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciop
IGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKICAgICAgICAgCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDYsNyArNDcsNyBAQAogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LCBpbnQsIGludCwgWUNoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvcikKICAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudCwgZmxvYXQsIGZsb2F0LCBTY2FsZSwgc2NhbGUpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQ
dHI8U1ZHRkVEaXNwbGFjZW1lbnRNYXA+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxl
IFJlZlB0cjxGRURpc3BsYWNlbWVudE1hcD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2
aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDI1ICs0OCwyNyBAQAogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZFRmxv
b2QqIFNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZp
bHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVm
ZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0
ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVGbG9vZDo6Y3JlYXRlKGZp
bHRlcik7Ci0gICAgCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0Lmdl
dCgpKTsKLQotICAgIFNWR0ZFRmxvb2RFbGVtZW50KiBub25Db25zdFRoaXMgPSBjb25zdF9jYXN0
PFNWR0ZFRmxvb2RFbGVtZW50Kj4odGhpcyk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CiAKLSAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBub25Db25z
dFRoaXMtPnN0eWxlRm9yUmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOwotICAgIFJlbmRl
clN0eWxlKiBmaWx0ZXJTdHlsZSA9IG5vbkNvbnN0VGhpcy0+cmVzb2x2ZVN0eWxlKHBhcmVudFN0
eWxlKTsKK2Jvb2wgU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxk
ZXIpCit7CisgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gdGhpcy0+c3R5bGVGb3JSZW5k
ZXJlcihwYXJlbnQoKS0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyU3R5bGUqIGZpbHRlclN0eWxl
ID0gdGhpcy0+cmVzb2x2ZVN0eWxlKHBhcmVudFN0eWxlKTsKICAgICAKLSAgICBtX2ZpbHRlckVm
ZmVjdC0+c2V0Rmxvb2RDb2xvcihmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+Zmxvb2RDb2xvcigp
KTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0Rmxvb2RPcGFjaXR5KGZpbHRlclN0eWxlLT5zdmdT
dHlsZSgpLT5mbG9vZE9wYWNpdHkoKSk7CisgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+
c3ZnU3R5bGUoKS0+Zmxvb2RDb2xvcigpOworICAgIGZsb2F0IG9wYWNpdHkgPSBmaWx0ZXJTdHls
ZS0+c3ZnU3R5bGUoKS0+Zmxvb2RPcGFjaXR5KCk7CiAgICAgCiAgICAgcGFyZW50U3R5bGUtPmRl
cmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAgIGZpbHRlclN0eWxlLT5kZXJlZihk
b2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKICAgICAKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZl
Y3QuZ2V0KCk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRUZsb29k
OjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRk
ZWRFZmZlY3QucmVsZWFzZSgpKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICszNiwxNCBAQAog
ICAgICAgICB2aXJ0dWFsIH5TVkdGRUZsb29kRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmly
dHVhbCBTVkdGRUZsb29kKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciopIGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IG11dGFibGUgUmVmUHRyPFNWR0ZFRmxvb2Q+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRh
YmxlIFJlZlB0cjxGRUZsb29kPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTcgKzY2LDIzIEBACiAgICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CiAKLVNWR0ZFR2F1c3NpYW5CbHVyKiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZp
bHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZm
ZWN0KiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAg
IG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIpOwotICAg
IAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3Qt
PnNldFN0ZERldmlhdGlvblgoc3RkRGV2aWF0aW9uWCgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+
c2V0U3RkRGV2aWF0aW9uWShzdGREZXZpYXRpb25ZKCkpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiAwOworfQogCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmls
dGVyRWZmZWN0LmdldCgpKTsgCi0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgpOworYm9v
bCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIp
Cit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKKyAgICAKKyAgICBpZighaW5wdXQxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVHYXVzc2lhbkJs
dXI6OmNyZWF0ZShpbnB1dDEsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpKTsKKyAg
ICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgCisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw4IEBACiAgICAgICAgIHZv
aWQgc2V0U3RkRGV2aWF0aW9uKGZsb2F0IHN0ZERldmlhdGlvblgsIGZsb2F0IHN0ZERldmlhdGlv
blkpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGRUdhdXNzaWFuQmx1ciogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVy
RWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZp
cnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0
aGlzOyB9CkBAIC00OSw3ICs1MCw3IEBACiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIGZsb2F0LCBmbG9hdCwgU3RkRGV2aWF0
aW9uWCwgc3RkRGV2aWF0aW9uWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgZmxvYXQsIGZsb2F0LCBTdGREZXZpYXRpb25Z
LCBzdGREZXZpYXRpb25ZKQogCi0gICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0ZFR2F1c3NpYW5C
bHVyPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVHYXVzc2lhbkJs
dXI+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNyArODks
MjEgQEAKICAgICAgICAgbV9maWx0ZXJFZmZlY3QtPnNldENhY2hlZEltYWdlKG1fY2FjaGVkSW1h
Z2UpOwogfQogCi1TVkdGRUltYWdlKiBTVkdGRUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNW
R1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFSW1h
Z2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QK
IHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNW
R0ZFSW1hZ2U6OmNyZWF0ZShmaWx0ZXIpOwotICAgIAotICAgIC8vIFRoZSByZXNvdXJjZSBtYXkg
YWxyZWFkeSBiZSBsb2FkZWQhCi0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIG1fZmls
dGVyRWZmZWN0LT5zZXRDYWNoZWRJbWFnZShtX2NhY2hlZEltYWdlKTsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIHNldFN0YW5kYXJkQXR0cmlidXRl
cyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgp
OworYm9vbCBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikK
K3sKKyAgICBpZighbV9jYWNoZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFSW1hZ2U6OmNyZWF0
ZShtX2NhY2hlZEltYWdlKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0
LnJlbGVhc2UoKSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU1ZHRkVJbWFn
ZUVsZW1lbnQ6OmdldFN1YnJlc291cmNlQXR0cmlidXRlU3RyaW5ncyhWZWN0b3I8U3RyaW5nPiYg
dXJscykgY29uc3QKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw5ICs0NywxMCBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VicmVzb3VyY2VBdHRyaWJ1
dGVTdHJpbmdzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmls
dGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFNWR0ZFSW1h
Z2UqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29u
c3Q7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBAIC02MSw3ICs2Miw3IEBA
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUltYWdlRWxlbWVu
dCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFJlZlB0cjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
PiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAogICAgICAgICBD
YWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZTsKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVJ
bWFnZT4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFSW1hZ2U+IG1f
ZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyMSArNDAsMjYgQEAK
IHsKIH0KIAotU1ZHRkVNZXJnZSogU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRU1lcmdl
RWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdG
RU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAgICAgCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1
dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gMDsKK30KIAotICAgIFZlY3RvcjxTdHJpbmc+IG1lcmdlSW5wdXRzOworYm9vbCBT
VkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBW
ZWN0b3I8RmlsdGVyRWZmZWN0Kj4gbWVyZ2VJbnB1dHM7CiAgICAgZm9yIChOb2RlKiBuID0gZmly
c3RDaGlsZCgpOyBuICE9IDA7IG4gPSBuLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChu
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlTm9kZVRhZykpCi0gICAgICAgICAgICBtZXJn
ZUlucHV0cy5hcHBlbmQoc3RhdGljX2Nhc3Q8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Kj4obiktPmlu
MSgpKTsKKyAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlTWVyZ2VOb2RlVGFn
KSkgeworICAgICAgICAgICAgRmlsdGVyRWZmZWN0KiBtZXJnZUVmZmVjdCA9IGJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoc3RhdGljX2Nhc3Q8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Kj4obiktPmluMSgp
KTsKKyAgICAgICAgICAgIG1lcmdlSW5wdXRzLmFwcGVuZChtZXJnZUVmZmVjdCk7CisgICAgICAg
IH0KICAgICB9Ci0KLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0TWVyZ2VJbnB1dHMobWVyZ2VJbnB1
dHMpOwotICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKKyAgICAKKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShtZXJnZUlucHV0cyk7
CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAg
IAorICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJ
KHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDE0IEBACiAgICAgICAgIFNWR0ZFTWVyZ2VFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdG
RU1lcmdlRWxlbWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgU1ZHRkVNZXJnZSogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVy
RWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZp
cnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0
aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRU1lcmdl
PiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVNZXJnZT4gbV9maWx0
ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE3ICs1OSwyMyBAQAog
ICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGRU9mZnNldCogU1ZHRkVPZmZzZXRFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVm
ZmVjdCogU1ZHRkVPZmZzZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2Zp
bHRlckVmZmVjdCA9IFNWR0ZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyKTsKLSAgICAKLSAgICBtX2Zp
bHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXREeChkeCgp
KTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0RHkoZHkoKSk7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMobV9m
aWx0ZXJFZmZlY3QuZ2V0KCkpOyAKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7Citi
b29sIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sK
KyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OworICAgIAorICAgIGlmKCFpbnB1dDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoaW5w
dXQxLCBkeCgpLCBkeSgpKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0
LnJlbGVhc2UoKSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw4IEBACiAgICAgICAg
IHZpcnR1YWwgflNWR0ZFT2Zmc2V0RWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBT
VkdGRU9mZnNldCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0
ZXIqKSBjb25zdDsKKyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBAIC00Nyw3ICs0OCw3IEBACiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQsIGZsb2F0LCBm
bG9hdCwgRHgsIGR4KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVPZmZzZXRFbGVtZW50LCBmbG9hdCwgZmxvYXQsIER5LCBkeSkKIAotICAgICAgICBtdXRhYmxl
IFJlZlB0cjxTVkdGRU9mZnNldD4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUgUmVm
UHRyPEZFT2Zmc2V0PiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNDIgKzc2LDE3IEBACiAgICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CiAKLVNWR0ZFU3BlY3VsYXJMaWdodGluZyogU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0
CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVm
ZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0
ZXJFZmZlY3QpIAotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFU3BlY3VsYXJMaWdodGlu
Zzo6Y3JlYXRlKGZpbHRlcik7Ci0KLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRTcGVjdWxhckNvbnN0YW50KChzcGVjdWxhckNvbnN0YW50
KCkpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0U3BlY3VsYXJFeHBvbmVudCgoc3BlY3VsYXJF
eHBvbmVudCgpKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFN1cmZhY2VTY2FsZSgoc3VyZmFj
ZVNjYWxlKCkpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0S2VybmVsVW5pdExlbmd0aFgoKGtl
cm5lbFVuaXRMZW5ndGhYKCkpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0S2VybmVsVW5pdExl
bmd0aFkoKGtlcm5lbFVuaXRMZW5ndGhZKCkpKTsKLQotICAgIFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudCo+KHRoaXMpOwotCi0gICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gbm9uQ29u
c3RUaGlzLT5zdHlsZUZvclJlbmRlcmVyKHBhcmVudCgpLT5yZW5kZXJlcigpKTsgICAgCi0gICAg
UmVuZGVyU3R5bGUqIGZpbHRlclN0eWxlID0gbm9uQ29uc3RUaGlzLT5yZXNvbHZlU3R5bGUocGFy
ZW50U3R5bGUpOwotICAgIAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRMaWdodGluZ0NvbG9yKGZp
bHRlclN0eWxlLT5zdmdTdHlsZSgpLT5saWdodGluZ0NvbG9yKCkpOwotICAgIAotICAgIHBhcmVu
dFN0eWxlLT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKLSAgICBmaWx0ZXJTdHls
ZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7Ci0KLSAgICBzZXRTdGFuZGFyZEF0
dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QuZ2V0KCkpOwotCi0gICAgdXBkYXRlTGlnaHRzKCk7Ci0g
ICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOwogfQogCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OnVwZGF0ZUxpZ2h0cygpIGNvbnN0CitMaWdodFNvdXJjZSogU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6dXBkYXRlTGlnaHRzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBMaWdodFNvdXJjZSogbGlnaHQgPSAwOyAgICAKKyAg
ICBMaWdodFNvdXJjZSogbGlnaHQgPSAwOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQo
KTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSB8fCAKKyAgICAgICAgaWYgKG4tPmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSB8fAogICAgICAgICAgICAgbi0+aGFzVGFn
TmFtZShTVkdOYW1lczo6ZmVQb2ludExpZ2h0VGFnKSB8fAogICAgICAgICAgICAgbi0+aGFzVGFn
TmFtZShTVkdOYW1lczo6ZmVTcG90TGlnaHRUYWcpKSB7CiAgICAgICAgICAgICBTVkdGRUxpZ2h0
RWxlbWVudCogbGlnaHROb2RlID0gc3RhdGljX2Nhc3Q8U1ZHRkVMaWdodEVsZW1lbnQqPihuKTsg
CkBAIC0xMjAsNyArOTUsMjkgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsdGVyRWZm
ZWN0LT5zZXRMaWdodFNvdXJjZShsaWdodCk7CisgICAgcmV0dXJuIGxpZ2h0OworfQorCitib29s
IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxk
ZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlk
KGluMSgpKTsKKyAgICAKKyAgICBpZighaW5wdXQxKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIAorICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IHRoaXMtPnN0eWxlRm9yUmVu
ZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOyAgICAKKyAgICBSZW5kZXJTdHlsZSogZmlsdGVy
U3R5bGUgPSB0aGlzLT5yZXNvbHZlU3R5bGUocGFyZW50U3R5bGUpOworICAgIAorICAgIENvbG9y
IGNvbG9yID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKTsKKyAgICAK
KyAgICBwYXJlbnRTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CisgICAg
ZmlsdGVyU3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOworICAgIAorICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpj
cmVhdGUoaW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwg
CisgICAgICAgIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgdXBkYXRlTGlnaHRzKCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQo
KSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB9Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lv
biAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsOCBAQAogICAgICAgICB2aXJ0dWFsIH5TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwg
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIq
KTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTUwLDkgKzUxLDkgQEAK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQsIGZsb2F0LCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRM
ZW5ndGhYKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWSwga2Vy
bmVsVW5pdExlbmd0aFkpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVTcGVjdWxhckxp
Z2h0aW5nPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVTcGVjdWxh
ckxpZ2h0aW5nPiBtX2ZpbHRlckVmZmVjdDsKICAgICAgICAgCi0gICAgICAgIHZvaWQgdXBkYXRl
TGlnaHRzKCkgY29uc3Q7CisgICAgICAgIExpZ2h0U291cmNlKiB1cGRhdGVMaWdodHMoKSBjb25z
dDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVF
bGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTUgKzUyLDIzIEBACiAgICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CiAKLVNWR0ZFVGlsZSogU1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFVGlsZUVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewot
ICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVU
aWxlOjpjcmVhdGUoZmlsdGVyKTsKLQotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7
CisgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgIHJldHVybiAwOworfQogCi0gICAgc2V0U3Rh
bmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKLSAgICByZXR1cm4gbV9maWx0
ZXJFZmZlY3QuZ2V0KCk7Citib29sIFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxk
ZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKKyAgICAKKyAgICBpZighaW5wdXQxKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFVGlsZTo6
Y3JlYXRlKGlucHV0MSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5y
ZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVU
aWxlRWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsOCBAQAogICAgICAgICB2aXJ0dWFs
IH5TVkdGRVRpbGVFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFVGlsZSog
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
U1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsK
KyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiB0aGlzOyB9CkBAIC00NCw3ICs0NSw3IEBACiAgICAgcHJpdmF0ZToKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVGlsZUVsZW1lbnQsIFN0cmluZywg
U3RyaW5nLCBJbjEsIGluMSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRVRpbGU+IG1f
ZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRVRpbGU+IG1fZmlsdGVyRWZm
ZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBACiAgICAgLCBtX251bU9jdGF2ZXMoMSkKICAgICAsIG1fc2VlZCgwLjBmKQogICAgICwgbV9z
dGl0Y2hUaWxlcyhTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCkKLSAgICAsIG1fdHlwZShTVkdfVFVS
QlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCisgICAgLCBtX3R5cGUoRkVUVVJCVUxFTkNFX1RZUEVf
VFVSQlVMRU5DRSkKICAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CkBAIC01OCw5ICs1OCw5
IEBACiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlID09
ICJmcmFjdGFsTm9pc2UiKQotICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShTVkdfVFVSQlVM
RU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSk7CisgICAgICAgICAgICBzZXRUeXBlQmFzZVZhbHVlKEZF
VFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09
ICJ0dXJidWxlbmNlIikKLSAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoU1ZHX1RVUkJVTEVO
Q0VfVFlQRV9UVVJCVUxFTkNFKTsKKyAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoRkVUVVJC
VUxFTkNFX1RZUEVfVFVSQlVMRU5DRSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0cikgewogICAgICAgICBpZiAodmFsdWUgPT0gInN0aXRj
aCIpCiAgICAgICAgICAgICBzZXRTdGl0Y2hUaWxlc0Jhc2VWYWx1ZShTVkdfU1RJVENIVFlQRV9T
VElUQ0gpOwpAQCAtODAsMjEgKzgwLDE5IEBACiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZF
VHVyYnVsZW5jZSogU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAog
ewotICAgIAotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0
ID0gU1ZHRkVUdXJidWxlbmNlOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAKLSAgICBtX2ZpbHRlckVm
ZmVjdC0+c2V0VHlwZSgoU1ZHVHVyYnVsYW5jZVR5cGUpIHR5cGUoKSk7Ci0gICAgbV9maWx0ZXJF
ZmZlY3QtPnNldEJhc2VGcmVxdWVuY3lYKGJhc2VGcmVxdWVuY3lYKCkpOwotICAgIG1fZmlsdGVy
RWZmZWN0LT5zZXRCYXNlRnJlcXVlbmN5WShiYXNlRnJlcXVlbmN5WSgpKTsKLSAgICBtX2ZpbHRl
ckVmZmVjdC0+c2V0TnVtT2N0YXZlcyhudW1PY3RhdmVzKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0
LT5zZXRTZWVkKHNlZWQoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFN0aXRjaFRpbGVzKHN0
aXRjaFRpbGVzKCkgPT0gU1ZHX1NUSVRDSFRZUEVfU1RJVENIKTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyht
X2ZpbHRlckVmZmVjdC5nZXQoKSk7IAotICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsK
K2Jvb2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRl
cikKK3sKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFVHVyYnVsZW5j
ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFR1cmJ1bGFuY2VUeXBlPiAodHlwZSgpKSwgYmFzZUZyZXF1
ZW5jeVgoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUZy
ZXF1ZW5jeVkoKSwgbnVtT2N0YXZlcygpLCBzZWVkKCksIHN0aXRjaFRpbGVzKCkgPT0gU1ZHX1NU
SVRDSFRZUEVfU1RJVENIKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0
LnJlbGVhc2UoKSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw4
IEBACiAgICAgICAgIHZpcnR1YWwgflNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQoKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0g
ICAgICAgIHZpcnR1YWwgU1ZHRkVUdXJidWxlbmNlKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VG
aWx0ZXIqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVm
ZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRl
ckJ1aWxkZXIqKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTU1LDcg
KzU2LDcgQEAKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQsIGludCwgaW50LCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMpCiAgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LCBpbnQsIGludCwgVHlwZSwgdHlwZSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRVR1
cmJ1bGVuY2U+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRVR1cmJ1
bGVuY2U+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBA
CiAjZGVmaW5lIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc19oCiAKICNpZiBF
TkFCTEUoU1ZHKQorI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdTdHls
ZWRFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkocmV2aXNp
b24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVN
YXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMzcgKzIyLDEyMiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2lu
Y2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTVkdGRUNvbnZvbHZlTWF0
cml4LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVDb252b2x2ZU1hdHJpeDo6U1ZH
RkVDb252b2x2ZU1hdHJpeChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmls
dGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1fa2VybmVsU2l6ZSgpCi0gICAgLCBtX2Rpdmlzb3Io
MC4wZikKLSAgICAsIG1fYmlhcygwLjBmKQotICAgICwgbV90YXJnZXRPZmZzZXQoKQotICAgICwg
bV9lZGdlTW9kZShTVkdfRURHRU1PREVfVU5LTk9XTikKLSAgICAsIG1fa2VybmVsVW5pdExlbmd0
aCgpCi0gICAgLCBtX3ByZXNlcnZlQWxwaGEoZmFsc2UpCitGRUNvbnZvbHZlTWF0cml4OjpGRUNv
bnZvbHZlTWF0cml4KEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yLCBjb25zdCBG
bG9hdFNpemUmIGtlcm5lbFNpemUsIAorICAgIGNvbnN0IGZsb2F0JiBkaXZpc29yLCBjb25zdCBm
bG9hdCYgYmlhcywgY29uc3QgRmxvYXRTaXplJiB0YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlwZSBl
ZGdlTW9kZSwKKyAgICBjb25zdCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoLCBib29sIHBy
ZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJpeCkKKyAgICA6IEZp
bHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQorICAgICwgbV9pbjIoaW4yKQorICAgICwgbV9r
ZXJuZWxTaXplKGtlcm5lbFNpemUpCisgICAgLCBtX2Rpdmlzb3IoZGl2aXNvcikKKyAgICAsIG1f
YmlhcyhiaWFzKQorICAgICwgbV90YXJnZXRPZmZzZXQodGFyZ2V0T2Zmc2V0KQorICAgICwgbV9l
ZGdlTW9kZShlZGdlTW9kZSkKKyAgICAsIG1fa2VybmVsVW5pdExlbmd0aChrZXJuZWxVbml0TGVu
Z3RoKQorICAgICwgbV9wcmVzZXJ2ZUFscGhhKHByZXNlcnZlQWxwaGEpCisgICAgLCBtX2tlcm5l
bE1hdHJpeChrZXJuZWxNYXRyaXgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1h
dHJpeD4gU1ZHRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXIpCitQYXNzUmVmUHRyPEZFQ29udm9sdmVNYXRyaXg+IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0
ZShGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3QgRmxvYXRTaXplJiBr
ZXJuZWxTaXplLCAKKyAgICBjb25zdCBmbG9hdCYgZGl2aXNvciwgY29uc3QgZmxvYXQmIGJpYXMs
IGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUsIAor
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBo
YSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHRkVDb252b2x2ZU1hdHJpeChmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZFQ29udm9sdmVNYXRyaXgoaW4sIGluMiwga2VybmVsU2l6ZSwgZGl2aXNvciwgYmlh
cywgdGFyZ2V0T2Zmc2V0LCBlZGdlTW9kZSwga2VybmVsVW5pdExlbmd0aCwKKyAgICAgICAgcHJl
c2VydmVBbHBoYSwga2VybmVsTWF0cml4KSk7CiB9CiAKLUZsb2F0U2l6ZSBTVkdGRUNvbnZvbHZl
TWF0cml4OjprZXJuZWxTaXplKCkgY29uc3QKKworRmxvYXRTaXplIEZFQ29udm9sdmVNYXRyaXg6
Omtlcm5lbFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX2tlcm5lbFNpemU7CiB9CiAKLXZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsU2l6ZShGbG9hdFNpemUga2VybmVsU2l6
ZSkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsU2l6ZShGbG9hdFNpemUga2VybmVs
U2l6ZSkKIHsKICAgICBtX2tlcm5lbFNpemUgPSBrZXJuZWxTaXplOyAKIH0KIAotY29uc3QgVmVj
dG9yPGZsb2F0PiYgU1ZHRkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKCkgY29uc3QKK2NvbnN0IFZl
Y3RvcjxmbG9hdD4mIEZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fa2VybmVsTWF0cml4OyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRL
ZXJuZWwoY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsKQordm9pZCBGRUNvbnZvbHZlTWF0cml4
OjpzZXRLZXJuZWwoY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsKQogewogICAgIG1fa2VybmVs
TWF0cml4ID0ga2VybmVsOyAKIH0KIAotZmxvYXQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6ZGl2aXNv
cigpIGNvbnN0CitmbG9hdCBGRUNvbnZvbHZlTWF0cml4OjpkaXZpc29yKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9kaXZpc29yOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRE
aXZpc29yKGZsb2F0IGRpdmlzb3IpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldERpdmlzb3Io
ZmxvYXQgZGl2aXNvcikKIHsKICAgICBtX2Rpdmlzb3IgPSBkaXZpc29yOyAKIH0KIAotZmxvYXQg
U1ZHRkVDb252b2x2ZU1hdHJpeDo6YmlhcygpIGNvbnN0CitmbG9hdCBGRUNvbnZvbHZlTWF0cml4
OjpiaWFzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iaWFzOyAKIH0KIAotdm9pZCBTVkdGRUNv
bnZvbHZlTWF0cml4OjpzZXRCaWFzKGZsb2F0IGJpYXMpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6
OnNldEJpYXMoZmxvYXQgYmlhcykKIHsKICAgICBtX2JpYXMgPSBiaWFzOyAKIH0KIAotRmxvYXRT
aXplIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnRhcmdldE9mZnNldCgpIGNvbnN0CitGbG9hdFNpemUg
RkVDb252b2x2ZU1hdHJpeDo6dGFyZ2V0T2Zmc2V0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90
YXJnZXRPZmZzZXQ7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldFRhcmdldE9m
ZnNldChGbG9hdFNpemUgdGFyZ2V0T2Zmc2V0KQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRU
YXJnZXRPZmZzZXQoRmxvYXRTaXplIHRhcmdldE9mZnNldCkKIHsKICAgICBtX3RhcmdldE9mZnNl
dCA9IHRhcmdldE9mZnNldDsgCiB9CiAKLVNWR0VkZ2VNb2RlVHlwZSBTVkdGRUNvbnZvbHZlTWF0
cml4OjplZGdlTW9kZSgpIGNvbnN0CitFZGdlTW9kZVR5cGUgRkVDb252b2x2ZU1hdHJpeDo6ZWRn
ZU1vZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2VkZ2VNb2RlOyAKIH0KIAotdm9pZCBTVkdG
RUNvbnZvbHZlTWF0cml4OjpzZXRFZGdlTW9kZShTVkdFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCit2
b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldEVkZ2VNb2RlKEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkK
IHsKICAgICBtX2VkZ2VNb2RlID0gZWRnZU1vZGU7IAogfQogCi1GbG9hdFBvaW50IFNWR0ZFQ29u
dm9sdmVNYXRyaXg6Omtlcm5lbFVuaXRMZW5ndGgoKSBjb25zdAorRmxvYXRQb2ludCBGRUNvbnZv
bHZlTWF0cml4OjprZXJuZWxVbml0TGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJu
ZWxVbml0TGVuZ3RoOyAKIH0KIAotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxV
bml0TGVuZ3RoKEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCkKK3ZvaWQgRkVDb252b2x2ZU1h
dHJpeDo6c2V0S2VybmVsVW5pdExlbmd0aChGbG9hdFBvaW50IGtlcm5lbFVuaXRMZW5ndGgpCiB7
CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoID0ga2VybmVsVW5pdExlbmd0aDsgCiB9CiAKLWJvb2wg
U1ZHRkVDb252b2x2ZU1hdHJpeDo6cHJlc2VydmVBbHBoYSgpIGNvbnN0Citib29sIEZFQ29udm9s
dmVNYXRyaXg6OnByZXNlcnZlQWxwaGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3ByZXNlcnZl
QWxwaGE7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldFByZXNlcnZlQWxwaGEo
Ym9vbCBwcmVzZXJ2ZUFscGhhKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFs
cGhhKGJvb2wgcHJlc2VydmVBbHBoYSkKIHsKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2
ZUFscGhhOyAKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIFNWR0VkZ2VNb2RlVHlwZSB0KQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjphcHBseSgpCit7
Cit9CisKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6ZHVtcCgpCiB7Ci0gICAgc3dpdGNoICh0KQot
ICAgIHsKLSAgICAgICAgY2FzZSBTVkdfRURHRU1PREVfVU5LTk9XTjoKLSAgICAgICAgICAgIHRz
IDw8ICJVTktOT1dOIjticmVhazsKLSAgICAgICAgY2FzZSBTVkdfRURHRU1PREVfRFVQTElDQVRF
OgotICAgICAgICAgICAgdHMgPDwgIkRVUExJQ0FURSI7YnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
X0VER0VNT0RFX1dSQVA6Ci0gICAgICAgICAgICB0cyA8PCAiV1JBUCI7IGJyZWFrOwotICAgICAg
ICBjYXNlIFNWR19FREdFTU9ERV9OT05FOgotICAgICAgICAgICAgdHMgPDwgIk5PTkUiOyBicmVh
azsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1UZXh0U3RyZWFtJiBTVkdGRUNvbnZvbHZl
TWF0cml4OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewot
ICAgIHRzIDw8ICJbdHlwZT1DT05WT0xWRS1NQVRSSVhdICI7Ci0gICAgU1ZHRmlsdGVyRWZmZWN0
OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKLSAgICB0cyA8PCAiIFtvcmRlciAiIDw8IG1f
a2VybmVsU2l6ZSA8PCAiXSIKLSAgICAgICAgPDwgIiBba2VybmVsIG1hdHJpeD0iIDw8IG1fa2Vy
bmVsTWF0cml4ICA8PCAiXSIKLSAgICAgICAgPDwgIiBbZGl2aXNvcj0iIDw8IG1fZGl2aXNvciA8
PCAiXSIKLSAgICAgICAgPDwgIiBbYmlhcz0iIDw8IG1fYmlhcyA8PCAiXSIKLSAgICAgICAgPDwg
IiBbdGFyZ2V0ICIgPDwgbV90YXJnZXRPZmZzZXQgPDwgIl0iCi0gICAgICAgIDw8ICIgW2VkZ2Ug
bW9kZT0iIDw8IG1fZWRnZU1vZGUgPDwgIl0iCi0gICAgICAgIDw8ICIgW2tlcm5lbCB1bml0IGxl
bmd0aCAiIDw8IG1fa2VybmVsVW5pdExlbmd0aCA8PCAiXSIKLSAgICAgICAgPDwgIiBbcHJlc2Vy
dmUgYWxwaGE9IiA8PCBtX3ByZXNlcnZlQWxwaGEgPDwgIl0iOwotICAgIHJldHVybiB0czsKIH0K
IAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCShyZXZpc2lvbiAzNTAwNikKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw1OSArMjMsNjkgQEAKICNkZWZpbmUgU1ZHRkVDb252b2x2ZU1hdHJp
eF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAi
U1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU1ZHRWRnZU1vZGVUeXBlIHsK
LSAgICBTVkdfRURHRU1PREVfVU5LTk9XTiAgID0gMCwKLSAgICBTVkdfRURHRU1PREVfRFVQTElD
QVRFID0gMSwKLSAgICBTVkdfRURHRU1PREVfV1JBUCAgICAgID0gMiwKLSAgICBTVkdfRURHRU1P
REVfTk9ORSAgICAgID0gMwotfTsKLQotY2xhc3MgU1ZHRkVDb252b2x2ZU1hdHJpeCA6IHB1Ymxp
YyBTVkdGaWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZF
Q29udm9sdmVNYXRyaXg+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgRmxvYXRT
aXplIGtlcm5lbFNpemUoKSBjb25zdDsKLSAgICB2b2lkIHNldEtlcm5lbFNpemUoRmxvYXRTaXpl
KTsKLQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbCgpIGNvbnN0OwotICAgIHZvaWQg
c2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGZsb2F0IGRpdmlzb3IoKSBj
b25zdDsKLSAgICB2b2lkIHNldERpdmlzb3IoZmxvYXQpOwotCi0gICAgZmxvYXQgYmlhcygpIGNv
bnN0OwotICAgIHZvaWQgc2V0QmlhcyhmbG9hdCk7Ci0KLSAgICBGbG9hdFNpemUgdGFyZ2V0T2Zm
c2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUYXJnZXRPZmZzZXQoRmxvYXRTaXplKTsKLQotICAg
IFNWR0VkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RWRnZU1vZGUo
U1ZHRWRnZU1vZGVUeXBlKTsKLQotICAgIEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aChGbG9hdFBvaW50KTsKLQotICAgIGJv
b2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJlc2VydmVBbHBoYShib29s
KTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVDb252b2x2ZU1hdHJpeChTVkdS
ZXNvdXJjZUZpbHRlciopOwotCi0gICAgRmxvYXRTaXplIG1fa2VybmVsU2l6ZTsKLSAgICBmbG9h
dCBtX2Rpdmlzb3I7Ci0gICAgZmxvYXQgbV9iaWFzOwotICAgIEZsb2F0U2l6ZSBtX3RhcmdldE9m
ZnNldDsKLSAgICBTVkdFZGdlTW9kZVR5cGUgbV9lZGdlTW9kZTsKLSAgICBGbG9hdFBvaW50IG1f
a2VybmVsVW5pdExlbmd0aDsKLSAgICBib29sIG1fcHJlc2VydmVBbHBoYTsKLSAgICBWZWN0b3I8
ZmxvYXQ+IG1fa2VybmVsTWF0cml4OyAvLyBtYXliZSBzaG91bGQgYmUgYSByZWFsIG1hdHJpeD8K
LX07CisgICAgZW51bSBFZGdlTW9kZVR5cGUgeworICAgICAgICBFREdFTU9ERV9VTktOT1dOICAg
PSAwLAorICAgICAgICBFREdFTU9ERV9EVVBMSUNBVEUgPSAxLAorICAgICAgICBFREdFTU9ERV9X
UkFQICAgICAgPSAyLAorICAgICAgICBFREdFTU9ERV9OT05FICAgICAgPSAzCisgICAgfTsKKwor
ICAgIGNsYXNzIEZFQ29udm9sdmVNYXRyaXggOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFQ29udm9sdmVNYXRyaXg+IGNyZWF0
ZShGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBjb25zdCBGbG9hdFNpemUmLCAKKyAgICAg
ICAgICAgICAgICBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgY29uc3QgRmxvYXRTaXplJiwg
RWRnZU1vZGVUeXBlLCBjb25zdCBGbG9hdFBvaW50JiwKKyAgICAgICAgICAgICAgICBib29sLCBj
b25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAgICAgICAgRmxvYXRTaXplIGtlcm5lbFNpemUoKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWxTaXplKEZsb2F0U2l6ZSk7CisKKyAgICAgICAg
Y29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2Vy
bmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKworICAgICAgICBmbG9hdCBkaXZpc29yKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0RGl2aXNvcihmbG9hdCk7CisKKyAgICAgICAgZmxvYXQgYmlh
cygpIGNvbnN0OworICAgICAgICB2b2lkIHNldEJpYXMoZmxvYXQpOworCisgICAgICAgIEZsb2F0
U2l6ZSB0YXJnZXRPZmZzZXQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRUYXJnZXRPZmZzZXQo
RmxvYXRTaXplKTsKKworICAgICAgICBFZGdlTW9kZVR5cGUgZWRnZU1vZGUoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUpOworCisgICAgICAgIEZsb2F0UG9p
bnQga2VybmVsVW5pdExlbmd0aCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldEtlcm5lbFVuaXRM
ZW5ndGgoRmxvYXRQb2ludCk7CisKKyAgICAgICAgYm9vbCBwcmVzZXJ2ZUFscGhhKCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0UHJlc2VydmVBbHBoYShib29sKTsKKworICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHByaXZh
dGU6CisgICAgICAgIEZFQ29udm9sdmVNYXRyaXgoRmlsdGVyRWZmZWN0KiwgRmlsdGVyRWZmZWN0
KiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsCisgICAgICAg
ICAgICAgICAgY29uc3QgRmxvYXRTaXplJiwgRWRnZU1vZGVUeXBlLCBjb25zdCBGbG9hdFBvaW50
JiwgYm9vbCwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IG1faW47CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW4yOworICAgICAg
ICBGbG9hdFNpemUgbV9rZXJuZWxTaXplOworICAgICAgICBmbG9hdCBtX2Rpdmlzb3I7CisgICAg
ICAgIGZsb2F0IG1fYmlhczsKKyAgICAgICAgRmxvYXRTaXplIG1fdGFyZ2V0T2Zmc2V0OworICAg
ICAgICBFZGdlTW9kZVR5cGUgbV9lZGdlTW9kZTsKKyAgICAgICAgRmxvYXRQb2ludCBtX2tlcm5l
bFVuaXRMZW5ndGg7CisgICAgICAgIGJvb2wgbV9wcmVzZXJ2ZUFscGhhOworICAgICAgICBWZWN0
b3I8ZmxvYXQ+IG1fa2VybmVsTWF0cml4OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdo
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDk4ICsyNCw5OSBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
ICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nLmgiCi0jaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpTVkdGRURpZmZ1c2VMaWdodGluZyhTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1fbGln
aHRpbmdDb2xvcigpCi0gICAgLCBtX3N1cmZhY2VTY2FsZSgwLjBmKQotICAgICwgbV9kaWZmdXNl
Q29uc3RhbnQoMC4wZikKLSAgICAsIG1fa2VybmVsVW5pdExlbmd0aFgoMC4wZikKLSAgICAsIG1f
a2VybmVsVW5pdExlbmd0aFkoMC4wZikKLSAgICAsIG1fbGlnaHRTb3VyY2UoMCkKK0ZFRGlmZnVz
ZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXJFZmZlY3QqIGluICwgY29uc3QgQ29s
b3ImIGxpZ2h0aW5nQ29sb3IsIGNvbnN0IGZsb2F0JiBzdXJmYWNlU2NhbGUsCisgICAgY29uc3Qg
ZmxvYXQmIGRpZmZ1c2VDb25zdGFudCwgY29uc3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLCBj
b25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFksIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkK
KyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQorICAgICwgbV9saWdodGluZ0Nv
bG9yKGxpZ2h0aW5nQ29sb3IpCisgICAgLCBtX3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCisg
ICAgLCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQpCisgICAgLCBtX2tlcm5lbFVu
aXRMZW5ndGhYKGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWShr
ZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCiB7CiB9
CiAKLVBhc3NSZWZQdHI8U1ZHRkVEaWZmdXNlTGlnaHRpbmc+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
OjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVEaWZmdXNl
TGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiAsIGNv
bnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLAorICAgIGNvbnN0IGZsb2F0JiBzdXJmYWNlU2NhbGUs
IGNvbnN0IGZsb2F0JiBkaWZmdXNlQ29uc3RhbnQsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVu
Z3RoWCwKKyAgICBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFksIExpZ2h0U291cmNlKiBs
aWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVEaWZmdXNlTGlnaHRpbmco
aW4sIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxV
bml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIGxpZ2h0U291cmNlKSk7CiB9CiAKLVNWR0ZF
RGlmZnVzZUxpZ2h0aW5nOjp+U1ZHRkVEaWZmdXNlTGlnaHRpbmcoKQorRkVEaWZmdXNlTGlnaHRp
bmc6On5GRURpZmZ1c2VMaWdodGluZygpCiB7CiB9CiAKLUNvbG9yIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QKK0NvbG9yIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdo
dGluZ0NvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saWdodGluZ0NvbG9yOwogfQogCi12
b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBs
aWdodGluZ0NvbG9yKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihj
b25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcikKIHsKICAgICBtX2xpZ2h0aW5nQ29sb3IgPSBsaWdo
dGluZ0NvbG9yOwogfQogCi1mbG9hdCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c3VyZmFjZVNjYWxl
KCkgY29uc3QgCitmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6c3VyZmFjZVNjYWxlKCkgY29uc3Qg
CiB7CiAgICAgcmV0dXJuIG1fc3VyZmFjZVNjYWxlOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUoZmxvYXQgc3VyZmFjZVNjYWxlKQordm9pZCBGRURpZmZ1
c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxlKGZsb2F0IHN1cmZhY2VTY2FsZSkKIHsKICAgICBt
X3N1cmZhY2VTY2FsZSA9IHN1cmZhY2VTY2FsZTsKIH0KIAotZmxvYXQgU1ZHRkVEaWZmdXNlTGln
aHRpbmc6OmRpZmZ1c2VDb25zdGFudCgpIGNvbnN0CitmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6
ZGlmZnVzZUNvbnN0YW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQ7
CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9h
dCBkaWZmdXNlQ29uc3RhbnQpCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXREaWZmdXNlQ29u
c3RhbnQoZmxvYXQgZGlmZnVzZUNvbnN0YW50KQogewogICAgIG1fZGlmZnVzZUNvbnN0YW50ID0g
ZGlmZnVzZUNvbnN0YW50OwogfQogCi1mbG9hdCBTVkdGRURpZmZ1c2VMaWdodGluZzo6a2VybmVs
VW5pdExlbmd0aFgoKSBjb25zdAorZmxvYXQgRkVEaWZmdXNlTGlnaHRpbmc6Omtlcm5lbFVuaXRM
ZW5ndGhYKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsKIH0KIAot
dm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFgpCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVu
Z3RoWChmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCkKIHsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhY
ID0ga2VybmVsVW5pdExlbmd0aFg7CiB9CiAKLWZsb2F0IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpr
ZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0CitmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6a2VybmVs
VW5pdExlbmd0aFkoKSBjb25zdAogewogICAgIHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZOwog
fQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9h
dCBrZXJuZWxVbml0TGVuZ3RoWSkKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVu
aXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKQogewogICAgIG1fa2VybmVsVW5pdExl
bmd0aFkgPSBrZXJuZWxVbml0TGVuZ3RoWTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSog
RkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9s
aWdodFNvdXJjZS5nZXQoKTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0TGln
aHRTb3VyY2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQordm9pZCBGRURpZmZ1c2VMaWdodGlu
Zzo6c2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQogeyAgICAKICAgICBt
X2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAor
dm9pZCBGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkoKQoreworfQorCit2b2lkIEZFRGlmZnVzZUxp
Z2h0aW5nOjpkdW1wKCkKIHsKLSAgICB0cyA8PCAiW3R5cGU9RElGRlVTRS1MSUdIVElOR10gIjsK
LSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIHRz
IDw8ICIgW3N1cmZhY2Ugc2NhbGU9IiA8PCBtX3N1cmZhY2VTY2FsZSA8PCAiXSIKLSAgICAgICAg
PDwgIiBbZGlmZnVzZSBjb25zdGFudD0iIDw8IG1fZGlmZnVzZUNvbnN0YW50IDw8ICJdIgotICAg
ICAgICA8PCAiIFtrZXJuZWwgdW5pdCBsZW5ndGggIiA8PCBtX2tlcm5lbFVuaXRMZW5ndGhYIDw8
ICIsICIgPDwgbV9rZXJuZWxVbml0TGVuZ3RoWSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCShyZXZpc2lvbiAzNTAwNikKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNTEgKzI0LDUxIEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJF
ZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBMaWdodFNvdXJjZTsKKyAgICBjbGFzcyBMaWdodFNvdXJjZTsKIAotY2xhc3Mg
U1ZHRkVEaWZmdXNlTGlnaHRpbmcgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKFNWR1Jl
c291cmNlRmlsdGVyKik7Ci0gICAgdmlydHVhbCB+U1ZHRkVEaWZmdXNlTGlnaHRpbmcoKTsKLQot
ICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldExpZ2h0aW5nQ29s
b3IoY29uc3QgQ29sb3ImKTsKLQotICAgIGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKLQotICAgIGZsb2F0IGRpZmZ1c2VDb25zdGFu
dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKLQotICAgIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVu
Z3RoWChmbG9hdCk7Ci0KLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwotCi0gICAgY29uc3QgTGlnaHRTb3Vy
Y2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNv
dXJjZSopOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lG
aWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYK
LQotcHJpdmF0ZToKLSAgICBTVkdGRURpZmZ1c2VMaWdodGluZyhTVkdSZXNvdXJjZUZpbHRlciop
OwotICAgIAotICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKLSAgICBmbG9hdCBtX3N1cmZhY2VT
Y2FsZTsKLSAgICBmbG9hdCBtX2RpZmZ1c2VDb25zdGFudDsKLSAgICBmbG9hdCBtX2tlcm5lbFVu
aXRMZW5ndGhYOwotICAgIGZsb2F0IG1fa2VybmVsVW5pdExlbmd0aFk7Ci0gICAgUmVmUHRyPExp
Z2h0U291cmNlPiBtX2xpZ2h0U291cmNlOwotfTsKKyAgICBjbGFzcyBGRURpZmZ1c2VMaWdodGlu
ZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBD
b2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGNvbnN0
IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBMaWdodFNvdXJjZSopOworICAgICAgICB2aXJ0dWFsIH5G
RURpZmZ1c2VMaWdodGluZygpOworCisgICAgICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICAg
ICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3VyZmFjZVNj
YWxlKGZsb2F0KTsKKworICAgICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXREaWZmdXNlQ29uc3RhbnQoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhYKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0
aFgoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOworCisgICAgICAgIGNvbnN0
IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0
U291cmNlKExpZ2h0U291cmNlKik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAg
ICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlckVmZmVjdCosIGNvbnN0IENvbG9yJiwgY29uc3Qg
ZmxvYXQmLCBjb25zdCBmbG9hdCYsCisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQmLCBjb25z
dCBmbG9hdCYsIExpZ2h0U291cmNlKik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
bV9pbjsKKyAgICAgICAgQ29sb3IgbV9saWdodGluZ0NvbG9yOworICAgICAgICBmbG9hdCBtX3N1
cmZhY2VTY2FsZTsKKyAgICAgICAgZmxvYXQgbV9kaWZmdXNlQ29uc3RhbnQ7CisgICAgICAgIGZs
b2F0IG1fa2VybmVsVW5pdExlbmd0aFg7CisgICAgICAgIGZsb2F0IG1fa2VybmVsVW5pdExlbmd0
aFk7CisgICAgICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiAzNTAw
NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw5MiArMjIsNjMgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJT
VkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRURpc3BsYWNlbWVudE1hcDo6U1ZHRkVEaXNw
bGFjZW1lbnRNYXAoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVm
ZmVjdChmaWx0ZXIpCi0gICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoU1ZHX0NIQU5ORUxfVU5LTk9X
TikKLSAgICAsIG1feUNoYW5uZWxTZWxlY3RvcihTVkdfQ0hBTk5FTF9VTktOT1dOKQotICAgICwg
bV9zY2FsZSgwKQorRkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKEZpbHRlckVm
ZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVs
U2VsZWN0b3IsCisgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBjb25z
dCBmbG9hdCYgc2NhbGUpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAg
ICAsIG1faW4yKGluMikKKyAgICAsIG1feENoYW5uZWxTZWxlY3Rvcih4Q2hhbm5lbFNlbGVjdG9y
KQorICAgICwgbV95Q2hhbm5lbFNlbGVjdG9yKHlDaGFubmVsU2VsZWN0b3IpCisgICAgLCBtX3Nj
YWxlKHNjYWxlKQogewogfQogCi1QYXNzUmVmUHRyPFNWR0ZFRGlzcGxhY2VtZW50TWFwPiBTVkdG
RURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNz
UmVmUHRyPEZFRGlzcGxhY2VtZW50TWFwPiBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKEZpbHRl
ckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yLAorICAgIENoYW5uZWxTZWxlY3RvclR5cGUg
eENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBj
b25zdCBmbG9hdCYgc2NhbGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGRURpc3Bs
YWNlbWVudE1hcChmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFRGlzcGxhY2Vt
ZW50TWFwKGluLCBpbjIsIHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxl
KSk7CiB9CiAKLVN0cmluZyBTVkdGRURpc3BsYWNlbWVudE1hcDo6aW4yKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9pbjI7Ci19Ci0KLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNldEluMihj
b25zdCBTdHJpbmcgJmluMikKLXsKLSAgICBtX2luMiA9IGluMjsKLX0KLQotU1ZHQ2hhbm5lbFNl
bGVjdG9yVHlwZSBTVkdGRURpc3BsYWNlbWVudE1hcDo6eENoYW5uZWxTZWxlY3RvcigpIGNvbnN0
CitDaGFubmVsU2VsZWN0b3JUeXBlIEZFRGlzcGxhY2VtZW50TWFwOjp4Q2hhbm5lbFNlbGVjdG9y
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV94Q2hhbm5lbFNlbGVjdG9yOwogfQogCi12b2lkIFNW
R0ZFRGlzcGxhY2VtZW50TWFwOjpzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxT
ZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcikKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNl
dFhDaGFubmVsU2VsZWN0b3IoY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVj
dG9yKQogewogICAgIG1feENoYW5uZWxTZWxlY3RvciA9IHhDaGFubmVsU2VsZWN0b3I7CiB9CiAK
LVNWR0NoYW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnlDaGFubmVsU2Vs
ZWN0b3IoKSBjb25zdAorQ2hhbm5lbFNlbGVjdG9yVHlwZSBGRURpc3BsYWNlbWVudE1hcDo6eUNo
YW5uZWxTZWxlY3RvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feUNoYW5uZWxTZWxlY3RvcjsK
IH0KIAotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcihjb25z
dCBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IpCit2b2lkIEZFRGlzcGxh
Y2VtZW50TWFwOjpzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUg
eUNoYW5uZWxTZWxlY3RvcikKIHsKICAgICBtX3lDaGFubmVsU2VsZWN0b3IgPSB5Q2hhbm5lbFNl
bGVjdG9yOwogfQogCi1mbG9hdCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2NhbGUoKSBjb25zdAor
ZmxvYXQgRkVEaXNwbGFjZW1lbnRNYXA6OnNjYWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
Y2FsZTsKIH0KIAotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgc2Nh
bGUpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKIHsKICAg
ICBtX3NjYWxlID0gc2NhbGU7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHQpCit2b2lkIEZFRGlzcGxhY2Vt
ZW50TWFwOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmR1bXAoKQog
ewotICAgIHN3aXRjaCAodCkKLSAgICB7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfVU5LTk9X
TjoKLSAgICAgICAgICAgIHRzIDw8ICJVTktOT1dOIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
X0NIQU5ORUxfUjoKLSAgICAgICAgICAgIHRzIDw8ICJSRUQiOyBicmVhazsKLSAgICAgICAgY2Fz
ZSBTVkdfQ0hBTk5FTF9HOgotICAgICAgICAgICAgdHMgPDwgIkdSRUVOIjsgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU1ZHX0NIQU5ORUxfQjoKLSAgICAgICAgICAgIHRzIDw8ICJCTFVFIjsgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfQToKLSAgICAgICAgICAgIHRzIDw8ICJBTFBIQSI7
IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIFNWR0ZFRGlz
cGxhY2VtZW50TWFwOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25z
dAotewotICAgIHRzIDw8ICJbdHlwZT1ESVNQTEFDRU1FTlQtTUFQXSAiOwotICAgIFNWR0ZpbHRl
ckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgaWYgKCFpbjIoKS5pc0Vt
cHR5KCkpCi0gICAgICAgIHRzIDw8ICIgW2luMj0iIDw8IGluMigpIDw8ICJdIjsKLSAgICB0cyA8
PCAiIFtzY2FsZT0iIDw8IG1fc2NhbGUgPDwgIl0iCi0gICAgICAgIDw8ICIgW3ggY2hhbm5lbCBz
ZWxlY3Rvcj0iIDw8IG1feENoYW5uZWxTZWxlY3RvciA8PCAiXSIKLSAgICAgICAgPDwgIiBbeSBj
aGFubmVsIHNlbGVjdG9yPSIgPDwgbV95Q2hhbm5lbFNlbGVjdG9yIDw8ICJdIjsKLSAgICByZXR1
cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9u
IDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVu
dE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw0OCArMjMsNDYgQEAKICNkZWZpbmUgU1ZHRkVE
aXNwbGFjZW1lbnRNYXBfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ZW51bSBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHsKLSAgICBTVkdfQ0hBTk5FTF9VTktOT1dOID0g
MCwKLSAgICBTVkdfQ0hBTk5FTF9SICAgICAgID0gMSwKLSAgICBTVkdfQ0hBTk5FTF9HICAgICAg
ID0gMiwKLSAgICBTVkdfQ0hBTk5FTF9CICAgICAgID0gMywKLSAgICBTVkdfQ0hBTk5FTF9BICAg
ICAgID0gNAotfTsKLQotY2xhc3MgU1ZHRkVEaXNwbGFjZW1lbnRNYXAgOiBwdWJsaWMgU1ZHRmls
dGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNl
bWVudE1hcD4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBTdHJpbmcgaW4yKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRJbjIoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBTVkdDaGFubmVs
U2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdDsKLSAgICB2b2lkIHNldFhDaGFu
bmVsU2VsZWN0b3IoY29uc3QgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSk7Ci0KLSAgICBTVkdDaGFu
bmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdDsKLSAgICB2b2lkIHNldFlD
aGFubmVsU2VsZWN0b3IoY29uc3QgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSk7Ci0KLSAgICBmbG9h
dCBzY2FsZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0U2NhbGUoZmxvYXQgc2NhbGUpOwotCi0gICAg
dmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBj
b25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmls
dGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAg
ICBTVkdGRURpc3BsYWNlbWVudE1hcChTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgU1ZHQ2hh
bm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFubmVsU2VsZWN0b3I7Ci0gICAgU1ZHQ2hhbm5lbFNlbGVj
dG9yVHlwZSBtX3lDaGFubmVsU2VsZWN0b3I7Ci0gICAgZmxvYXQgbV9zY2FsZTsKLSAgICBTdHJp
bmcgbV9pbjI7Ci19OworICAgIGVudW0gQ2hhbm5lbFNlbGVjdG9yVHlwZSB7CisgICAgICAgIENI
QU5ORUxfVU5LTk9XTiA9IDAsCisgICAgICAgIENIQU5ORUxfUiAgICAgICA9IDEsCisgICAgICAg
IENIQU5ORUxfRyAgICAgICA9IDIsCisgICAgICAgIENIQU5ORUxfQiAgICAgICA9IDMsCisgICAg
ICAgIENIQU5ORUxfQSAgICAgICA9IDQKKyAgICB9OworICAgIAorICAgIGNsYXNzIEZFRGlzcGxh
Y2VtZW50TWFwIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGRURpc3BsYWNlbWVudE1hcD4gY3JlYXRlKEZpbHRlckVmZmVjdCos
IEZpbHRlckVmZmVjdCosIENoYW5uZWxTZWxlY3RvclR5cGUsCisgICAgICAgICAgICAgICAgQ2hh
bm5lbFNlbGVjdG9yVHlwZSwgY29uc3QgZmxvYXQmKTsKKworICAgICAgICBDaGFubmVsU2VsZWN0
b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRYQ2hhbm5l
bFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUpOworCisgICAgICAgIENoYW5uZWxT
ZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvcigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFlD
aGFubmVsU2VsZWN0b3IoY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSk7CisKKyAgICAgICAgZmxv
YXQgc2NhbGUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTY2FsZShmbG9hdCBzY2FsZSk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1w
KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRURpc3BsYWNlbWVudE1hcChGaWx0ZXJFZmZl
Y3QqLCBGaWx0ZXJFZmZlY3QqLCBDaGFubmVsU2VsZWN0b3JUeXBlLAorICAgICAgICAgICAgQ2hh
bm5lbFNlbGVjdG9yVHlwZSwgY29uc3QgZmxvYXQmKTsKKworICAgICAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBtX2luOworICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luMjsKKyAgICAg
ICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFubmVsU2VsZWN0b3I7CisgICAgICAgIENoYW5u
ZWxTZWxlY3RvclR5cGUgbV95Q2hhbm5lbFNlbGVjdG9yOworICAgICAgICBmbG9hdCBtX3NjYWxl
OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDUwICsyMiw0OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQu
aCIKICNpbmNsdWRlICJTVkdGRUZsb29kLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZH
RkVGbG9vZDo6U1ZHRkVGbG9vZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZH
RmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1fZmxvb2RDb2xvcigpCi0gICAgLCBtX2Zsb29k
T3BhY2l0eSgwLjBmKQorRkVGbG9vZDo6RkVGbG9vZChjb25zdCBDb2xvciYgZmxvb2RDb2xvciwg
Y29uc3QgZmxvYXQmIGZsb29kT3BhY2l0eSkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBt
X2Zsb29kQ29sb3IoZmxvb2RDb2xvcikKKyAgICAsIG1fZmxvb2RPcGFjaXR5KGZsb29kT3BhY2l0
eSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUZsb29kPiBTVkdGRUZsb29kOjpjcmVhdGUoU1ZH
UmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVGbG9vZD4gRkVGbG9vZDo6Y3Jl
YXRlKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBjb25zdCBmbG9hdCYgZmxvb2RPcGFjaXR5KQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVGbG9vZChmaWx0ZXIpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZFRmxvb2QoZmxvb2RDb2xvciwgZmxvb2RPcGFjaXR5KSk7CiB9CiAK
LUNvbG9yIFNWR0ZFRmxvb2Q6OmZsb29kQ29sb3IoKSBjb25zdAorQ29sb3IgRkVGbG9vZDo6Zmxv
b2RDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmxvb2RDb2xvcjsKIH0KIAotdm9pZCBT
VkdGRUZsb29kOjpzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgRkVGbG9v
ZDo6c2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9mbG9vZENvbG9y
ID0gY29sb3I7CiB9CiAKLWZsb2F0IFNWR0ZFRmxvb2Q6OmZsb29kT3BhY2l0eSgpIGNvbnN0Citm
bG9hdCBGRUZsb29kOjpmbG9vZE9wYWNpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2Zsb29k
T3BhY2l0eTsKIH0KIAotdm9pZCBTVkdGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxv
b2RPcGFjaXR5KQordm9pZCBGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFj
aXR5KQogewogICAgIG1fZmxvb2RPcGFjaXR5ID0gZmxvb2RPcGFjaXR5OwogfQogCi1UZXh0U3Ry
ZWFtJiBTVkdGRUZsb29kOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBj
b25zdAordm9pZCBGRUZsb29kOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVGbG9vZDo6ZHVtcCgp
CiB7Ci0gICAgdHMgPDwgIlt0eXBlPUZMT09EXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbY29sb3I9IiA8PCBmbG9vZENv
bG9yKCkgPDwgIl0iCi0gICAgICAgIDw8ICIgW29wYWNpdHk9IiA8PCBmbG9vZE9wYWNpdHkoKSA8
PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkocmV2aXNpb24gMzUw
MDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsMzIgKzI0LDI5IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZl
Y3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTVkdGRUZsb29kIDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVGbG9vZD4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVy
Kik7CisgICAgY2xhc3MgRkVGbG9vZCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVGbG9vZD4gY3JlYXRlKGNvbnN0IENvbG9y
JiwgY29uc3QgZmxvYXQmKTsKIAotICAgIENvbG9yIGZsb29kQ29sb3IoKSBjb25zdDsKLSAgICB2
b2lkIHNldEZsb29kQ29sb3IoY29uc3QgQ29sb3IgJik7CisgICAgICAgIENvbG9yIGZsb29kQ29s
b3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yICYpOwog
Ci0gICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGbG9vZE9wYWNp
dHkoZmxvYXQpOworICAgICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQpOwogCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKLSNpZiBQTEFU
Rk9STShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJl
Y3QmIGJib3gpIGNvbnN0OwotI2VuZGlmCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVGbG9vZChj
b25zdCBDb2xvciYsIGNvbnN0IGZsb2F0Jik7CiAKLXByaXZhdGU6Ci0gICAgU1ZHRkVGbG9vZChT
VkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgQ29sb3IgbV9mbG9vZENvbG9yOwotICAgIGZsb2F0
IG1fZmxvb2RPcGFjaXR5OwotfTsKKyAgICAgICAgQ29sb3IgbV9mbG9vZENvbG9yOworICAgICAg
ICBmbG9hdCBtX2Zsb29kT3BhY2l0eTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVz
c2lhbkJsdXIuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw0OCArMjMs
NDggQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRl
ICJTVkdGRUdhdXNzaWFuQmx1ci5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TVkdGRUdhdXNzaWFuQmx1cjo6U1ZHRkVHYXVzc2lhbkJsdXIoU1ZH
UmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0g
ICAgLCBtX3goMC4wZikKLSAgICAsIG1feSgwLjBmKQorRkVHYXVzc2lhbkJsdXI6OkZFR2F1c3Np
YW5CbHVyKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGZsb2F0JiB4LCBjb25zdCBmbG9hdCYgeSkK
KyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQorICAgICwgbV94KHgpCisgICAg
LCBtX3koeSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUdhdXNzaWFuQmx1cj4gU1ZHRkVHYXVz
c2lhbkJsdXI6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1JlZlB0cjxG
RUdhdXNzaWFuQmx1cj4gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBj
b25zdCBmbG9hdCYgeCwgY29uc3QgZmxvYXQmIHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdGRUdhdXNzaWFuQmx1cihmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZF
R2F1c3NpYW5CbHVyKGluLCB4LCB5KSk7CiB9CiAKLWZsb2F0IFNWR0ZFR2F1c3NpYW5CbHVyOjpz
dGREZXZpYXRpb25YKCkgY29uc3QKK2Zsb2F0IEZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25Y
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV94OwogfQogCi12b2lkIFNWR0ZFR2F1c3NpYW5CbHVy
OjpzZXRTdGREZXZpYXRpb25YKGZsb2F0IHgpCit2b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGRE
ZXZpYXRpb25YKGZsb2F0IHgpCiB7CiAgICAgbV94ID0geDsKIH0KIAotZmxvYXQgU1ZHRkVHYXVz
c2lhbkJsdXI6OnN0ZERldmlhdGlvblkoKSBjb25zdAorZmxvYXQgRkVHYXVzc2lhbkJsdXI6OnN0
ZERldmlhdGlvblkoKSBjb25zdAogewogICAgIHJldHVybiBtX3k7CiB9CiAKLXZvaWQgU1ZHRkVH
YXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblkoZmxvYXQgeSkKK3ZvaWQgRkVHYXVzc2lhbkJs
dXI6OnNldFN0ZERldmlhdGlvblkoZmxvYXQgeSkKIHsKICAgICBtX3kgPSB5OwogfQogCi1UZXh0
U3RyZWFtJiBTVkdGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cykgY29uc3QKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KCkKK3sKK30KKwordm9p
ZCBGRUdhdXNzaWFuQmx1cjo6ZHVtcCgpCiB7Ci0gICAgdHMgPDwgIlt0eXBlPUdBVVNTSUFOLUJM
VVJdICI7Ci0gICAgU1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsK
LSAgICB0cyA8PCAiIFtzdGQgZGV2LiB4PSIgPDwgc3RkRGV2aWF0aW9uWCgpIDw8ICIgeT0iIDw8
IHN0ZERldmlhdGlvblkoKSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1
c3NpYW5CbHVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUdhdXNzaWFuQmx1ci5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMzIg
KzIzLDMwIEBACiAjZGVmaW5lIFNWR0ZFR2F1c3NpYW5CbHVyX2gKIAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
VkdGRUdhdXNzaWFuQmx1ciA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFR2F1c3NpYW5CbHVyPiBjcmVhdGUoU1ZHUmVzb3VyY2VG
aWx0ZXIqKTsKLQotICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdDsKLSAgICB2b2lkIHNl
dFN0ZERldmlhdGlvblgoZmxvYXQpOwotCi0gICAgZmxvYXQgc3RkRGV2aWF0aW9uWSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7Ci0KLSAgICB2aXJ0dWFsIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi0jaWYg
UExBVEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxv
YXRSZWN0JiBiYm94KSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFNWR0ZFR2F1c3Np
YW5CbHVyKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBmbG9hdCBtX3g7Ci0gICAgZmxvYXQg
bV95OwotfTsKKyAgICBjbGFzcyBGRUdhdXNzaWFuQmx1ciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVHYXVzc2lhbkJsdXI+
IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CisKKyAg
ICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFN0ZERl
dmlhdGlvblgoZmxvYXQpOworCisgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXRTdGREZXZpYXRpb25ZKGZsb2F0KTsKKworICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHByaXZh
dGU6CisgICAgICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlckVmZmVjdCosIGNvbnN0IGZsb2F0Jiwg
Y29uc3QgZmxvYXQmKTsKKworICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOworICAg
ICAgICBmbG9hdCBtX3g7CisgICAgICAgIGZsb2F0IG1feTsKKyAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyOSArMjksMjkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUltYWdlOjpTVkdGRUltYWdlKFNWR1Jlc291cmNl
RmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV9j
YWNoZWRJbWFnZSgwKQorRkVJbWFnZTo6RkVJbWFnZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Up
CisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9jYWNoZWRJbWFnZShjYWNoZWRJbWFnZSkK
IHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUltYWdlPiBTVkdGRUltYWdlOjpjcmVhdGUoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRl
KENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R0ZFSW1hZ2UoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUltYWdlKGNhY2hl
ZEltYWdlKSk7CiB9CiAKLVNWR0ZFSW1hZ2U6On5TVkdGRUltYWdlKCkKK0ZFSW1hZ2U6On5GRUlt
YWdlKCkKIHsKICAgICBpZiAobV9jYWNoZWRJbWFnZSkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi1DYWNoZWRJbWFnZSogU1ZHRkVJbWFnZTo6Y2FjaGVk
SW1hZ2UoKSBjb25zdAorQ2FjaGVkSW1hZ2UqIEZFSW1hZ2U6OmNhY2hlZEltYWdlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9jYWNoZWRJbWFnZTsKIH0KIAotdm9pZCBTVkdGRUltYWdlOjpzZXRD
YWNoZWRJbWFnZShDYWNoZWRJbWFnZSogaW1hZ2UpCit2b2lkIEZFSW1hZ2U6OnNldENhY2hlZElt
YWdlKENhY2hlZEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsMTkgKzY1LDEyIEBACiAgICAgICAgIG1fY2FjaGVk
SW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVJbWFnZTo6ZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKK3ZvaWQgRkVJbWFnZTo6
YXBwbHkoKQogewotICAgIHRzIDw8ICJbdHlwZT1JTUFHRV0gIjsKLSAgICBTVkdGaWx0ZXJFZmZl
Y3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIC8vIEZJWE1FOiBzaG91bGQgdGhp
cyBkdW1wIGFsc28gb2JqZWN0IHJldHVybmVkIGJ5IFNWR0ZFSW1hZ2U6OmltYWdlKCkgPwotICAg
IHJldHVybiB0czsKLQogfQogCi12b2lkIFNWR0ZFSW1hZ2U6OmltYWdlQ2hhbmdlZChDYWNoZWRJ
bWFnZSopCit2b2lkIEZFSW1hZ2U6OmR1bXAoKQogewotICAgIGlmIChTVkdSZXNvdXJjZUZpbHRl
ciogZmlsdGVyUmVzb3VyY2UgPSBmaWx0ZXIoKSkKLSAgICAgICAgZmlsdGVyUmVzb3VyY2UtPmlu
dmFsaWRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDM0ICsyNSwyOSBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
ICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50
LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRkVJbWFnZSA6IHB1YmxpYyBT
VkdGaWx0ZXJFZmZlY3QKLSAgICAgICAgICAgICAgICAgLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VD
bGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFSW1hZ2U+IGNyZWF0
ZShTVkdSZXNvdXJjZUZpbHRlciopOwotICAgIHZpcnR1YWwgflNWR0ZFSW1hZ2UoKTsKLQotICAg
IC8vIEZJWE1FOiBXZSBuZWVkIHRvIHN1cHBvcnQgPHN2Zz4gKFJlbmRlck9iamVjdCopIGFzIHdl
bGwgYXMgaW1hZ2UgZGF0YS4KLQotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKLQotICAgIHZpcnR1YWwg
VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0K
LSNpZiBQTEFURk9STShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25z
dCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0OwotI2VuZGlmCi0KLSAgICB2aXJ0dWFsIHZvaWQgaW1h
Z2VDaGFuZ2VkKENhY2hlZEltYWdlKik7Ci0gICAgCi1wcml2YXRlOgotICAgIFNWR0ZFSW1hZ2Uo
U1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICBjbGFzcyBGRUltYWdlIDogcHVibGljIEZpbHRlckVm
ZmVjdAorICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVJbWFnZT4gY3JlYXRl
KENhY2hlZEltYWdlKik7CisgICAgICAgIHZpcnR1YWwgfkZFSW1hZ2UoKTsKKworICAgICAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBzdXBwb3J0IDxzdmc+IChSZW5kZXJPYmplY3QqKSBhcyB3ZWxs
IGFzIGltYWdlIGRhdGEuCisKKyAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKKyAgICAgICAg
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVt
cCgpOworICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBGRUltYWdlKENhY2hlZEltYWdl
Kik7CiAKLSAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZTsKLX07CisgICAgICAgIENhY2hl
ZEltYWdlKiBtX2NhY2hlZEltYWdlOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCShy
ZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDQ1ICsyMywzNiBAQAogCiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFTWVyZ2UuaCIKLSNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVNZXJnZTo6
U1ZHRkVNZXJnZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSAKLSAgICA6IFNWR0ZpbHRlckVm
ZmVjdChmaWx0ZXIpIAorRkVNZXJnZTo6RkVNZXJnZShjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0
Kj4mIG1lcmdlSW5wdXRzKSAKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX21lcmdlSW5w
dXRzKG1lcmdlSW5wdXRzKQogewogfQogCi1QYXNzUmVmUHRyPFNWR0ZFTWVyZ2U+IFNWR0ZFTWVy
Z2U6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1JlZlB0cjxGRU1lcmdl
PiBGRU1lcmdlOjpjcmVhdGUoY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBtZXJnZUlucHV0
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFTWVyZ2UoZmlsdGVyKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGRU1lcmdlKG1lcmdlSW5wdXRzKSk7CiB9CiAKLWNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBTVkdGRU1lcmdlOjptZXJnZUlucHV0cygpIGNvbnN0Citjb25zdCBWZWN0
b3I8RmlsdGVyRWZmZWN0Kj4mIEZFTWVyZ2U6Om1lcmdlSW5wdXRzKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9tZXJnZUlucHV0czsKIH0KIAotdm9pZCBTVkdGRU1lcmdlOjpzZXRNZXJnZUlucHV0
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWVyZ2VJbnB1dHMpCit2b2lkIEZFTWVyZ2U6OnNldE1l
cmdlSW5wdXRzKGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMpCiB7CiAg
ICAgbV9tZXJnZUlucHV0cyA9IG1lcmdlSW5wdXRzOwogfQogCi1UZXh0U3RyZWFtJiBTVkdGRU1l
cmdlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAordm9pZCBG
RU1lcmdlOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVNZXJnZTo6ZHVtcCgpCiB7Ci0gICAgdHMg
PDwgIlt0eXBlPU1FUkdFXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIlttZXJnZSBpbnB1dHM9WyI7Ci0gICAgdW5zaWduZWQg
eCA9IDA7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IG1fbWVyZ2VJbnB1dHMuc2l6ZSgpOwotICAgIHdo
aWxlICh4IDwgc2l6ZSkgewotICAgICAgICB0cyA8PCBtX21lcmdlSW5wdXRzW3hdOwotICAgICAg
ICB4Kys7Ci0gICAgICAgIGlmICh4IDwgbV9tZXJnZUlucHV0cy5zaXplKCkpCi0gICAgICAgICAg
ICB0cyA8PCAiLCAiOwotICAgIH0KLSAgICB0cyA8PCAiXV0iOwotICAgIHJldHVybiB0czsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRU1lcmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRU1lcmdlLmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1lcmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDI4ICsyMywyNyBA
QAogI2RlZmluZSBTVkdGRU1lcmdlX2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdGRU1lcmdlIDogcHVi
bGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
RkVNZXJnZT4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIG1lcmdlSW5wdXRzKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWVyZ2VJbnB1dHMp
OwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mKSBjb25zdDsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKENJKQot
ICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkg
Y29uc3Q7Ci0jZW5kaWYKKyAgICBjbGFzcyBGRU1lcmdlIDogcHVibGljIEZpbHRlckVmZmVjdCB7
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRU1lcmdlPiBjcmVhdGUo
Y29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+Jik7CisKKyAgICAgICAgY29uc3QgVmVjdG9yPEZp
bHRlckVmZmVjdCo+JiBtZXJnZUlucHV0cygpIGNvbnN0OworICAgICAgICB2b2lkIHNldE1lcmdl
SW5wdXRzKGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMpOworICAgICAg
ICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
dW1wKCk7CiAKLXByaXZhdGU6Ci0gICAgU1ZHRkVNZXJnZShTVkdSZXNvdXJjZUZpbHRlciopOwor
ICAgIHByaXZhdGU6CisgICAgICAgIEZFTWVyZ2UoY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+
Jik7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBtX21lcmdlSW5wdXRzOwotfTsKKyAgICAgICAgVmVj
dG9yPEZpbHRlckVmZmVjdCo+IG1fbWVyZ2VJbnB1dHM7CisgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9y
cGhvbG9neS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRU1vcnBob2xvZ3kuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNjkg
KzIzLDU0IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5j
bHVkZSAiU1ZHRkVNb3JwaG9sb2d5LmgiCi0jaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFTW9ycGhvbG9neTo6U1ZHRkVNb3JwaG9sb2d5KFNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAg
ICwgbV9vcGVyYXRvcihTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOKQotICAgICwgbV9y
YWRpdXNYKDAuMGYpCi0gICAgLCBtX3JhZGl1c1koMC4wZikKK0ZFTW9ycGhvbG9neTo6RkVNb3Jw
aG9sb2d5KEZpbHRlckVmZmVjdCogaW4sIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgY29u
c3QgZmxvYXQmIHJhZGl1c1gsIGNvbnN0IGZsb2F0JiByYWRpdXNZKQorICAgIDogRmlsdGVyRWZm
ZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fcmFkaXVz
WChyYWRpdXNYKQorICAgICwgbV9yYWRpdXNZKHJhZGl1c1kpCiB7CiB9CiAKLVNWR01vcnBob2xv
Z3lPcGVyYXRvclR5cGUgU1ZHRkVNb3JwaG9sb2d5Ojptb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25z
dAorUGFzc1JlZlB0cjxGRU1vcnBob2xvZ3k+IEZFTW9ycGhvbG9neTo6Y3JlYXRlKEZpbHRlckVm
ZmVjdCogaW4sIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgY29uc3QgZmxvYXQmIHJhZGl1
c1gsIGNvbnN0IGZsb2F0JiByYWRpdXNZKQogewotICAgIHJldHVybiBtX29wZXJhdG9yOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRkVNb3JwaG9sb2d5KGluLCB0eXBlLCByYWRpdXNYLCByYWRp
dXNZKSk7CiB9CiAKLXZvaWQgU1ZHRkVNb3JwaG9sb2d5OjpzZXRNb3JwaG9sb2d5T3BlcmF0b3Io
U1ZHTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBfb3BlcmF0b3IpCit2b2lkIEZFTW9ycGhvbG9neTo6
c2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkKIHsKLSAg
ICBtX29wZXJhdG9yID0gX29wZXJhdG9yOworICAgIG1fdHlwZSA9IHR5cGU7CiB9CiAKLWZsb2F0
IFNWR0ZFTW9ycGhvbG9neTo6cmFkaXVzWCgpIGNvbnN0CitmbG9hdCBGRU1vcnBob2xvZ3k6OnJh
ZGl1c1goKSBjb25zdAogewogICAgIHJldHVybiBtX3JhZGl1c1g7CiB9CiAKLXZvaWQgU1ZHRkVN
b3JwaG9sb2d5OjpzZXRSYWRpdXNYKGZsb2F0IHJhZGl1c1gpCit2b2lkIEZFTW9ycGhvbG9neTo6
c2V0UmFkaXVzWChmbG9hdCByYWRpdXNYKQogewogICAgIG1fcmFkaXVzWCA9IHJhZGl1c1g7CiB9
CiAKLWZsb2F0IFNWR0ZFTW9ycGhvbG9neTo6cmFkaXVzWSgpIGNvbnN0CitmbG9hdCBGRU1vcnBo
b2xvZ3k6OnJhZGl1c1koKSBjb25zdAogewogICAgIHJldHVybiBtX3JhZGl1c1k7CiB9CiAKLXZv
aWQgU1ZHRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKGZsb2F0IHJhZGl1c1kpCit2b2lkIEZFTW9y
cGhvbG9neTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogewogICAgIG1fcmFkaXVzWSA9IHJh
ZGl1c1k7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBTVkdNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHQpCit2b2lkIEZFTW9ycGhvbG9neTo6YXBwbHko
KQoreworfQorCit2b2lkIEZFTW9ycGhvbG9neTo6ZHVtcCgpCiB7Ci0gICAgc3dpdGNoICh0KQot
ICAgIHsKLSAgICAgICAgY2FzZSBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOOgotICAg
ICAgICAgICAgdHMgPDwgIlVOS05PV04iOyBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTU9SUEhP
TE9HWV9PUEVSQVRPUl9FUk9ERToKLSAgICAgICAgICAgIHRzIDw8ICJFUk9ERSI7IGJyZWFrOwot
ICAgICAgICBjYXNlIFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJQUxBVEU6Ci0gICAgICAgICAg
ICB0cyA8PCAiRElBTEFURSI7IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVRl
eHRTdHJlYW0mIFNWR0ZFTW9ycGhvbG9neTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cyA8PCAiW3R5cGU9TU9SUEhPTE9HWS1PUEVSQVRPUl0g
IjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAg
IHRzIDw8ICIgW29wZXJhdG9yIHR5cGU9IiA8PCBtb3JwaG9sb2d5T3BlcmF0b3IoKSA8PCAiXSIK
LSAgICAgICAgPDwgIiBbcmFkaXVzIHg9IiA8PCByYWRpdXNYKCkgPDwgIiB5PSIgPDwgcmFkaXVz
WSgpIDw8ICJdIjsKLSAgICByZXR1cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3ku
aAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
TW9ycGhvbG9neS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzNiArMjMsMzkgQEAKICNkZWZpbmUg
U1ZHRkVNb3JwaG9sb2d5X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFNWR01vcnBob2xvZ3lPcGVyYXRvclR5
cGUgewotICAgIFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwLAotICAgIFNWR19N
T1JQSE9MT0dZX09QRVJBVE9SX0VST0RFICAgPSAxLAotICAgIFNWR19NT1JQSE9MT0dZX09QRVJB
VE9SX0RJQUxBVEUgPSAyCi19OwotCi1jbGFzcyBTVkdGRU1vcnBob2xvZ3kgOiBwdWJsaWMgU1ZH
RmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBTVkdGRU1vcnBob2xvZ3koU1ZHUmVzb3VyY2VG
aWx0ZXIqKTsKLQotICAgIFNWR01vcnBob2xvZ3lPcGVyYXRvclR5cGUgbW9ycGhvbG9neU9wZXJh
dG9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRNb3JwaG9sb2d5T3BlcmF0b3IoU1ZHTW9ycGhvbG9n
eU9wZXJhdG9yVHlwZSk7Ci0KLSAgICBmbG9hdCByYWRpdXNYKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRSYWRpdXNYKGZsb2F0KTsKLQotICAgIGZsb2F0IHJhZGl1c1koKSBjb25zdDsKLSAgICB2b2lk
IHNldFJhZGl1c1koZmxvYXQpOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBTVkdNb3Jw
aG9sb2d5T3BlcmF0b3JUeXBlIG1fb3BlcmF0b3I7Ci0gICAgZmxvYXQgbV9yYWRpdXNYOwotICAg
IGZsb2F0IG1fcmFkaXVzWTsKLX07CisgICAgZW51bSBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHsK
KyAgICAgICAgRkVNT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwLAorICAgICAgICBGRU1P
UlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgICA9IDEsCisgICAgICAgIEZFTU9SUEhPTE9HWV9PUEVS
QVRPUl9ESUFMQVRFID0gMgorICAgIH07CisKKyAgICBjbGFzcyBGRU1vcnBob2xvZ3kgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBhc3NSZWZQdHI8RkVNb3Jw
aG9sb2d5PiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgY29u
c3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOyAgCisgICAgICAgIE1vcnBob2xvZ3lPcGVyYXRvclR5
cGUgbW9ycGhvbG9neU9wZXJhdG9yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0TW9ycGhvbG9n
eU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpOworCisgICAgICAgIGZsb2F0IHJhZGl1
c1goKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRSYWRpdXNYKGZsb2F0KTsKKworICAgICAgICBm
bG9hdCByYWRpdXNZKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0UmFkaXVzWShmbG9hdCk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1w
KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRU1vcnBob2xvZ3koRmlsdGVyRWZmZWN0Kiwg
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOworICAg
ICAgICAKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAgICAgTW9ycGhv
bG9neU9wZXJhdG9yVHlwZSBtX3R5cGU7CisgICAgICAgIGZsb2F0IG1fcmFkaXVzWDsKKyAgICAg
ICAgZmxvYXQgbV9yYWRpdXNZOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHJl
dmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDQzICsyNyw0NSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR0ZFT2Zmc2V0OjpTVkdGRU9mZnNldChTVkdSZXNvdXJjZUZpbHRlciogZmls
dGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1fZHgoMC4wZikKLSAg
ICAsIG1fZHkoMC4wZikKK0ZFT2Zmc2V0OjpGRU9mZnNldChGaWx0ZXJFZmZlY3QqIGluLCBjb25z
dCBmbG9hdCYgZHgsIGNvbnN0IGZsb2F0JiBkeSkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAg
LCBtX2luKGluKQorICAgICwgbV9keChkeCkKKyAgICAsIG1fZHkoZHkpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8U1ZHRkVPZmZzZXQ+IFNWR0ZFT2Zmc2V0OjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVPZmZzZXQ+IEZFT2Zmc2V0OjpjcmVhdGUoRmlsdGVyRWZm
ZWN0KiBpbiwgY29uc3QgZmxvYXQmIGR4LCBjb25zdCBmbG9hdCYgZHkpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTVkdGRU9mZnNldChmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZFT2Zmc2V0KGluLCBkeCwgZHkpKTsKIH0KIAotZmxvYXQgU1ZHRkVPZmZzZXQ6OmR4KCkg
Y29uc3QKK2Zsb2F0IEZFT2Zmc2V0OjpkeCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZHg7CiB9
CiAKLXZvaWQgU1ZHRkVPZmZzZXQ6OnNldER4KGZsb2F0IGR4KQordm9pZCBGRU9mZnNldDo6c2V0
RHgoZmxvYXQgZHgpCiB7CiAgICAgbV9keCA9IGR4OwogfQogCi1mbG9hdCBTVkdGRU9mZnNldDo6
ZHkoKSBjb25zdAorZmxvYXQgRkVPZmZzZXQ6OmR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9k
eTsKIH0KIAotdm9pZCBTVkdGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCit2b2lkIEZFT2Zmc2V0
OjpzZXREeShmbG9hdCBkeSkKIHsKICAgICBtX2R5ID0gZHk7CiB9CiAKLVRleHRTdHJlYW0mIFNW
R0ZFT2Zmc2V0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAor
dm9pZCBGRU9mZnNldDo6YXBwbHkoKQoreworfQorCit2b2lkIEZFT2Zmc2V0OjpkdW1wKCkKIHsK
LSAgICB0cyA8PCAiW3R5cGU9T0ZGU0VUXSAiOyBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVw
cmVzZW50YXRpb24odHMpCi0gICAgICAgIDw8ICIgW2R4PSIgPDwgZHgoKSA8PCAiIGR5PSIgPDwg
ZHkoKSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCShyZXZp
c2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsMzIgKzIzLDMwIEBACiAjZGVmaW5lIFNWR0ZFT2Zmc2V0
X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJT
VkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRU9mZnNldCA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3Qg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFT2Zmc2V0PiBjcmVhdGUoU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIGZsb2F0IGR4KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRE
eChmbG9hdCk7Ci0KLSAgICBmbG9hdCBkeSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RHkoZmxvYXQp
OwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIq
IGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJp
dmF0ZToKLSAgICBTVkdGRU9mZnNldChTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgZmxvYXQg
bV9keDsKLSAgICBmbG9hdCBtX2R5OwotfTsKKyAgICBjbGFzcyBGRU9mZnNldCA6IHB1YmxpYyBG
aWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVP
ZmZzZXQ+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7
CisKKyAgICAgICAgZmxvYXQgZHgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXREeChmbG9hdCk7
CisKKyAgICAgICAgZmxvYXQgZHkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXREeShmbG9hdCk7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
dW1wKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRU9mZnNldChGaWx0ZXJFZmZlY3QqLCBj
b25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gbV9pbjsKKyAgICAgICAgZmxvYXQgbV9keDsKKyAgICAgICAgZmxvYXQgbV9keTsKKyAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHJldmlzaW9u
IDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGln
aHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMDkgKzIzLDExMiBAQAogCiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFU3BlY3VsYXJM
aWdodGluZy5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TVkdGRVNwZWN1bGFyTGlnaHRpbmc6OlNWR0ZFU3BlY3VsYXJMaWdodGluZyhTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAs
IG1fbGlnaHRpbmdDb2xvcigpCi0gICAgLCBtX3N1cmZhY2VTY2FsZSgwLjBmKQotICAgICwgbV9z
cGVjdWxhckNvbnN0YW50KDAuMGYpCi0gICAgLCBtX3NwZWN1bGFyRXhwb25lbnQoMC4wZikKLSAg
ICAsIG1fa2VybmVsVW5pdExlbmd0aFgoMC4wZikKLSAgICAsIG1fa2VybmVsVW5pdExlbmd0aFko
MC4wZikKLSAgICAsIG1fbGlnaHRTb3VyY2UoMCkKK0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVj
dWxhckxpZ2h0aW5nKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBjb25zdCBmbG9hdCYgc3VyZmFjZVNjYWxlLAorICAgIGNvbnN0IGZsb2F0JiBzcGVjdWxhckNv
bnN0YW50LCBjb25zdCBmbG9hdCYgc3BlY3VsYXJFeHBvbmVudCwgY29uc3QgZmxvYXQmIGtlcm5l
bFVuaXRMZW5ndGhYLAorICAgIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWSwgTGlnaHRT
b3VyY2UqIGxpZ2h0U291cmNlKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4p
CisgICAgLCBtX2xpZ2h0aW5nQ29sb3IobGlnaHRpbmdDb2xvcikKKyAgICAsIG1fc3VyZmFjZVNj
YWxlKHN1cmZhY2VTY2FsZSkKKyAgICAsIG1fc3BlY3VsYXJDb25zdGFudChzcGVjdWxhckNvbnN0
YW50KQorICAgICwgbV9zcGVjdWxhckV4cG9uZW50KHNwZWN1bGFyRXhwb25lbnQpCisgICAgLCBt
X2tlcm5lbFVuaXRMZW5ndGhYKGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICwgbV9rZXJuZWxVbml0
TGVuZ3RoWShrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3Vy
Y2UpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVTcGVjdWxhckxpZ2h0aW5nPiBTVkdGRVNwZWN1
bGFyTGlnaHRpbmc6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1JlZlB0
cjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRlckVm
ZmVjdCogaW4sIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLAorICAgIGNvbnN0IGZsb2F0JiBz
dXJmYWNlU2NhbGUsIGNvbnN0IGZsb2F0JiBzcGVjdWxhckNvbnN0YW50LCBjb25zdCBmbG9hdCYg
c3BlY3VsYXJFeHBvbmVudCwKKyAgICBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFgsIGNv
bnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWSwgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nKGZpbHRlcikp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVTcGVjdWxhckxpZ2h0aW5nKGluLCBsaWdodGlu
Z0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQs
CisgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3Vy
Y2UpKTsKIH0KIAotU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjp+U1ZHRkVTcGVjdWxhckxpZ2h0aW5n
KCkKK0ZFU3BlY3VsYXJMaWdodGluZzo6fkZFU3BlY3VsYXJMaWdodGluZygpCiB7CiB9CiAKLUNv
bG9yIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRpbmdDb2xvcigpIGNvbnN0CitDb2xvciBG
RVNwZWN1bGFyTGlnaHRpbmc6OmxpZ2h0aW5nQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBt
X2xpZ2h0aW5nQ29sb3I7CiB9CiAKLXZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdo
dGluZ0NvbG9yKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKQordm9pZCBGRVNwZWN1bGFyTGln
aHRpbmc6OnNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IpCiB7CiAg
ICAgbV9saWdodGluZ0NvbG9yID0gbGlnaHRpbmdDb2xvcjsKIH0KIAotZmxvYXQgU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nOjpzdXJmYWNlU2NhbGUoKSBjb25zdAorZmxvYXQgRkVTcGVjdWxhckxpZ2h0
aW5nOjpzdXJmYWNlU2NhbGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3N1cmZhY2VTY2FsZTsK
IH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFN1cmZhY2VTY2FsZShmbG9hdCBz
dXJmYWNlU2NhbGUpCit2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxlKGZs
b2F0IHN1cmZhY2VTY2FsZSkKIHsKICAgICBtX3N1cmZhY2VTY2FsZSA9IHN1cmZhY2VTY2FsZTsK
IH0KIAotZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzcGVjdWxhckNvbnN0YW50KCkgY29u
c3QKK2Zsb2F0IEZFU3BlY3VsYXJMaWdodGluZzo6c3BlY3VsYXJDb25zdGFudCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc3BlY3VsYXJDb25zdGFudDsKIH0KIAotdm9pZCBTVkdGRVNwZWN1bGFy
TGlnaHRpbmc6OnNldFNwZWN1bGFyQ29uc3RhbnQoZmxvYXQgc3BlY3VsYXJDb25zdGFudCkKK3Zv
aWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckNvbnN0YW50KGZsb2F0IHNwZWN1bGFy
Q29uc3RhbnQpCiB7CiAgICAgbV9zcGVjdWxhckNvbnN0YW50ID0gc3BlY3VsYXJDb25zdGFudDsK
IH0KIAotZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzcGVjdWxhckV4cG9uZW50KCkgY29u
c3QKK2Zsb2F0IEZFU3BlY3VsYXJMaWdodGluZzo6c3BlY3VsYXJFeHBvbmVudCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVudDsKIH0KIAotdm9pZCBTVkdGRVNwZWN1bGFy
TGlnaHRpbmc6OnNldFNwZWN1bGFyRXhwb25lbnQoZmxvYXQgc3BlY3VsYXJFeHBvbmVudCkKK3Zv
aWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0IHNwZWN1bGFy
RXhwb25lbnQpCiB7CiAgICAgbV9zcGVjdWxhckV4cG9uZW50ID0gc3BlY3VsYXJFeHBvbmVudDsK
IH0KIAotZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWCgpIGNv
bnN0CitmbG9hdCBGRVNwZWN1bGFyTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsKIH0KIAotdm9pZCBTVkdGRVNwZWN1
bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhY
KQordm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhYKQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFggPSBrZXJuZWxVbml0
TGVuZ3RoWDsKIH0KIAotZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjprZXJuZWxVbml0TGVu
Z3RoWSgpIGNvbnN0CitmbG9hdCBGRVNwZWN1bGFyTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhZ
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWTsKIH0KIAotdm9pZCBT
VkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZKQordm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZ
KGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFkgPSBr
ZXJuZWxVbml0TGVuZ3RoWTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIFNWR0ZFU3BlY3VsYXJM
aWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRTb3VyY2UqIEZFU3BlY3Vs
YXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0U291
cmNlLmdldCgpOwogfQogCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQordm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNl
dExpZ2h0U291cmNlKExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKIHsKICAgICBtX2xpZ2h0U291
cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFU3BlY3VsYXJMaWdodGlu
Zzo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKK3ZvaWQgRkVT
cGVjdWxhckxpZ2h0aW5nOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5n
OjpkdW1wKCkKIHsKLSAgICB0cyA8PCAiW3R5cGU9U1BFQ1VMQVItTElHSFRJTkddICI7Ci0gICAg
U1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKLSAgICB0cyA8PCAi
IFtzdXJmYWNlIHNjYWxlPSIgPDwgbV9zdXJmYWNlU2NhbGUgPDwgIl0iCi0gICAgICAgIDw8ICIg
W3NwZWN1YWwgY29uc3RhbnQ9IiA8PCBtX3NwZWN1bGFyQ29uc3RhbnQgPDwgIl0iCi0gICAgICAg
IDw8ICIgW3NwZWN1bGFyIGV4cG9uZW50PSIgPDwgbV9zcGVjdWxhckV4cG9uZW50IDw8ICJdIjsK
LSAgICByZXR1cm4gdHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcu
aAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
U3BlY3VsYXJMaWdodGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw1MyArMjUsNTMgQEAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIK
ICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5o
IgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNWR0ZFU3BlY3VsYXJMaWdodGluZyA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRl
KFNWR1Jlc291cmNlRmlsdGVyKik7Ci0gICAgdmlydHVhbCB+U1ZHRkVTcGVjdWxhckxpZ2h0aW5n
KCk7Ci0KLSAgICBDb2xvciBsaWdodGluZ0NvbG9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaWdo
dGluZ0NvbG9yKGNvbnN0IENvbG9yJik7Ci0KLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25z
dDsKLSAgICB2b2lkIHNldFN1cmZhY2VTY2FsZShmbG9hdCk7Ci0KLSAgICBmbG9hdCBzcGVjdWxh
ckNvbnN0YW50KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTcGVjdWxhckNvbnN0YW50KGZsb2F0KTsK
LQotICAgIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQoKSBjb25zdDsKLSAgICB2b2lkIHNldFNwZWN1
bGFyRXhwb25lbnQoZmxvYXQpOwotCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25z
dDsKLSAgICB2b2lkIHNldEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0KTsKLQotICAgIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWShm
bG9hdCk7Ci0KLSAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAg
ICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7Ci0KLSAgICB2aXJ0dWFsIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi0jaWYg
UExBVEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxv
YXRSZWN0JiBiYm94KSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFNWR0ZFU3BlY3Vs
YXJMaWdodGluZyhTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgQ29sb3IgbV9saWdodGluZ0Nv
bG9yOwotICAgIGZsb2F0IG1fc3VyZmFjZVNjYWxlOwotICAgIGZsb2F0IG1fc3BlY3VsYXJDb25z
dGFudDsKLSAgICBmbG9hdCBtX3NwZWN1bGFyRXhwb25lbnQ7Ci0gICAgZmxvYXQgbV9rZXJuZWxV
bml0TGVuZ3RoWDsKLSAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhZOwotICAgIFJlZlB0cjxM
aWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKLX07CisgICAgY2xhc3MgRkVTcGVjdWxhckxpZ2h0
aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25z
dCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgY29uc3Qg
ZmxvYXQmLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgTGlnaHRTb3VyY2UqKTsKKyAgICAg
ICAgdmlydHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CisKKyAgICAgICAgQ29sb3IgbGlnaHRp
bmdDb2xvcigpIGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29s
b3ImKTsKKworICAgICAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBzZXRTdXJmYWNlU2NhbGUoZmxvYXQpOworCisgICAgICAgIGZsb2F0IHNwZWN1bGFyQ29uc3Rh
bnQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTcGVjdWxhckNvbnN0YW50KGZsb2F0KTsKKwor
ICAgICAgICBmbG9hdCBzcGVjdWxhckV4cG9uZW50KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
U3BlY3VsYXJFeHBvbmVudChmbG9hdCk7CisKKyAgICAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCk7CisK
KyAgICAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CisKKyAgICAgICAgY29uc3QgTGlnaHRTb3VyY2Uq
IGxpZ2h0U291cmNlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRT
b3VyY2UqKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGR1bXAoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZFU3BlY3VsYXJMaWdodGlu
ZyhGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQm
LCBjb25zdCBmbG9hdCYsCisgICAgICAgICAgICBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jiwg
TGlnaHRTb3VyY2UqKTsKKworICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOworICAg
ICAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CisgICAgICAgIGZsb2F0IG1fc3VyZmFjZVNjYWxl
OworICAgICAgICBmbG9hdCBtX3NwZWN1bGFyQ29uc3RhbnQ7CisgICAgICAgIGZsb2F0IG1fc3Bl
Y3VsYXJFeHBvbmVudDsKKyAgICAgICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWDsKKyAgICAg
ICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWTsKKyAgICAgICAgUmVmUHRyPExpZ2h0U291cmNl
PiBtX2xpZ2h0U291cmNlOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAkocmV2aXNpb24g
MzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDE0ICsyNCwyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNWR0ZFVGlsZTo6U1ZHRkVUaWxlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBT
VkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQorRkVUaWxlOjpGRVRpbGUoRmlsdGVyRWZmZWN0KiBpbikK
KyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQogewogfQogCi1QYXNzUmVmUHRy
PFNWR0ZFVGlsZT4gU1ZHRkVUaWxlOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikK
K1Bhc3NSZWZQdHI8RkVUaWxlPiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVUaWxlKGluKSk7Cit9CisKK3ZvaWQgRkVUaWxlOjph
cHBseSgpCit7Cit9CisKK3ZvaWQgRkVUaWxlOjpkdW1wKCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNWR0ZFVGlsZShmaWx0ZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oCShyZXZpc2lvbiAz
NTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDIwICsyMywyMSBAQAogI2RlZmluZSBTVkdGRVRpbGVfaAogCiAjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlckVm
ZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi0gICAgY2xhc3MgU1ZHRkVUaWxlIDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Cisg
ICAgY2xhc3MgRkVUaWxlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiAgICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRVRpbGU+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRl
ciopOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXJFZmZl
Y3QqKTsKIAotICAgICNpZiBQTEFURk9STShDSSkKLSAgICAgICAgdmlydHVhbCBDSUZpbHRlciog
Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdDsKLSAgICAjZW5kaWYKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7
CisgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR0ZFVGlsZShTVkdSZXNvdXJjZUZp
bHRlciopOwotCisgICAgICAgIEZFVGlsZShGaWx0ZXJFZmZlY3QqKTsKKyAgICAgICAgCisgICAg
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVu
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVU
dXJidWxlbmNlLmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwNyArMjcs
OTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRVR1cmJ1bGVuY2U6OlNWR0ZFVHVy
YnVsZW5jZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0
KGZpbHRlcikKLSAgICAsIG1fYmFzZUZyZXF1ZW5jeVgoMC4wZikKLSAgICAsIG1fYmFzZUZyZXF1
ZW5jeVkoMC4wZikKLSAgICAsIG1fbnVtT2N0YXZlcygwKQotICAgICwgbV9zZWVkKDApCi0gICAg
LCBtX3N0aXRjaFRpbGVzKGZhbHNlKQotICAgICwgbV90eXBlKFNWR19UVVJCVUxFTkNFX1RZUEVf
VU5LTk9XTikKK0ZFVHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKFR1cmJ1bGFuY2VUeXBlIHR5cGUs
IGNvbnN0IGZsb2F0JiBiYXNlRnJlcXVlbmN5WCwgY29uc3QgZmxvYXQmIGJhc2VGcmVxdWVuY3lZ
LAorICAgIGNvbnN0IGludCYgbnVtT2N0YXZlcywgY29uc3QgZmxvYXQmIHNlZWQsIGJvb2wgc3Rp
dGNoVGlsZXMpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV90eXBlKHR5cGUpCisgICAg
LCBtX2Jhc2VGcmVxdWVuY3lYKGJhc2VGcmVxdWVuY3lYKQorICAgICwgbV9iYXNlRnJlcXVlbmN5
WShiYXNlRnJlcXVlbmN5WSkKKyAgICAsIG1fbnVtT2N0YXZlcyhudW1PY3RhdmVzKQorICAgICwg
bV9zZWVkKHNlZWQpCisgICAgLCBtX3N0aXRjaFRpbGVzKHN0aXRjaFRpbGVzKQogewogfQogCi1Q
YXNzUmVmUHRyPFNWR0ZFVHVyYnVsZW5jZT4gU1ZHRkVUdXJidWxlbmNlOjpjcmVhdGUoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVUdXJidWxlbmNlPiBGRVR1cmJ1bGVu
Y2U6OmNyZWF0ZShUdXJidWxhbmNlVHlwZSB0eXBlLCBjb25zdCBmbG9hdCYgYmFzZUZyZXF1ZW5j
eVgsIGNvbnN0IGZsb2F0JiBiYXNlRnJlcXVlbmN5WSwKKyAgICBjb25zdCBpbnQmIG51bU9jdGF2
ZXMsIGNvbnN0IGZsb2F0JiBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHRkVUdXJidWxlbmNlKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRkVUdXJidWxlbmNlKHR5cGUsIGJhc2VGcmVxdWVuY3lYLCBiYXNlRnJlcXVlbmN5WSwg
bnVtT2N0YXZlcywgc2VlZCwgc3RpdGNoVGlsZXMpKTsKIH0KIAotU1ZHVHVyYnVsYW5jZVR5cGUg
U1ZHRkVUdXJidWxlbmNlOjp0eXBlKCkgY29uc3QKK1R1cmJ1bGFuY2VUeXBlIEZFVHVyYnVsZW5j
ZTo6dHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlwZTsKIH0KIAotdm9pZCBTVkdGRVR1
cmJ1bGVuY2U6OnNldFR5cGUoU1ZHVHVyYnVsYW5jZVR5cGUgdHlwZSkKK3ZvaWQgRkVUdXJidWxl
bmNlOjpzZXRUeXBlKFR1cmJ1bGFuY2VUeXBlIHR5cGUpCiB7CiAgICAgbV90eXBlID0gdHlwZTsK
IH0KIAotZmxvYXQgU1ZHRkVUdXJidWxlbmNlOjpiYXNlRnJlcXVlbmN5WSgpIGNvbnN0CitmbG9h
dCBGRVR1cmJ1bGVuY2U6OmJhc2VGcmVxdWVuY3lZKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9i
YXNlRnJlcXVlbmN5WTsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2U6OnNldEJhc2VGcmVxdWVu
Y3lZKGZsb2F0IGJhc2VGcmVxdWVuY3lZKQordm9pZCBGRVR1cmJ1bGVuY2U6OnNldEJhc2VGcmVx
dWVuY3lZKGZsb2F0IGJhc2VGcmVxdWVuY3lZKQogewogICAgIG1fYmFzZUZyZXF1ZW5jeVkgPSBi
YXNlRnJlcXVlbmN5WTsKIH0KIAotZmxvYXQgU1ZHRkVUdXJidWxlbmNlOjpiYXNlRnJlcXVlbmN5
WCgpIGNvbnN0CitmbG9hdCBGRVR1cmJ1bGVuY2U6OmJhc2VGcmVxdWVuY3lYKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WDsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2U6
OnNldEJhc2VGcmVxdWVuY3lYKGZsb2F0IGJhc2VGcmVxdWVuY3lYKQordm9pZCBGRVR1cmJ1bGVu
Y2U6OnNldEJhc2VGcmVxdWVuY3lYKGZsb2F0IGJhc2VGcmVxdWVuY3lYKQogewogICAgICAgIG1f
YmFzZUZyZXF1ZW5jeVggPSBiYXNlRnJlcXVlbmN5WDsKIH0KIAotZmxvYXQgU1ZHRkVUdXJidWxl
bmNlOjpzZWVkKCkgY29uc3QKK2Zsb2F0IEZFVHVyYnVsZW5jZTo6c2VlZCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fc2VlZDsgCiB9CiAKLXZvaWQgU1ZHRkVUdXJidWxlbmNlOjpzZXRTZWVkKGZs
b2F0IHNlZWQpCit2b2lkIEZFVHVyYnVsZW5jZTo6c2V0U2VlZChmbG9hdCBzZWVkKQogewogICAg
IG1fc2VlZCA9IHNlZWQ7CiB9CiAKLWludCBTVkdGRVR1cmJ1bGVuY2U6Om51bU9jdGF2ZXMoKSBj
b25zdAoraW50IEZFVHVyYnVsZW5jZTo6bnVtT2N0YXZlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fbnVtT2N0YXZlczsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2U6OnNldE51bU9jdGF2ZXMo
Ym9vbCBudW1PY3RhdmVzKQordm9pZCBGRVR1cmJ1bGVuY2U6OnNldE51bU9jdGF2ZXMoYm9vbCBu
dW1PY3RhdmVzKQogewogICAgIG1fbnVtT2N0YXZlcyA9IG51bU9jdGF2ZXM7CiB9CiAKLWJvb2wg
U1ZHRkVUdXJidWxlbmNlOjpzdGl0Y2hUaWxlcygpIGNvbnN0Citib29sIEZFVHVyYnVsZW5jZTo6
c3RpdGNoVGlsZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0aXRjaFRpbGVzOwogfQogCi12
b2lkIFNWR0ZFVHVyYnVsZW5jZTo6c2V0U3RpdGNoVGlsZXMoYm9vbCBzdGl0Y2gpCit2b2lkIEZF
VHVyYnVsZW5jZTo6c2V0U3RpdGNoVGlsZXMoYm9vbCBzdGl0Y2gpCiB7CiAgICAgbV9zdGl0Y2hU
aWxlcyA9IHN0aXRjaDsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIFNWR1R1cmJ1bGFuY2VUeXBlIHQpCit2b2lkIEZFVHVyYnVsZW5jZTo6YXBwbHko
KQogewotICAgIHN3aXRjaCAodCkKLSAgICB7Ci0gICAgICAgIGNhc2UgU1ZHX1RVUkJVTEVOQ0Vf
VFlQRV9VTktOT1dOOgotICAgICAgICAgICAgdHMgPDwgIlVOS05PV04iOyBicmVhazsKLSAgICAg
ICAgY2FzZSBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0U6Ci0gICAgICAgICAgICB0cyA8
PCAiVFVSQlVMQU5DRSI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19UVVJCVUxFTkNFX1RZUEVf
RlJBQ1RBTE5PSVNFOgotICAgICAgICAgICAgdHMgPDwgIk5PSVNFIjsgYnJlYWs7Ci0gICAgfQot
ICAgIHJldHVybiB0czsKLX0KLQotVGV4dFN0cmVhbSYgU1ZHRkVUdXJidWxlbmNlOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIHRzIDw8ICJbdHlw
ZT1UVVJCVUxFTkNFXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbdHVyYnVsZW5jZSB0eXBlPSIgPDwgdHlwZSgpIDw8ICJd
IgotICAgICAgICA8PCAiIFtiYXNlIGZyZXF1ZW5jeSB4PSIgPDwgYmFzZUZyZXF1ZW5jeVgoKSA8
PCAiIHk9IiA8PCBiYXNlRnJlcXVlbmN5WSgpIDw8ICJdIgotICAgICAgICA8PCAiIFtzZWVkPSIg
PDwgc2VlZCgpIDw8ICJdIgotICAgICAgICA8PCAiIFtudW0gb2N0YXZlcz0iIDw8IG51bU9jdGF2
ZXMoKSA8PCAiXSIKLSAgICAgICAgPDwgIiBbc3RpdGNoIHRpbGVzPSIgPDwgc3RpdGNoVGlsZXMo
KSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOworfQogCit2b2lkIEZFVHVyYnVsZW5jZTo6ZHVtcCgp
Cit7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAkocmV2aXNpb24gMzUwMDYpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw1MCArMjMsNTMgQEAKICNkZWZpbmUgU1ZHRkVUdXJidWxlbmNlX2gKIAogI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGaWx0ZXJF
ZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1lbnVtIFNWR1R1cmJ1bGFuY2VUeXBlIHsKLSAgICBTVkdfVFVSQlVMRU5DRV9UWVBFX1VO
S05PV04gICAgICA9IDAsCi0gICAgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAx
LAotICAgIFNWR19UVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSAgID0gMgotfTsKLQotY2xhc3Mg
U1ZHRkVUdXJidWxlbmNlIDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVUdXJidWxlbmNlPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0
ZXIqKTsKLQotICAgIFNWR1R1cmJ1bGFuY2VUeXBlIHR5cGUoKSBjb25zdDsKLSAgICB2b2lkIHNl
dFR5cGUoU1ZHVHVyYnVsYW5jZVR5cGUpOwotCi0gICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVkoKSBj
b25zdDsKLSAgICB2b2lkIHNldEJhc2VGcmVxdWVuY3lZKGZsb2F0KTsKLQotICAgIGZsb2F0IGJh
c2VGcmVxdWVuY3lYKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRCYXNlRnJlcXVlbmN5WChmbG9hdCk7
Ci0KLSAgICBmbG9hdCBzZWVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZWVkKGZsb2F0KTsKLQot
ICAgIGludCBudW1PY3RhdmVzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXROdW1PY3RhdmVzKGJvb2wp
OwotCi0gICAgYm9vbCBzdGl0Y2hUaWxlcygpIGNvbnN0OwotICAgIHZvaWQgc2V0U3RpdGNoVGls
ZXMoYm9vbCk7Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFNWR0ZFVHVyYnVsZW5jZShT
VkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgZmxvYXQgbV9iYXNlRnJlcXVlbmN5WDsKLSAgICBm
bG9hdCBtX2Jhc2VGcmVxdWVuY3lZOwotICAgIGludCBtX251bU9jdGF2ZXM7Ci0gICAgZmxvYXQg
bV9zZWVkOwotICAgIGJvb2wgbV9zdGl0Y2hUaWxlczsKLSAgICBTVkdUdXJidWxhbmNlVHlwZSBt
X3R5cGU7Ci19OworICAgIGVudW0gVHVyYnVsYW5jZVR5cGUgeworICAgICAgICBGRVRVUkJVTEVO
Q0VfVFlQRV9VTktOT1dOICAgICAgPSAwLAorICAgICAgICBGRVRVUkJVTEVOQ0VfVFlQRV9GUkFD
VEFMTk9JU0UgPSAxLAorICAgICAgICBGRVRVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFICAgPSAy
CisgICAgfTsKKworICAgIGNsYXNzIEZFVHVyYnVsZW5jZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVUdXJidWxlbmNlPiBj
cmVhdGUoVHVyYnVsYW5jZVR5cGUsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBjb25zdCBp
bnQmLCBjb25zdCBmbG9hdCYsCisgICAgICAgICAgICAgICAgYm9vbCk7CisKKyAgICAgICAgVHVy
YnVsYW5jZVR5cGUgdHlwZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFR5cGUoVHVyYnVsYW5j
ZVR5cGUpOworCisgICAgICAgIGZsb2F0IGJhc2VGcmVxdWVuY3lZKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0QmFzZUZyZXF1ZW5jeVkoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGJhc2VGcmVx
dWVuY3lYKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0QmFzZUZyZXF1ZW5jeVgoZmxvYXQpOwor
CisgICAgICAgIGZsb2F0IHNlZWQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZWVkKGZsb2F0
KTsKKworICAgICAgICBpbnQgbnVtT2N0YXZlcygpIGNvbnN0OworICAgICAgICB2b2lkIHNldE51
bU9jdGF2ZXMoYm9vbCk7CisKKyAgICAgICAgYm9vbCBzdGl0Y2hUaWxlcygpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldFN0aXRjaFRpbGVzKGJvb2wpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBh
cHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgRkVUdXJidWxlbmNlKFR1cmJ1bGFuY2VUeXBlLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZs
b2F0JiwgY29uc3QgaW50JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGJvb2wpOwor
CisgICAgICAgIFR1cmJ1bGFuY2VUeXBlIG1fdHlwZTsKKyAgICAgICAgZmxvYXQgbV9iYXNlRnJl
cXVlbmN5WDsKKyAgICAgICAgZmxvYXQgbV9iYXNlRnJlcXVlbmN5WTsKKyAgICAgICAgaW50IG1f
bnVtT2N0YXZlczsKKyAgICAgICAgZmxvYXQgbV9zZWVkOworICAgICAgICBib29sIG1fc3RpdGNo
VGlsZXM7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0NnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw3NCAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJv
amVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFp
bnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCi0jaW5jbHVk
ZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQotI2ltcG9ydCAiV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVEaWZmdXNlTGlnaHRp
bmc6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBjb25z
dCBMaWdodFNvdXJjZSogbGlnaHQgPSBsaWdodFNvdXJjZSgpOwotICAgIGlmICghbGlnaHQpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIgY2xhc3Nd
OwotCi0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIFNW
R1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0
aWNfY2FzdDxTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxh
dGZvcm1EYXRhKCkpOwotCi0gICAgQ0lGaWx0ZXIqIGZpbHRlcjsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAi
V0tEaWZmdXNlTGlnaHRpbmciXTsKLSAgICBpZiAoIWZpbHRlcikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAgIENJSW1hZ2UqIGlucHV0SW1hZ2Ug
PSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhpcyk7Ci0gICAgRkVfUVVBUlRaX0NI
RUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIENJRmlsdGVyKiBub3JtYWxzID0gZ2V0Tm9ybWFs
TWFwKGlucHV0SW1hZ2UsIHN1cmZhY2VTY2FsZSgpKTsKLSAgICBpZiAoIW5vcm1hbHMpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBDSUZpbHRlciogbGlnaHRWZWN0b3JzID0gZ2V0TGlnaHRW
ZWN0b3JzKG5vcm1hbHMsIGxpZ2h0LCBzdXJmYWNlU2NhbGUoKSk7Ci0gICAgaWYgKCFsaWdodFZl
Y3RvcnMpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbZmlsdGVyIHNldFZhbHVlOltub3Jt
YWxzIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dE5vcm1hbE1hcCJd
OwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2xpZ2h0VmVjdG9ycyB2YWx1ZUZvcktleTpAIm91dHB1
dEltYWdlIl0gZm9yS2V5OkAiaW5wdXRMaWdodFZlY3RvcnMiXTsKLSAgICBbZmlsdGVyIHNldFZh
bHVlOmNpQ29sb3IobGlnaHRpbmdDb2xvcigpKSBmb3JLZXk6QCJpbnB1dExpZ2h0aW5nQ29sb3Ii
XTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3VyZmFj
ZVNjYWxlKCldIGZvcktleTpAImlucHV0U3VyZmFjZVNjYWxlIl07Ci0gICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmRpZmZ1c2VDb25zdGFudCgpXSBmb3JLZXk6
QCJpbnB1dERpZmZ1c2VDb25zdGFudCJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDprZXJuZWxVbml0TGVuZ3RoWCgpXSBmb3JLZXk6QCJpbnB1dEtlcm5l
bFVuaXRMZW5ndGhYIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0Omtlcm5lbFVuaXRMZW5ndGhZKCldIGZvcktleTpAImlucHV0S2VybmVsVW5pdExlbmd0
aFkiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FV
QVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9TVkdGRURpc3BsYWNlbWVudE1hcENnLm1tCShyZXZpc2lvbiAzNTAw
NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRN
YXBDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUg
IlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQot
I2ltcG9ydCAiV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1DSUZpbHRlciogU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OmdldENJRmlsdGVyKGNvbnN0IEZs
b2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVy
ID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRl
clBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRh
TWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0KLSAgICBDSUZpbHRlciogZmlsdGVy
ID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBbV0tEaXNwbGFj
ZW1lbnRNYXBGaWx0ZXIgY2xhc3NdOwotICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRo
TmFtZTpAIldLRGlzcGxhY2VtZW50TWFwRmlsdGVyIl07Ci0gICAgW2ZpbHRlciBzZXREZWZhdWx0
c107Ci0gICAgQ0lJbWFnZSogaW5wdXRJbWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW5wdXRJ
bWFnZSh0aGlzKTsKLSAgICBDSUltYWdlKiBkaXNwbGFjZW1lbnRNYXAgPSBmaWx0ZXJQbGF0Zm9y
bURhdGEtPmltYWdlRm9yTmFtZShpbjIoKSk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlu
cHV0SW1hZ2UpOwotICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChkaXNwbGFjZW1lbnRNYXApOwot
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0g
ICAgW2ZpbHRlciBzZXRWYWx1ZTpkaXNwbGFjZW1lbnRNYXAgZm9yS2V5OkAiaW5wdXREaXNwbGFj
ZW1lbnRNYXAiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmdldFZlY3RvckZvckNoYW5uZWwoeENo
YW5uZWxTZWxlY3RvcigpKSBmb3JLZXk6QCJpbnB1dFhDaGFubmVsU2VsZWN0b3IiXTsKLSAgICBb
ZmlsdGVyIHNldFZhbHVlOmdldFZlY3RvckZvckNoYW5uZWwoeUNoYW5uZWxTZWxlY3RvcigpKSBm
b3JLZXk6QCJpbnB1dFlDaGFubmVsU2VsZWN0b3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6c2NhbGUoKV0gZm9yS2V5OkAiaW5wdXRTY2FsZSJdOwot
Ci0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09V
VFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVG
bG9vZENnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVGbG9vZENnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU0ICswLDAg
QEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVGbG9vZC5oIgotCi0jaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLSNpbmNsdWRlICJD
Z1N1cHBvcnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVGbG9v
ZDo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jl
c291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVz
b3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsK
LSAgICBDSUZpbHRlciogZmlsdGVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
LSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbnN0YW50Q29sb3JH
ZW5lcmF0b3IiXTsKLSAgICBbZmlsdGVyIHNldERlZmF1bHRzXTsKLSAgICBDR0NvbG9yUmVmIGNv
bG9yID0gY2dDb2xvcihmbG9vZENvbG9yKCkpOwotICAgIENHQ29sb3JSZWYgd2l0aEFscGhhID0g
Q0dDb2xvckNyZWF0ZUNvcHlXaXRoQWxwaGEoY29sb3IsIENHQ29sb3JHZXRBbHBoYShjb2xvcikg
KiBmbG9vZE9wYWNpdHkoKSk7Ci0gICAgQ0lDb2xvciogaW5wdXRDb2xvciA9IFtDSUNvbG9yIGNv
bG9yV2l0aENHQ29sb3I6d2l0aEFscGhhXTsKLSAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Ci0g
ICAgQ0dDb2xvclJlbGVhc2Uod2l0aEFscGhhKTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0
Q29sb3IgZm9yS2V5OkAiaW5wdXRDb2xvciJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJS
RUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cu
bW0JKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9T
VkdGRUdhdXNzaWFuQmx1ckNnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBl
cnNDZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRUdhdXNzaWFu
Qmx1cjo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNW
R1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBGRV9RVUFSVFpfU0VU
VVBfSU5QVVQoQCJDSUdhdXNzaWFuUHlyYW1pZCIpOwotCi0gICAgZmxvYXQgaW5wdXRSYWRpdXMg
PSBzdGREZXZpYXRpb25YKCk7Ci0gICAgaWYgKGlucHV0UmFkaXVzICE9IHN0ZERldmlhdGlvblko
KSkgewotICAgICAgICBmbG9hdCBpbnB1dEFzcGVjdFJhdGlvID0gc3RkRGV2aWF0aW9uWCgpL3N0
ZERldmlhdGlvblkoKTsKLSAgICAgICAgLy8gRklYTUU6IGlucHV0QXNwZWN0UmF0aW8gb25seSBz
dXBwb3J0IHRoZSByYW5nZSAuNSB0byAyLjAhCi0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDppbnB1dEFzcGVjdFJhdGlvXSBmb3JLZXk6QCJpbnB1dEFz
cGVjdFJhdGlvIl07Ci0gICAgfQotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDppbnB1dFJhZGl1c10gZm9yS2V5OkAiaW5wdXRSYWRpdXMiXTsKLQotICAgIEZF
X1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVU
VVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0Nn
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhl
bHBlcnNDZy5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNJVmVjdG9yKiBnZXRWZWN0b3JGb3JDaGFubmVsKFNW
R0NoYW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCk7CitDSVZlY3RvciogZ2V0VmVjdG9yRm9yQ2hh
bm5lbChDaGFubmVsU2VsZWN0b3JUeXBlIGNoYW5uZWwpOwogQ0lDb2xvciogY2lDb2xvcihjb25z
dCBDb2xvciYgYyk7CiAKIC8vIExpZ2h0aW5nCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cubW0JKHJldmlzaW9uIDM1MDA2KQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTggKzM5LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0lW
ZWN0b3IqIGdldFZlY3RvckZvckNoYW5uZWwoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVs
KQorQ0lWZWN0b3IqIGdldFZlY3RvckZvckNoYW5uZWwoQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFu
bmVsKQogewogICAgIHN3aXRjaCAoY2hhbm5lbCkgewotICAgIGNhc2UgU1ZHX0NIQU5ORUxfVU5L
Tk9XTjoKKyAgICBjYXNlIENIQU5ORUxfVU5LTk9XTjoKICAgICAgICAgcmV0dXJuIG5pbDsgICAg
Ci0gICAgY2FzZSBTVkdfQ0hBTk5FTF9SOgorICAgIGNhc2UgQ0hBTk5FTF9SOgogICAgICAgICBy
ZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMGYgWTowLjBmIFo6MC4wZiBXOjAuMGZdOwot
ICAgIGNhc2UgU1ZHX0NIQU5ORUxfRzoKKyAgICBjYXNlIENIQU5ORUxfRzoKICAgICAgICAgcmV0
dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6MS4wZiBaOjAuMGYgVzowLjBmXTsKLSAg
ICBjYXNlIFNWR19DSEFOTkVMX0I6CisgICAgY2FzZSBDSEFOTkVMX0I6CiAgICAgICAgIHJldHVy
biBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjAuMGYgWjoxLjBmIFc6MC4wZl07Ci0gICAg
Y2FzZSBTVkdfQ0hBTk5FTF9BOgorICAgIGNhc2UgQ0hBTk5FTF9BOgogICAgICAgICByZXR1cm4g
W0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTowLjBmIFo6MC4wZiBXOjEuMGZdOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjAuMGYg
WjowLjBmIFc6MC4wZl07CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NW
R0ZFSW1hZ2VDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L2NnL1NWR0ZFSW1hZ2VDZy5tbQkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL2NnL1NWR0ZFSW1hZ2VDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw4MCAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBL
REUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFSW1hZ2UuaCIKLQotI2luY2x1ZGUg
IkltYWdlLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLSNpbmNsdWRlICJDZ1N1cHBv
cnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVJbWFnZTo6Z2V0
Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIGlmICghY2FjaGVk
SW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBz
dmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1h
YyogZmlsdGVyUGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0
Zm9ybURhdGFNYWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsKLQotICAgIENJRmlsdGVy
KiBmaWx0ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIENJSW1hZ2Uq
IGNpSW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmNhY2hlZEltYWdlKCktPmltYWdl
KCktPmdldENHSW1hZ2VSZWYoKV07Ci0KLSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0
aE5hbWU6QCJDSUFmZmluZVRyYW5zZm9ybSJdOwotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwot
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2lJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0KLSAg
ICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gY2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+cmVjdCgpOwot
Ci0gICAgLy8gRmxpcCBpbWFnZSBpbnRvIHJpZ2h0IG9yaWdpbgotICAgIENHQWZmaW5lVHJhbnNm
b3JtIGNnVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKDEuMGYsIDAuMGYsIDAuMGYs
IC0xLjBmLCAwLjBmLCBpbWFnZVJlY3QuYm90dG9tKCkpOwotICAgIE5TQWZmaW5lVHJhbnNmb3Jt
KiBuc1RyYW5zZm9ybSA9IFtOU0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1dOwotICAgIFtuc1Ry
YW5zZm9ybSBzZXRUcmFuc2Zvcm1TdHJ1Y3Q6KigoTlNBZmZpbmVUcmFuc2Zvcm1TdHJ1Y3QgKikm
Y2dUcmFuc2Zvcm0pXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOm5zVHJhbnNmb3JtIGZvcktleTpA
ImlucHV0VHJhbnNmb3JtIl07Ci0KLSAgICAvLyBDYWxjdWxhdGUgY3JvcCByZWN0Ci0gICAgRkVf
UVVBUlRaX01BUF9UT19TVUJSRUdJT05fUFJFUEFSRShiYm94KTsKLQotICAgIC8vIE1hcCBiZXR3
ZWVuIHRoZSBpbWFnZSByZWN0YW5nbGUgYW5kIHRoZSBjcm9wIHJlY3QKLSAgICBpZiAoIWNyb3BS
ZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBDSUZpbHRlciogc2NhbGVJbWFnZSA9IFtDSUZpbHRl
ciBmaWx0ZXJXaXRoTmFtZTpAIkNJQWZmaW5lVHJhbnNmb3JtIl07Ci0gICAgICAgIFtzY2FsZUlt
YWdlIHNldERlZmF1bHRzXTsKLSAgICAgICAgW3NjYWxlSW1hZ2Ugc2V0VmFsdWU6W2ZpbHRlciB2
YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gZm9yS2V5OkAiaW5wdXRJbWFnZSJdOwotCi0gICAg
ICAgIGNnVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlTWFwQmV0d2VlblJlY3RzKENH
UmVjdChpbWFnZVJlY3QpLCBDR1JlY3QoY3JvcFJlY3QpKTsKLSAgICAgICAgW25zVHJhbnNmb3Jt
IHNldFRyYW5zZm9ybVN0cnVjdDoqKChOU0FmZmluZVRyYW5zZm9ybVN0cnVjdCAqKSZjZ1RyYW5z
Zm9ybSldOwotICAgICAgICBbc2NhbGVJbWFnZSBzZXRWYWx1ZTpuc1RyYW5zZm9ybSBmb3JLZXk6
QCJpbnB1dFRyYW5zZm9ybSJdOwotCi0gICAgICAgIGZpbHRlciA9IHNjYWxlSW1hZ2U7Ci0gICAg
fQotCi0gICAgLy8gQWN0dWFsbHkgYXBwbHkgY3JvcHBpbmcKLSAgICBGRV9RVUFSVFpfTUFQX1RP
X1NVQlJFR0lPTl9BUFBMWShjcm9wUmVjdCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVNZXJnZUNnLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVNZXJnZUNn
Lm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVNZXJnZUNnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gICAg
Q29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0j
aW5jbHVkZSAiU1ZHRkVNZXJnZS5oIgotI2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZFTWVyZ2U6OmdldENJRmlsdGVyKGNv
bnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3Zn
RmlsdGVyID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMq
IGZpbHRlclBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZv
cm1EYXRhTWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0KLSAgICBDSUZpbHRlciog
ZmlsdGVyID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaW5wdXRzID0gbWVyZ2VJbnB1dHMoKTsKLQotICAgIENJSW1hZ2Uq
IHByZXZpb3VzT3V0cHV0ID0gZmlsdGVyUGxhdGZvcm1EYXRhLT5pbnB1dEltYWdlKHRoaXMpOwot
ICAgIGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBpbnB1dHMuc2l6ZSgpOyB4KyspIHsKLSAgICAg
ICAgQ0lJbWFnZSogaW5wdXRJbWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW1hZ2VGb3JOYW1l
KGlucHV0c1t4XSk7Ci0gICAgICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dEltYWdlKTsK
LSAgICAgICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKHByZXZpb3VzT3V0cHV0KTsKLSAgICAgICAg
ZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lTb3VyY2VPdmVyQ29tcG9zaXRp
bmciXTsKLSAgICAgICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAgICAgIFtmaWx0ZXIgc2V0
VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0gICAgICAgIFtmaWx0ZXIg
c2V0VmFsdWU6cHJldmlvdXNPdXRwdXQgZm9yS2V5OkAiaW5wdXRCYWNrZ3JvdW5kSW1hZ2UiXTsK
LSAgICAgICAgcHJldmlvdXNPdXRwdXQgPSBbZmlsdGVyIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1h
Z2UiXTsKLSAgICB9Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94KTsKLSAg
ICBGRV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9jZy9TVkdGRU9mZnNldENnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvU1ZHRkVPZmZzZXRDZy5tbQkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFT2Zmc2V0Q2cubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGRU9mZnNldC5oIgotI2lu
Y2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0
ZXIqIFNWR0ZFT2Zmc2V0OjpnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0
Ci17Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIEZF
X1FVQVJUWl9TRVRVUF9JTlBVVChAIkNJQWZmaW5lVHJhbnNmb3JtIik7Ci0gICAgTlNBZmZpbmVU
cmFuc2Zvcm0qIG9mZnNldFRyYW5zZm9ybSA9IFtOU0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1d
OwotICAgIFtvZmZzZXRUcmFuc2Zvcm0gdHJhbnNsYXRlWEJ5OmR4KCkgeUJ5OmR5KCldOwotICAg
IFtmaWx0ZXIgc2V0VmFsdWU6b2Zmc2V0VHJhbnNmb3JtICBmb3JLZXk6QCJpbnB1dFRyYW5zZm9y
bSJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVB
UlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5tbQkocmV2aXNpb24gMzUw
MDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0NnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0g
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVk
ZSAiU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIK
LQotI2ltcG9ydCAiV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6Z2V0Q0lGaWx0ZXIoY29u
c3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdo
dCA9IGxpZ2h0U291cmNlKCk7Ci0gICAgaWYgKCFsaWdodCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIFtXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIgY2xhc3NdOwotCi0gICAgU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIFNWR1Jlc291cmNlRmlsdGVyUGxh
dGZvcm1EYXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0aWNfY2FzdDxTVkdSZXNvdXJj
ZUZpbHRlclBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxhdGZvcm1EYXRhKCkpOwotICAg
IENJRmlsdGVyKiBmaWx0ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLU3BlY3VsYXJMaWdodGluZyJd
OwotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAgIENJSW1hZ2UqIGlucHV0SW1hZ2UgPSBm
aWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhpcyk7Ci0gICAgRkVfUVVBUlRaX0NIRUNL
X0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIENJRmlsdGVyKiBub3JtYWxzID0gZ2V0Tm9ybWFsTWFw
KGlucHV0SW1hZ2UsIHN1cmZhY2VTY2FsZSgpKTsKLSAgICBpZiAoIW5vcm1hbHMpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgQ0lGaWx0ZXIqIGxpZ2h0VmVjdG9ycyA9IGdldExpZ2h0VmVjdG9y
cyhub3JtYWxzLCBsaWdodCwgc3VyZmFjZVNjYWxlKCkpOwotICAgIGlmICghbGlnaHRWZWN0b3Jz
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W25vcm1hbHMgdmFs
dWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdIGZvcktleTpAImlucHV0Tm9ybWFsTWFwIl07Ci0gICAg
W2ZpbHRlciBzZXRWYWx1ZTpbbGlnaHRWZWN0b3JzIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2Ui
XSBmb3JLZXk6QCJpbnB1dExpZ2h0VmVjdG9ycyJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2lD
b2xvcihsaWdodGluZ0NvbG9yKCkpIGZvcktleTpAImlucHV0TGlnaHRpbmdDb2xvciJdOwotICAg
IFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpzdXJmYWNlU2NhbGUo
KV0gZm9yS2V5OkAiaW5wdXRTdXJmYWNlU2NhbGUiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3BlY3VsYXJDb25zdGFudCgpXSBmb3JLZXk6QCJpbnB1
dFNwZWN1bGFyQ29uc3RhbnQiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1i
ZXJXaXRoRmxvYXQ6c3BlY3VsYXJFeHBvbmVudCgpXSBmb3JLZXk6QCJpbnB1dFNwZWN1bGFyRXhw
b25lbnQiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
a2VybmVsVW5pdExlbmd0aFgoKV0gZm9yS2V5OkAiaW5wdXRLZXJuZWxVbml0TGVuZ3RoWCJdOwot
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDprZXJuZWxVbml0
TGVuZ3RoWSgpXSBmb3JLZXk6QCJpbnB1dEtlcm5lbFVuaXRMZW5ndGhZIl07Ci0KLSAgICBGRV9R
VUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94KTsKLSAgICBGRV9RVUFSVFpfT1VUUFVUX1JFVFVS
TjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRVRpbGVDZy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFVGlsZUNn
Lm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVUaWxlQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNp
bmNsdWRlICJTVkdGRVRpbGUuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRVRpbGU6OmdldENJRmlsdGVyKGNvbnN0
IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmls
dGVyID0gZmlsdGVyKCk7Ci0gICAgRkVfUVVBUlRaX1NFVFVQX0lOUFVUKEAiQ0lBZmZpbmVUaWxl
Iik7Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94KTsKLSAgICBGRV9RVUFS
VFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22155</attachid>
            <date>2008-07-08 00:45:27 -0700</date>
            <delta_ts>2008-07-09 00:36:09 -0700</delta_ts>
            <desc>Large Refactoring</desc>
            <filename>output3.diff</filename>
            <type>text/plain</type>
            <size>142823</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTA1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYwIEBACisyMDA4LTA3LTA4ICBBbGV4IE1hdGhld3MgIDxwb3NzZXNzZWRwZW5n
dWluYm9iQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBidWcgMTk4MzU6IFdlYktpdCBuZWVkcyBjcm9zcy1wbGF0Zm9ybSBmaWx0ZXIg
c3lzdGVtCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MzU+CisKKyAgICAgICAgTW9yZSBjbGFzcyByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBm
b3IgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIAorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcv
RmlsdGVyRWZmZWN0Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWls
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cyk6CisgICAgICAg
ICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0NoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojpi
dWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxv
b2RFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0ZXJFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVm
ZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpmaWx0
ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaW5kTGlnaHRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmZpbHRlckVm
ZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxl
bmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2
ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZv
bHZlTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjprZXJuZWxTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29udm9sdmVNYXRyaXg6OnNldEtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZl
TWF0cml4OjpkaXZpc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNl
dERpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6Ymlhcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRCaWFzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnRhcmdldE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUNvbnZvbHZlTWF0cml4OjpzZXRUYXJnZXRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb252b2x2ZU1hdHJpeDo6ZWRnZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2
ZU1hdHJpeDo6c2V0RWRnZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJp
eDo6a2VybmVsVW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4
OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRy
aXg6OnByZXNlcnZlQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6
c2V0UHJlc2VydmVBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4Ojph
cHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpkdW1wKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaDoKKyAg
ICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVE
aWZmdXNlTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6
OkZFRGlmZnVzZUxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5n
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6On5GRURpZmZ1
c2VMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRp
bmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRp
bmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c3VyZmFjZVNj
YWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2Nh
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmRpZmZ1c2VDb25zdGFu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlmZnVzZUNvbnN0
YW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVu
Z3RoWCk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5p
dExlbmd0aFgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6Omtlcm5lbFVu
aXRMZW5ndGhZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJu
ZWxVbml0TGVuZ3RoWSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGln
aHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjphcHBseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6ZHVtcCk6CisgICAgICAgIChXZWJD
b3JlOjpGRURpZmZ1c2VMaWdodGluZzo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpc3BsYWNlbWVudE1hcDo6eENoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpc3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpGRURpc3BsYWNlbWVudE1hcDo6eUNoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OnNldFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2Vt
ZW50TWFwOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6ZHVt
cCk6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1l
bnRNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVGbG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpGRUZsb29k
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUZsb29kOjpmbG9vZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnNldEZs
b29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6Zmxvb2RPcGFjaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eSk6CisgICAgICAgIChXZWJD
b3JlOjpGRUZsb29kOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpkdW1wKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaDoKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVH
YXVzc2lhbkJsdXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
c3RkRGV2aWF0aW9uWCk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6c2V0U3Rk
RGV2aWF0aW9uWCk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6c3RkRGV2aWF0
aW9uWSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9u
WSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6YXBwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVz
c2lhbkJsdXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUltYWdlOjp+RkVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjYWNoZWRJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpzZXRDYWNoZWRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRUltYWdlOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdl
OjpkdW1wKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFTWVyZ2U6OkZFTWVyZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6Om1lcmdlSW5wdXRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTWVyZ2U6OnNldE1lcmdlSW5wdXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVy
Z2U6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OmR1bXApOgorICAgICAgICAo
V2ViQ29yZTo6RkVNZXJnZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xv
Z3k6OkZFTW9ycGhvbG9neSk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnNldE1vcnBob2xvZ3lPcGVyYXRv
cik6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnJhZGl1c1gpOgorICAgICAgICAo
V2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNYKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
TW9ycGhvbG9neTo6cmFkaXVzWSk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnNl
dFJhZGl1c1kpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjphcHBseSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6RkVN
b3JwaG9sb2d5OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVPZmZzZXQ6OkZFT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmR4KToKKyAgICAgICAgKFdlYkNv
cmU6OkZFT2Zmc2V0OjpzZXREeCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6ZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnNldER5KToKKyAgICAgICAgKFdlYkNvcmU6OkZF
T2Zmc2V0OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6ZHVtcCk6CisgICAg
ICAgIChXZWJDb3JlOjpGRU9mZnNldDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaDoKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVT
cGVjdWxhckxpZ2h0aW5nOjp+RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpG
RVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
RkVTcGVjdWxhckxpZ2h0aW5nOjpzdXJmYWNlU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVT
cGVjdWxhckxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVT
cGVjdWxhckxpZ2h0aW5nOjpzcGVjdWxhckNvbnN0YW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZF
U3BlY3VsYXJMaWdodGluZzo6c2V0U3BlY3VsYXJDb25zdGFudCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRVNwZWN1bGFyTGlnaHRpbmc6OnNwZWN1bGFyRXhwb25lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckV4cG9uZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFgpOgorICAgICAgICAo
V2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWCk6CisgICAg
ICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhZKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkp
OgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpsaWdodFNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6YXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpkdW1wKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3Bl
Y3VsYXJMaWdodGluZzo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6
RkVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFVGlsZTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpkdW1wKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
VHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5j
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6dHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnNldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
RkVUdXJidWxlbmNlOjpiYXNlRnJlcXVlbmN5WSk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1
bGVuY2U6OnNldEJhc2VGcmVxdWVuY3lZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5j
ZTo6YmFzZUZyZXF1ZW5jeVgpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXRC
YXNlRnJlcXVlbmN5WCk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnNlZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXRTZWVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFVHVyYnVsZW5jZTo6bnVtT2N0YXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1
bGVuY2U6OnNldE51bU9jdGF2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpz
dGl0Y2hUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnNldFN0aXRjaFRp
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6YXBwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6RkVUdXJidWxlbmNlOjpkdW1wKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVs
ZW5jZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVUdXJidWxlbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW06IFJlbW92
ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRN
YXBDZy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RUZsb29kQ2cubW06IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVHYXVzc2lhbkJsdXJDZy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmVjdG9yRm9y
Q2hhbm5lbCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVJbWFnZUNn
Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFTWVy
Z2VDZy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RU9mZnNldENnLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL2NnL1NWR0ZFVGlsZUNnLm1tOiBSZW1vdmVkLgorCiAyMDA4LTA3LTA3ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJz
IENhcmxzc29uLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwMDksMTcgKzMwMDksOCBAQAogCQlCMjU1OTkz
MzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OTcwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR1Jlc291cmNlQ2xpcHBlckNnLmNwcCAqLzsgfTsKIAkJQjI1NTk5MzUwRDAwRDhC
QTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5OTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZH
UmVzb3VyY2VGaWx0ZXJDZy5tbSAqLzsgfTsKIAkJQjI1NTk5MzcwRDAwRDhCQTAwQkI4MjVDIC8q
IFNWR1Jlc291cmNlTWFza2VyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjU1OTg5QjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNr
ZXJDZy5tbSAqLzsgfTsKLQkJQjI1NTk5M0MwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjU1OThBMjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5t
bSAqLzsgfTsKLQkJQjI1NTk5M0QwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlzcGxhY2VtZW50
TWFwQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjU1OThBMzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbSAqLzsg
fTsKLQkJQjI1NTk5M0UwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE0MEQwMEQ4Qjgw
MEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0gKi87IH07Ci0JCUIyNTU5OTNGMEQwMEQ4QkEwMEJC
ODI1QyAvKiBTVkdGRUdhdXNzaWFuQmx1ckNnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTUwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFR2F1
c3NpYW5CbHVyQ2cubW0gKi87IH07CiAJCUIyNTU5OTQwMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdG
RUhlbHBlcnNDZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjI1NTk4QTYwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLmggKi87IH07CiAJ
CUIyNTU5OTQxMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE3MEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSAqLzsgfTsKLQkJQjI1NTk5NDIwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ZFSW1hZ2VDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyNTU5OEE4MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUltYWdlQ2cubW0g
Ki87IH07Ci0JCUIyNTU5OTQzMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRU1lcmdlQ2cubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBOTBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHRkVNZXJnZUNnLm1tICovOyB9OwotCQlCMjU1OTk0NDBEMDBEOEJB
MDBCQjgyNUMgLyogU1ZHRkVPZmZzZXRDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEFBMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRU9mZnNl
dENnLm1tICovOyB9OwotCQlCMjU1OTk0NTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjU1OThBQjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nQ2cu
bW0gKi87IH07Ci0JCUIyNTU5OTQ2MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRVRpbGVDZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEFDMEQw
MEQ4QjgwMEJCODI1QyAvKiBTVkdGRVRpbGVDZy5tbSAqLzsgfTsKIAkJQjI1NTk5NDcwRDAwRDhC
QTAwQkI4MjVDIC8qIFNWR0ZpbHRlckVmZmVjdENnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QUQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0Zp
bHRlckVmZmVjdENnLm1tICovOyB9OwogCQlCMjU1OTk0ODBEMDBEOEJBMDBCQjgyNUMgLyogV0tB
cml0aG1ldGljRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBRTBEMDBEOEI5MDBCQjgyNUMgLyogV0tBcml0aG1ldGlj
RmlsdGVyLmNpa2VybmVsICovOyB9OwogCQlCMjU1OTk0OTBEMDBEOEJBMDBCQjgyNUMgLyogV0tB
cml0aG1ldGljRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjU1OThBRjBEMDBEOEI5MDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmgg
Ki87IH07CkBAIC03MzU3LDE3ICs3MzQ4LDggQEAKIAkJQjI1NTk4OTcwRDAwRDhCODAwQkI4MjVD
IC8qIFNWR1Jlc291cmNlQ2xpcHBlckNnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNTU5ODk5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNn
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR1Jlc291cmNl
RmlsdGVyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5ODlCMEQwMEQ4
QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR1Jlc291cmNlTWFza2VyQ2cubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpZmZ1
c2VMaWdodGluZ0NnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFRGlzcGxhY2VtZW50
TWFwQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEE0MEQwMEQ4Qjgw
MEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU1ZHRkVGbG9vZENnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMjU1OThBNTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUdhdXNzaWFuQmx1ckNn
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThBNjBEMDBEOEI4MDBCQjgy
NUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR0ZFSGVscGVyc0NnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEE3
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUhlbHBlcnNDZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTgwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2VDZy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUltYWdlQ2cu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEE5MEQwMEQ4QjgwMEJCODI1
QyAvKiBTVkdGRU1lcmdlQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU1ZHRkVNZXJnZUNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1
OThBQTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVPZmZzZXRDZy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRU9mZnNldENnLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCMjU1OThBQjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUIyNTU5OEFDMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRVRpbGVDZy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRVRpbGVDZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QUQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZpbHRlckVm
ZmVjdENnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0Zp
bHRlckVmZmVjdENnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThBRTBE
MDBEOEI5MDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmNpa2VybmVsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXS0FyaXRobWV0aWNGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyNTU5OEFGMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0FyaXRobWV0aWNG
aWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQXJpdGhtZXRpY0Zp
bHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE5NDUsMTcgKzExOTI3LDgg
QEAKIAkJQjI1NTk4OUQwRDAwRDhCODAwQkI4MjVDIC8qIGNnICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlCMjU1OThBMjBEMDBEOEI4MDBCQjgyNUMgLyog
U1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbSAqLywKLQkJCQlCMjU1OThBMzBEMDBEOEI4MDBCQjgy
NUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbSAqLywKLQkJCQlCMjU1OThBNDBEMDBEOEI4
MDBCQjgyNUMgLyogU1ZHRkVGbG9vZENnLm1tICovLAotCQkJCUIyNTU5OEE1MEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdGRUdhdXNzaWFuQmx1ckNnLm1tICovLAogCQkJCUIyNTU5OEE2MEQwMEQ4Qjgw
MEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5oICovLAogCQkJCUIyNTU5OEE3MEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSAqLywKLQkJCQlCMjU1OThBODBEMDBEOEI4MDBCQjgy
NUMgLyogU1ZHRkVJbWFnZUNnLm1tICovLAotCQkJCUIyNTU5OEE5MEQwMEQ4QjgwMEJCODI1QyAv
KiBTVkdGRU1lcmdlQ2cubW0gKi8sCi0JCQkJQjI1NTk4QUEwRDAwRDhCODAwQkI4MjVDIC8qIFNW
R0ZFT2Zmc2V0Q2cubW0gKi8sCi0JCQkJQjI1NTk4QUIwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0NnLm1tICovLAotCQkJCUIyNTU5OEFDMEQwMEQ4QjgwMEJCODI1QyAv
KiBTVkdGRVRpbGVDZy5tbSAqLywKIAkJCQlCMjU1OThBRDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZH
RmlsdGVyRWZmZWN0Q2cubW0gKi8sCiAJCQkJQjI1NTk4QUUwRDAwRDhCOTAwQkI4MjVDIC8qIFdL
QXJpdGhtZXRpY0ZpbHRlci5jaWtlcm5lbCAqLywKIAkJCQlCMjU1OThBRjBEMDBEOEI5MDBCQjgy
NUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmggKi8sCkBAIC0xNjU2OSw0MSArMTY1NDIsMzIgQEAK
IAkJCQlCMjIyNzlEMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTdBMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNv
bnZvbHZlTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTdDMEQwMEQ4QkEwMEJC
ODI1QyAvKiBTVkdGRURpZmZ1c2VMaWdodGluZy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1
OTkzQzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3OUQzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5N0UwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5
OTNEMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjc5RDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlEOTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
NTU5OTgwMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUZsb29kLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUIyNTU5OTNFMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUZsb29kQ2cubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCMjIyNzlEQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5REYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZF
RnVuY0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUUyMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGRUZ1bmNCRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlF
NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5jR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjc5RTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY1JFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyNTU5OTgyMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUdhdXNz
aWFuQmx1ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzRjBEMDBEOEJBMDBCQjgyNUMg
LyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUVCMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjI1NTk5NDEwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5ODQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5NDIwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZF
SW1hZ2VDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUVFMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGMTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjI1NTk5ODYwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFTWVyZ2UuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQjI1NTk5NDMwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFTWVyZ2VDZy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3OUYzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
RkVNZXJnZU5vZGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OTg4MEQwMEQ4
QkEwMEJCODI1QyAvKiBTVkdGRU1vcnBob2xvZ3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1
NTk5OEEwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUIyNTU5OTQ0MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRU9mZnNldENnLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjc5RjkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
RkVQb2ludExpZ2h0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4QzBEMDBE
OEJBMDBCQjgyNUMgLyogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUIyNTU5OTQ1MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUZGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTAyMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQjI1NTk5NDYwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFVGlsZUNnLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjdBMDUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFVGlsZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5OEYwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZF
VHVyYnVsZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EwODBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdl
YkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRl
ckVmZmVjdC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw4IEBACiAjZGVmaW5lIEZpbHRlckVmZmVjdF9o
CiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiVGV4
dFN0cmVhbS5oIgorCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMyArNzYsMTIgQEAKIHsKICAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAg
IEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7Ci0g
ICAgCisKICAgICBpZighaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRl
KGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxCbGVuZE1vZGVUeXBlPiAobW9kZSgpKSk7Ci0g
ICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOwotICAgIAor
ICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVCbGVuZDo6Y3JlYXRlKGlucHV0MSwgaW5wdXQy
LCBzdGF0aWNfY2FzdDxCbGVuZE1vZGVUeXBlPiAobW9kZSgpKSkpOworCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3
ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ZFQmxlbmRFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5j
bHVkZSAiRkVCbGVuZC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDEwIEBACiBib29sIFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgCisK
ICAgICBpZighaW5wdXQxKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBWZWN0
b3I8ZmxvYXQ+IF92YWx1ZXM7CiAgICAgU1ZHTnVtYmVyTGlzdCogbnVtYmVycyA9IHZhbHVlcygp
OwogCkBAIC04OSw4ICs4OSw3IEBACiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7aSA8IG5y
O2krKykKICAgICAgICAgX3ZhbHVlcy5hcHBlbmQobnVtYmVycy0+Z2V0SXRlbShpLCBlYykpOwog
Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRUNvbG9yTWF0cml4Ojpj
cmVhdGUoaW5wdXQxLCBzdGF0aWNfY2FzdDxDb2xvck1hdHJpeFR5cGU+ICh0eXBlKCkpLCBfdmFs
dWVzKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7
CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUNvbG9yTWF0cml4OjpjcmVhdGUoaW5wdXQx
LCBzdGF0aWNfY2FzdDxDb2xvck1hdHJpeFR5cGU+ICh0eXBlKCkpLCBfdmFsdWVzKSk7CiAgICAg
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdGRUNv
bG9yTWF0cml4RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXgu
aCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDcgQEAKICAgICAgICAgICAgIGFs
cGhhID0gc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jQUVsZW1lbnQqPihuKS0+dHJhbnNmZXJGdW5jdGlv
bigpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9
IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShpbnB1dDEsIHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7
CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUo
aW5wdXQxLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgIAogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5o
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQotI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGRUNvbXBvbmVudFRy
YW5zZmVyLmgiCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkocmV2
aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVDb21wb3NpdGU6
OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0aW9uVHlw
ZT4gKF9vcGVyYXRvcigpKSwKLSAgICAgICAgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgazEoKSwgazIoKSwgazMoKSwgazQo
KSk7CiAgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOwog
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAko
cmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1
ZGUgIkZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJGRUNvbXBvc2l0ZS5oIgogI2luY2x1ZGUg
IlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJTVkdDb2xvci5oIgotI2luY2x1ZGUgIlNWR0ZFTGlnaHRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgpAQCAtNzUsMzUgKzc0LDMzIEBA
CiAKIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJF
ZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmls
dGVyRWZmZWN0KSAKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRURpZmZ1c2VMaWdodGlu
Zzo6Y3JlYXRlKGZpbHRlcik7Ci0KLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXREaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KCkp
OwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRTdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxlKCkpOwot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLZXJuZWxVbml0TGVuZ3RoWChrZXJuZWxVbml0TGVuZ3Ro
WCgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0S2VybmVsVW5pdExlbmd0aFkoa2VybmVsVW5p
dExlbmd0aFkoKSk7Ci0KLSAgICBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQqIG5vbkNvbnN0
VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Kj4odGhpcyk7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSBub25Db25zdFRoaXMtPnN0eWxlRm9yUmVuZGVyZXIocGFyZW50
KCktPnJlbmRlcmVyKCkpOwotICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHlsZSA9IG5vbkNvbnN0
VGhpcy0+cmVzb2x2ZVN0eWxlKHBhcmVudFN0eWxlKTsKK2Jvb2wgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIEZpbHRlckVm
ZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgCisgICAg
aWYoIWlucHV0MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSA9IHRoaXMtPnN0eWxlRm9yUmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVy
KCkpOworICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHlsZSA9IHRoaXMtPnJlc29sdmVTdHlsZShw
YXJlbnRTdHlsZSk7CisgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+
bGlnaHRpbmdDb2xvcigpOwogICAgIAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRMaWdodGluZ0Nv
bG9yKGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5saWdodGluZ0NvbG9yKCkpOwotICAgIHNldFN0
YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0gCiAgICAgcGFyZW50U3R5
bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAgIGZpbHRlclN0eWxlLT5k
ZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKICAgICAKLSAgICB1cGRhdGVMaWdodHMo
KTsKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYWRkZWRFZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGlucHV0MSwgY29s
b3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVu
aXRMZW5ndGhZKCksIGZpbmRMaWdodHMoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBh
ZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRzKCkgY29uc3QKK0xpZ2h0
U291cmNlKiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodHMoKSBjb25zdAog
ewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICBM
aWdodFNvdXJjZSogbGlnaHQgPSAwOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsg
bjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSB8fApAQCAtMTE1LDcgKzExMiw3IEBACiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0TGlnaHRTb3VyY2UobGlnaHQpOwor
ICAgIHJldHVybiBsaWdodDsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsyMywxMSBA
QAogI2RlZmluZSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIlNWR0ZFTGlnaHRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTVkdGRURpZmZ1c2VMaWdodGluZzsKKyAgICBj
bGFzcyBGRURpZmZ1c2VMaWdodGluZzsKICAgICBjbGFzcyBTVkdDb2xvcjsKIAogICAgIGNsYXNz
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMKQEAgLTM3LDYgKzM4LDcgQEAKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1
YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25z
dDsKKyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiB0aGlzOyB9CkBAIC00OCw5ICs1MCw5IEBACiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBm
bG9hdCwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQogICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBm
bG9hdCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAotICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7
CisgICAgICAgIExpZ2h0U291cmNlKiBmaW5kTGlnaHRzKCkgY29uc3Q7CiAgICAgICAgIAotICAg
ICAgICB2b2lkIHVwZGF0ZUxpZ2h0cygpIGNvbnN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxG
RURpZmZ1c2VMaWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKIAogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3hDaGFubmVs
U2VsZWN0b3IoU1ZHX0NIQU5ORUxfQSkKLSAgICAsIG1feUNoYW5uZWxTZWxlY3RvcihTVkdfQ0hB
Tk5FTF9BKQorICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKENIQU5ORUxfQSkKKyAgICAsIG1feUNo
YW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCiAgICAgLCBtX3NjYWxlKDAuMGYpCiAgICAgLCBtX2Zp
bHRlckVmZmVjdCgwKQogewpAQCAtNDYsMTggKzQ2LDE4IEBACiBBTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24s
IGVudW1lcmF0aW9uLCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBTVkdOYW1l
czo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIG1feUNoYW5uZWxTZWxlY3RvcikKIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIE51
bWJlciwgbnVtYmVyLCBTY2FsZSwgc2NhbGUsIFNWR05hbWVzOjpzY2FsZUF0dHIsIG1fc2NhbGUp
CiAKLVNWR0NoYW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojpz
dHJpbmdUb0NoYW5uZWwoY29uc3QgU3RyaW5nJiBrZXkpCitDaGFubmVsU2VsZWN0b3JUeXBlIFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0cmluZyYg
a2V5KQogewogICAgIGlmIChrZXkgPT0gIlIiKQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxf
UjsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfUjsKICAgICBlbHNlIGlmIChrZXkgPT0gIkciKQot
ICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfRzsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfRzsK
ICAgICBlbHNlIGlmIChrZXkgPT0gIkIiKQotICAgICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfQjsK
KyAgICAgICAgcmV0dXJuIENIQU5ORUxfQjsKICAgICBlbHNlIGlmIChrZXkgPT0gIkEiKQotICAg
ICAgICByZXR1cm4gU1ZHX0NIQU5ORUxfQTsKKyAgICAgICAgcmV0dXJuIENIQU5ORUxfQTsKIAot
ICAgIHJldHVybiBTVkdfQ0hBTk5FTF9VTktOT1dOOworICAgIHJldHVybiBDSEFOTkVMX1VOS05P
V047CiB9CiAKIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCkBAIC03NywxOSArNzcsMjYgQEAKICAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVEaXNwbGFjZW1lbnRNYXAqIFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0
CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRl
ckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRURpc3BsYWNlbWVudE1hcDo6
Y3JlYXRlKGZpbHRlcik7Ci0KLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0WENoYW5uZWxTZWxlY3Rv
cigoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSkgeENoYW5uZWxTZWxlY3RvcigpKTsKLSAgICBtX2Zp
bHRlckVmZmVjdC0+c2V0WUNoYW5uZWxTZWxlY3RvcigoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSkg
eUNoYW5uZWxTZWxlY3RvcigpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbjIoaW4yKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5z
ZXRTY2FsZShzY2FsZSgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
MDsKK30KIAotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7
Ci0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgpOworYm9vbCBTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVy
RWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0
ZXJFZmZlY3QqIGlucHV0MiA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIAor
ICAgIGlmKCFpbnB1dDEgfHwgIWlucHV0MikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFRGlzcGxh
Y2VtZW50TWFwOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PENoYW5uZWxTZWxl
Y3RvclR5cGU+ICh4Q2hhbm5lbFNlbGVjdG9yKCkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDaGFubmVsU2VsZWN0b3JUeXBlPiAoeUNoYW5u
ZWxTZWxlY3RvcigpKSwgc2NhbGUoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRl
ZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMzUw
MDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDExIEBACiAgICAgICAgIFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoKTsKICAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBT
dHJpbmcmKTsKKyAgICAgICAgc3RhdGljIENoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFu
bmVsKGNvbnN0IFN0cmluZyYpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZF
RGlzcGxhY2VtZW50TWFwKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciopIGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKICAg
ICAgICAgCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDYsNyArNDcsNyBA
QAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LCBpbnQsIGludCwgWUNoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3Rv
cikKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudCwgZmxvYXQsIGZsb2F0LCBTY2FsZSwgc2NhbGUpCiAKLSAgICAgICAgbXV0
YWJsZSBSZWZQdHI8U1ZHRkVEaXNwbGFjZW1lbnRNYXA+IG1fZmlsdGVyRWZmZWN0OworICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxGRURpc3BsYWNlbWVudE1hcD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDI1ICs0OCwyNiBAQAogICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAK
LVNWR0ZFRmxvb2QqIFNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVGbG9vZEVsZW1lbnQ6
OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlm
ICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVGbG9vZDo6
Y3JlYXRlKGZpbHRlcik7Ci0gICAgCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVy
RWZmZWN0LmdldCgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsK
K30KIAotICAgIFNWR0ZFRmxvb2RFbGVtZW50KiBub25Db25zdFRoaXMgPSBjb25zdF9jYXN0PFNW
R0ZFRmxvb2RFbGVtZW50Kj4odGhpcyk7Citib29sIFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChG
aWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9
IHRoaXMtPnN0eWxlRm9yUmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOworICAgIFJlbmRl
clN0eWxlKiBmaWx0ZXJTdHlsZSA9IHRoaXMtPnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7CisK
KyAgICBDb2xvciBjb2xvciA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5mbG9vZENvbG9yKCk7
CisgICAgZmxvYXQgb3BhY2l0eSA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5mbG9vZE9wYWNp
dHkoKTsKIAotICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IG5vbkNvbnN0VGhpcy0+c3R5
bGVGb3JSZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVyZXIoKSk7Ci0gICAgUmVuZGVyU3R5bGUqIGZp
bHRlclN0eWxlID0gbm9uQ29uc3RUaGlzLT5yZXNvbHZlU3R5bGUocGFyZW50U3R5bGUpOwotICAg
IAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRGbG9vZENvbG9yKGZpbHRlclN0eWxlLT5zdmdTdHls
ZSgpLT5mbG9vZENvbG9yKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRGbG9vZE9wYWNpdHko
ZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kT3BhY2l0eSgpKTsKLSAgICAKICAgICBwYXJl
bnRTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmlsdGVyU3R5
bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOworCisgICAgYnVpbGRlci0+YWRk
KHJlc3VsdCgpLCBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpKTsKICAgICAKLSAgICBy
ZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTQgQEAK
ICAgICAgICAgdmlydHVhbCB+U1ZHRkVGbG9vZEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZp
cnR1YWwgU1ZHRkVGbG9vZCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxTVkdGRUZsb29kPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0
YWJsZSBSZWZQdHI8RkVGbG9vZD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDE3ICs2NiwyMiBAQAogICAgICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwogfQogCi1TVkdGRUdhdXNzaWFuQmx1ciogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVm
ZmVjdCogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAg
ICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyKTsKLSAg
ICAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0
LT5zZXRTdGREZXZpYXRpb25YKHN0ZERldmlhdGlvblgoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3Qt
PnNldFN0ZERldmlhdGlvblkoc3RkRGV2aWF0aW9uWSgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKworICAgIGlmKCFpbnB1dDEpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVHYXVz
c2lhbkJsdXI6OmNyZWF0ZShpbnB1dDEsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgp
KSk7CiAKLSAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QuZ2V0KCkpOyAK
LSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZpc2lvbiAz
NTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw4IEBACiAgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGZs
b2F0IHN0ZERldmlhdGlvblgsIGZsb2F0IHN0ZERldmlhdGlvblkpOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAg
dmlydHVhbCBTVkdGRUdhdXNzaWFuQmx1ciogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVy
KikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3Qo
U1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWls
ZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBAIC00OSw3ICs1MCw3
IEBACiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQsIGZsb2F0LCBmbG9hdCwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudCwgZmxvYXQsIGZsb2F0LCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQogCi0g
ICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0ZFR2F1c3NpYW5CbHVyPiBtX2ZpbHRlckVmZmVjdDsK
KyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVHYXVzc2lhbkJsdXI+IG1fZmlsdGVyRWZmZWN0Owog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNyArODksMjAgQEAKICAgICAgICAgbV9maWx0
ZXJFZmZlY3QtPnNldENhY2hlZEltYWdlKG1fY2FjaGVkSW1hZ2UpOwogfQogCi1TVkdGRUltYWdl
KiBTVkdGRUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0ZXJFZmZl
Y3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVy
RWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNWR0ZFSW1hZ2U6OmNyZWF0ZShmaWx0
ZXIpOwotICAgIAotICAgIC8vIFRoZSByZXNvdXJjZSBtYXkgYWxyZWFkeSBiZSBsb2FkZWQhCi0g
ICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRDYWNoZWRJ
bWFnZShtX2NhY2hlZEltYWdlKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworYm9vbCBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciog
YnVpbGRlcikKK3sKKyAgICBpZighbV9jYWNoZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUltYWdlOjpjcmVhdGUobV9jYWNoZWRJ
bWFnZSkpOwogCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgp
KTsKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmdldFN1YnJlc291cmNlQXR0cmlidXRlU3RyaW5n
cyhWZWN0b3I8U3RyaW5nPiYgdXJscykgY29uc3QKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
aAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw5ICs0NywxMCBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3VicmVzb3VyY2VBdHRyaWJ1dGVTdHJpbmdzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAg
ICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAg
ICB2aXJ0dWFsIFNWR0ZFSW1hZ2UqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKikgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwg
Y29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9
CkBAIC02MSw3ICs2Miw3IEBACiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRUltYWdlRWxlbWVudCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFJlZlB0cjxTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvPiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RS
YXRpbykKIAogICAgICAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZTsKLSAgICAgICAgbXV0
YWJsZSBSZWZQdHI8U1ZHRkVJbWFnZT4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUg
UmVmUHRyPEZFSW1hZ2U+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwyMSArNDAsMjggQEAKIHsKIH0KIAotU1ZHRkVNZXJnZSogU1ZHRkVNZXJnZUVsZW1lbnQ6
OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVy
RWZmZWN0KiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVy
KiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9m
aWx0ZXJFZmZlY3QgPSBTVkdGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAgICAgCi0gICAg
c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIFZlY3RvcjxTdHJpbmc+IG1l
cmdlSW5wdXRzOworYm9vbCBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciog
YnVpbGRlcikKK3sKKyAgICBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4gbWVyZ2VJbnB1dHM7CiAgICAg
Zm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuICE9IDA7IG4gPSBuLT5uZXh0U2libGluZygp
KSB7Ci0gICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlTm9kZVRhZykp
Ci0gICAgICAgICAgICBtZXJnZUlucHV0cy5hcHBlbmQoc3RhdGljX2Nhc3Q8U1ZHRkVNZXJnZU5v
ZGVFbGVtZW50Kj4obiktPmluMSgpKTsKKyAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlTWVyZ2VOb2RlVGFnKSkgeworICAgICAgICAgICAgRmlsdGVyRWZmZWN0KiBtZXJnZUVm
ZmVjdCA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoc3RhdGljX2Nhc3Q8U1ZHRkVNZXJnZU5vZGVF
bGVtZW50Kj4obiktPmluMSgpKTsKKyAgICAgICAgICAgIG1lcmdlSW5wdXRzLmFwcGVuZChtZXJn
ZUVmZmVjdCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0TWVy
Z2VJbnB1dHMobWVyZ2VJbnB1dHMpOwotICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsK
KyAgICBpZihtZXJnZUlucHV0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVNZXJnZTo6Y3JlYXRlKG1lcmdlSW5wdXRzKSk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVNZXJn
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5o
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxNCBAQAogICAgICAgICBTVkdGRU1lcmdlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZH
RkVNZXJnZUVsZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIFNWR0ZFTWVyZ2UqIGZpbHRlckVm
ZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAg
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVNZXJn
ZT4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFTWVyZ2U+IG1fZmls
dGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxNyArNTksMjIgQEAK
ICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVPZmZzZXQqIFNWR0ZFT2Zmc2V0RWxlbWVudDo6
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJF
ZmZlY3QqIFNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVy
KiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9m
aWx0ZXJFZmZlY3QgPSBTVkdGRU9mZnNldDo6Y3JlYXRlKGZpbHRlcik7Ci0gICAgCi0gICAgbV9m
aWx0ZXJFZmZlY3QtPnNldEluKGluMSgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0RHgoZHgo
KSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldER5KGR5KCkpOworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworfQorCitib29sIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVp
bGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9
IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworCisgICAgaWYoIWlucHV0MSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRU9mZnNldDo6
Y3JlYXRlKGlucHV0MSwgZHgoKSwgZHkoKSkpOwogCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVz
KG1fZmlsdGVyRWZmZWN0LmdldCgpKTsgCi0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgp
OworICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQu
aAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsOCBAQAogICAgICAgICB2aXJ0dWFsIH5TVkdGRU9m
ZnNldEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRkVPZmZzZXQqIGZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0Zp
bHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAg
ICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdGhpczsgfQpAQCAtNDcsNyArNDgsNyBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBmbG9hdCwgZmxvYXQsIER4LCBkeCkKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFT2Zmc2V0RWxlbWVudCwg
ZmxvYXQsIGZsb2F0LCBEeSwgZHkpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVPZmZz
ZXQ+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRU9mZnNldD4gbV9m
aWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1
MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDQyICs3NiwxNyBAQAogICAgICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1T
VkdGRVNwZWN1bGFyTGlnaHRpbmcqIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZmZWN0
KiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KSAKLSAgICAg
ICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIp
OwotCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluMSgpKTsKLSAgICBtX2ZpbHRlckVmZmVj
dC0+c2V0U3BlY3VsYXJDb25zdGFudCgoc3BlY3VsYXJDb25zdGFudCgpKSk7Ci0gICAgbV9maWx0
ZXJFZmZlY3QtPnNldFNwZWN1bGFyRXhwb25lbnQoKHNwZWN1bGFyRXhwb25lbnQoKSkpOwotICAg
IG1fZmlsdGVyRWZmZWN0LT5zZXRTdXJmYWNlU2NhbGUoKHN1cmZhY2VTY2FsZSgpKSk7Ci0gICAg
bV9maWx0ZXJFZmZlY3QtPnNldEtlcm5lbFVuaXRMZW5ndGhYKChrZXJuZWxVbml0TGVuZ3RoWCgp
KSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEtlcm5lbFVuaXRMZW5ndGhZKChrZXJuZWxVbml0
TGVuZ3RoWSgpKSk7Ci0KLSAgICBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KiBub25Db25z
dFRoaXMgPSBjb25zdF9jYXN0PFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQqPih0aGlzKTsK
LQotICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IG5vbkNvbnN0VGhpcy0+c3R5bGVGb3JS
ZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVyZXIoKSk7ICAgIAotICAgIFJlbmRlclN0eWxlKiBmaWx0
ZXJTdHlsZSA9IG5vbkNvbnN0VGhpcy0+cmVzb2x2ZVN0eWxlKHBhcmVudFN0eWxlKTsKLSAgICAK
LSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0TGlnaHRpbmdDb2xvcihmaWx0ZXJTdHlsZS0+c3ZnU3R5
bGUoKS0+bGlnaHRpbmdDb2xvcigpKTsKLSAgICAKLSAgICBwYXJlbnRTdHlsZS0+ZGVyZWYoZG9j
dW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7Ci0gICAgZmlsdGVyU3R5bGUtPmRlcmVmKGRvY3VtZW50
KCktPnJlbmRlckFyZW5hKCkpOwotCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVy
RWZmZWN0LmdldCgpKTsKLQotICAgIHVwZGF0ZUxpZ2h0cygpOwotICAgIHJldHVybiBtX2ZpbHRl
ckVmZmVjdC5nZXQoKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojp1cGRhdGVMaWdodHMoKSBj
b25zdAorTGlnaHRTb3VyY2UqIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdo
dHMoKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIHJldHVybjsK
LQotICAgIExpZ2h0U291cmNlKiBsaWdodCA9IDA7ICAgIAorICAgIExpZ2h0U291cmNlKiBsaWdo
dCA9IDA7CiAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNp
YmxpbmcoKSkgewotICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaXN0YW50
TGlnaHRUYWcpIHx8IAorICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaXN0
YW50TGlnaHRUYWcpIHx8CiAgICAgICAgICAgICBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVBv
aW50TGlnaHRUYWcpIHx8CiAgICAgICAgICAgICBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNw
b3RMaWdodFRhZykpIHsKICAgICAgICAgICAgIFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdodE5vZGUg
PSBzdGF0aWNfY2FzdDxTVkdGRUxpZ2h0RWxlbWVudCo+KG4pOyAKQEAgLTEyMCw3ICs5NSwyOSBA
QAogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldExpZ2h0U291cmNl
KGxpZ2h0KTsKKyAgICByZXR1cm4gbGlnaHQ7Cit9CisKK2Jvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIAorICAg
IGlmKCFpbnB1dDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlID0gdGhpcy0+c3R5bGVGb3JSZW5kZXJlcihwYXJlbnQoKS0+cmVu
ZGVyZXIoKSk7ICAgIAorICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHlsZSA9IHRoaXMtPnJlc29s
dmVTdHlsZShwYXJlbnRTdHlsZSk7CisgICAgCisgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHls
ZS0+c3ZnU3R5bGUoKS0+bGlnaHRpbmdDb2xvcigpOworICAgIAorICAgIHBhcmVudFN0eWxlLT5k
ZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKKyAgICBmaWx0ZXJTdHlsZS0+ZGVyZWYo
ZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CisgICAgCisgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gYWRkZWRFZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEsIGNvbG9y
LCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5n
dGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGZpbmRMaWdodHMoKSk7CisgICAgYnVpbGRlci0+
YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworCisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw4IEBACiAgICAgICAgIHZpcnR1
YWwgflNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoKTsKICAgICAgICAgCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAg
ICAgdmlydHVhbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmcqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVy
RWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmls
dGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNTAs
OSArNTEsOSBAQAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWCwg
a2VybmVsVW5pdExlbmd0aFgpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgZmxvYXQsIEtlcm5lbFVuaXRM
ZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdG
RVNwZWN1bGFyTGlnaHRpbmc+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJlZlB0
cjxGRVNwZWN1bGFyTGlnaHRpbmc+IG1fZmlsdGVyRWZmZWN0OwogICAgICAgICAKLSAgICAgICAg
dm9pZCB1cGRhdGVMaWdodHMoKSBjb25zdDsKKyAgICAgICAgTGlnaHRTb3VyY2UqIGZpbmRMaWdo
dHMoKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTUgKzUyLDIyIEBACiAgICAg
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZFVGlsZSogU1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNW
R0ZFVGlsZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBj
b25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0
ID0gU1ZHRkVUaWxlOjpjcmVhdGUoZmlsdGVyKTsKKyAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVp
bGRlciogYnVpbGRlcikKK3sKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwogCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluMSgpKTsK
KyAgICBpZighaW5wdXQxKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzZXRTdGFuZGFy
ZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QuZ2V0KCkpOwotICAgIHJldHVybiBtX2ZpbHRlckVm
ZmVjdC5nZXQoKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFVGlsZTo6Y3JlYXRlKGlu
cHV0MSkpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsOCBAQAogICAgICAgICB2aXJ0dWFsIH5T
VkdGRVRpbGVFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFVGlsZSogZmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZH
RmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0aGlzOyB9CkBAIC00NCw3ICs0NSw3IEBACiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVGlsZUVsZW1lbnQsIFN0cmluZywgU3Ry
aW5nLCBJbjEsIGluMSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRVRpbGU+IG1fZmls
dGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRVRpbGU+IG1fZmlsdGVyRWZmZWN0
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
CiAgICAgLCBtX251bU9jdGF2ZXMoMSkKICAgICAsIG1fc2VlZCgwLjBmKQogICAgICwgbV9zdGl0
Y2hUaWxlcyhTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCkKLSAgICAsIG1fdHlwZShTVkdfVFVSQlVM
RU5DRV9UWVBFX1RVUkJVTEVOQ0UpCisgICAgLCBtX3R5cGUoRkVUVVJCVUxFTkNFX1RZUEVfVFVS
QlVMRU5DRSkKICAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CkBAIC01OCw5ICs1OCw5IEBA
CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlID09ICJm
cmFjdGFsTm9pc2UiKQotICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShTVkdfVFVSQlVMRU5D
RV9UWVBFX0ZSQUNUQUxOT0lTRSk7CisgICAgICAgICAgICBzZXRUeXBlQmFzZVZhbHVlKEZFVFVS
QlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJ0
dXJidWxlbmNlIikKLSAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoU1ZHX1RVUkJVTEVOQ0Vf
VFlQRV9UVVJCVUxFTkNFKTsKKyAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoRkVUVVJCVUxF
TkNFX1RZUEVfVFVSQlVMRU5DRSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnN0aXRjaFRpbGVzQXR0cikgewogICAgICAgICBpZiAodmFsdWUgPT0gInN0aXRjaCIp
CiAgICAgICAgICAgICBzZXRTdGl0Y2hUaWxlc0Jhc2VWYWx1ZShTVkdfU1RJVENIVFlQRV9TVElU
Q0gpOwpAQCAtODAsMjEgKzgwLDE5IEBACiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZFVHVy
YnVsZW5jZSogU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNl
RmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewot
ICAgIAotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0g
U1ZHRkVUdXJidWxlbmNlOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAKLSAgICBtX2ZpbHRlckVmZmVj
dC0+c2V0VHlwZSgoU1ZHVHVyYnVsYW5jZVR5cGUpIHR5cGUoKSk7Ci0gICAgbV9maWx0ZXJFZmZl
Y3QtPnNldEJhc2VGcmVxdWVuY3lYKGJhc2VGcmVxdWVuY3lYKCkpOwotICAgIG1fZmlsdGVyRWZm
ZWN0LT5zZXRCYXNlRnJlcXVlbmN5WShiYXNlRnJlcXVlbmN5WSgpKTsKLSAgICBtX2ZpbHRlckVm
ZmVjdC0+c2V0TnVtT2N0YXZlcyhudW1PY3RhdmVzKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5z
ZXRTZWVkKHNlZWQoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFN0aXRjaFRpbGVzKHN0aXRj
aFRpbGVzKCkgPT0gU1ZHX1NUSVRDSFRZUEVfU1RJVENIKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpi
dWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGFkZGVkRWZmZWN0ID0gRkVUdXJidWxlbmNlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8VHVyYnVsYW5j
ZVR5cGU+ICh0eXBlKCkpLCBiYXNlRnJlcXVlbmN5WCgpLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlRnJlcXVlbmN5WSgpLCBudW1PY3RhdmVzKCksIHNlZWQo
KSwgc3RpdGNoVGlsZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9TVElUQ0gpOworICAgIGJ1aWxkZXIt
PmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKIAotICAgIHNldFN0YW5kYXJk
QXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7IAotICAgIHJldHVybiBtX2ZpbHRlckVm
ZmVjdC5nZXQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDggQEAKICAg
ICAgICAgdmlydHVhbCB+U1ZHRkVUdXJidWxlbmNlRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAg
dmlydHVhbCBTVkdGRVR1cmJ1bGVuY2UqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciop
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNW
R1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRl
ciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNTUsNyArNTYsNyBA
QAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNl
RWxlbWVudCwgaW50LCBpbnQsIFN0aXRjaFRpbGVzLCBzdGl0Y2hUaWxlcykKICAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGludCwg
aW50LCBUeXBlLCB0eXBlKQogCi0gICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0ZFVHVyYnVsZW5j
ZT4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFVHVyYnVsZW5jZT4g
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZp
bmUgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzX2gKIAogI2lmIEVOQUJMRShT
VkcpCisjaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1l
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCShyZXZpc2lvbiAzNTAw
NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEzNiArMjIsMTI5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAi
U1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR0ZFQ29udm9sdmVNYXRyaXguaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUNvbnZvbHZlTWF0cml4OjpTVkdGRUNvbnZv
bHZlTWF0cml4KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZl
Y3QoZmlsdGVyKQotICAgICwgbV9rZXJuZWxTaXplKCkKLSAgICAsIG1fZGl2aXNvcigwLjBmKQot
ICAgICwgbV9iaWFzKDAuMGYpCi0gICAgLCBtX3RhcmdldE9mZnNldCgpCi0gICAgLCBtX2VkZ2VN
b2RlKFNWR19FREdFTU9ERV9VTktOT1dOKQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoKCkKLSAg
ICAsIG1fcHJlc2VydmVBbHBoYShmYWxzZSkKK0ZFQ29udm9sdmVNYXRyaXg6OkZFQ29udm9sdmVN
YXRyaXgoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIsIGNvbnN0IEZsb2F0U2l6
ZSYga2VybmVsU2l6ZSwgCisgICAgY29uc3QgZmxvYXQmIGRpdmlzb3IsIGNvbnN0IGZsb2F0JiBi
aWFzLCBjb25zdCBGbG9hdFNpemUmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2Rl
LAorICAgIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVB
bHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQorICAgIDogRmlsdGVyRWZm
ZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX2luMihpbjIpCisgICAgLCBtX2tlcm5lbFNp
emUoa2VybmVsU2l6ZSkKKyAgICAsIG1fZGl2aXNvcihkaXZpc29yKQorICAgICwgbV9iaWFzKGJp
YXMpCisgICAgLCBtX3RhcmdldE9mZnNldCh0YXJnZXRPZmZzZXQpCisgICAgLCBtX2VkZ2VNb2Rl
KGVkZ2VNb2RlKQorICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoKGtlcm5lbFVuaXRMZW5ndGgpCisg
ICAgLCBtX3ByZXNlcnZlQWxwaGEocHJlc2VydmVBbHBoYSkKKyAgICAsIG1fa2VybmVsTWF0cml4
KGtlcm5lbE1hdHJpeCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0cml4PiBT
VkdGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bh
c3NSZWZQdHI8RkVDb252b2x2ZU1hdHJpeD4gRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKEZpbHRl
ckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yLCBjb25zdCBGbG9hdFNpemUmIGtlcm5lbFNp
emUsIAorICAgIGNvbnN0IGZsb2F0JiBkaXZpc29yLCBjb25zdCBmbG9hdCYgYmlhcywgY29uc3Qg
RmxvYXRTaXplJiB0YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSwgCisgICAgY29u
c3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdGRUNvbnZvbHZlTWF0cml4KGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RkVDb252b2x2ZU1hdHJpeChpbiwgaW4yLCBrZXJuZWxTaXplLCBkaXZpc29yLCBiaWFzLCB0YXJn
ZXRPZmZzZXQsIGVkZ2VNb2RlLCBrZXJuZWxVbml0TGVuZ3RoLAorICAgICAgICBwcmVzZXJ2ZUFs
cGhhLCBrZXJuZWxNYXRyaXgpKTsKIH0KIAotRmxvYXRTaXplIFNWR0ZFQ29udm9sdmVNYXRyaXg6
Omtlcm5lbFNpemUoKSBjb25zdAorCitGbG9hdFNpemUgRkVDb252b2x2ZU1hdHJpeDo6a2VybmVs
U2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fa2VybmVsU2l6ZTsKIH0KIAotdm9pZCBTVkdG
RUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxTaXplKEZsb2F0U2l6ZSBrZXJuZWxTaXplKQordm9p
ZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxTaXplKEZsb2F0U2l6ZSBrZXJuZWxTaXplKQog
ewogICAgIG1fa2VybmVsU2l6ZSA9IGtlcm5lbFNpemU7IAogfQogCi1jb25zdCBWZWN0b3I8Zmxv
YXQ+JiBTVkdGRUNvbnZvbHZlTWF0cml4OjprZXJuZWwoKSBjb25zdAorY29uc3QgVmVjdG9yPGZs
b2F0PiYgRkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9r
ZXJuZWxNYXRyaXg7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbChj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWwpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldEtl
cm5lbChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWwpCiB7CiAgICAgbV9rZXJuZWxNYXRyaXgg
PSBrZXJuZWw7IAogfQogCi1mbG9hdCBTVkdGRUNvbnZvbHZlTWF0cml4OjpkaXZpc29yKCkgY29u
c3QKK2Zsb2F0IEZFQ29udm9sdmVNYXRyaXg6OmRpdmlzb3IoKSBjb25zdAogewogICAgIHJldHVy
biBtX2Rpdmlzb3I7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldERpdmlzb3Io
ZmxvYXQgZGl2aXNvcikKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0RGl2aXNvcihmbG9hdCBk
aXZpc29yKQogewogICAgIG1fZGl2aXNvciA9IGRpdmlzb3I7IAogfQogCi1mbG9hdCBTVkdGRUNv
bnZvbHZlTWF0cml4OjpiaWFzKCkgY29uc3QKK2Zsb2F0IEZFQ29udm9sdmVNYXRyaXg6OmJpYXMo
KSBjb25zdAogewogICAgIHJldHVybiBtX2JpYXM7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVN
YXRyaXg6OnNldEJpYXMoZmxvYXQgYmlhcykKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0Qmlh
cyhmbG9hdCBiaWFzKQogewogICAgIG1fYmlhcyA9IGJpYXM7IAogfQogCi1GbG9hdFNpemUgU1ZH
RkVDb252b2x2ZU1hdHJpeDo6dGFyZ2V0T2Zmc2V0KCkgY29uc3QKK0Zsb2F0U2l6ZSBGRUNvbnZv
bHZlTWF0cml4Ojp0YXJnZXRPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBtX3RhcmdldE9m
ZnNldDsgCiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0VGFyZ2V0T2Zmc2V0KEZs
b2F0U2l6ZSB0YXJnZXRPZmZzZXQpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldFRhcmdldE9m
ZnNldChGbG9hdFNpemUgdGFyZ2V0T2Zmc2V0KQogewogICAgIG1fdGFyZ2V0T2Zmc2V0ID0gdGFy
Z2V0T2Zmc2V0OyAKIH0KIAotU1ZHRWRnZU1vZGVUeXBlIFNWR0ZFQ29udm9sdmVNYXRyaXg6OmVk
Z2VNb2RlKCkgY29uc3QKK0VkZ2VNb2RlVHlwZSBGRUNvbnZvbHZlTWF0cml4OjplZGdlTW9kZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZWRnZU1vZGU7IAogfQogCi12b2lkIFNWR0ZFQ29udm9s
dmVNYXRyaXg6OnNldEVkZ2VNb2RlKFNWR0VkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKK3ZvaWQgRkVD
b252b2x2ZU1hdHJpeDo6c2V0RWRnZU1vZGUoRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQogewogICAg
IG1fZWRnZU1vZGUgPSBlZGdlTW9kZTsgCiB9CiAKLUZsb2F0UG9pbnQgU1ZHRkVDb252b2x2ZU1h
dHJpeDo6a2VybmVsVW5pdExlbmd0aCgpIGNvbnN0CitGbG9hdFBvaW50IEZFQ29udm9sdmVNYXRy
aXg6Omtlcm5lbFVuaXRMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2tlcm5lbFVuaXRM
ZW5ndGg7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5lbFVuaXRMZW5n
dGgoRmxvYXRQb2ludCBrZXJuZWxVbml0TGVuZ3RoKQordm9pZCBGRUNvbnZvbHZlTWF0cml4Ojpz
ZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCkKIHsKICAgICBt
X2tlcm5lbFVuaXRMZW5ndGggPSBrZXJuZWxVbml0TGVuZ3RoOyAKIH0KIAotYm9vbCBTVkdGRUNv
bnZvbHZlTWF0cml4OjpwcmVzZXJ2ZUFscGhhKCkgY29uc3QKK2Jvb2wgRkVDb252b2x2ZU1hdHJp
eDo6cHJlc2VydmVBbHBoYSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJlc2VydmVBbHBoYTsg
CiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBoYShib29sIHBy
ZXNlcnZlQWxwaGEpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldFByZXNlcnZlQWxwaGEoYm9v
bCBwcmVzZXJ2ZUFscGhhKQogewogICAgIG1fcHJlc2VydmVBbHBoYSA9IHByZXNlcnZlQWxwaGE7
IAogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU1ZH
RWRnZU1vZGVUeXBlIHQpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OmFwcGx5KCkKK3sKK30KKwor
dm9pZCBGRUNvbnZvbHZlTWF0cml4OjpkdW1wKCkKIHsKLSAgICBzd2l0Y2ggKHQpCi0gICAgewot
ICAgICAgICBjYXNlIFNWR19FREdFTU9ERV9VTktOT1dOOgotICAgICAgICAgICAgdHMgPDwgIlVO
S05PV04iO2JyZWFrOwotICAgICAgICBjYXNlIFNWR19FREdFTU9ERV9EVVBMSUNBVEU6Ci0gICAg
ICAgICAgICB0cyA8PCAiRFVQTElDQVRFIjticmVhazsKLSAgICAgICAgY2FzZSBTVkdfRURHRU1P
REVfV1JBUDoKLSAgICAgICAgICAgIHRzIDw8ICJXUkFQIjsgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U1ZHX0VER0VNT0RFX05PTkU6Ci0gICAgICAgICAgICB0cyA8PCAiTk9ORSI7IGJyZWFrOwotICAg
IH0KLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFQ29udm9sdmVNYXRyaXg6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CitUZXh0U3RyZWFt
JiBGRUNvbnZvbHZlTWF0cml4OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRz
KSBjb25zdAogewotICAgIHRzIDw8ICJbdHlwZT1DT05WT0xWRS1NQVRSSVhdICI7Ci0gICAgU1ZH
RmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKLSAgICB0cyA8PCAiIFtv
cmRlciAiIDw8IG1fa2VybmVsU2l6ZSA8PCAiXSIKLSAgICAgICAgPDwgIiBba2VybmVsIG1hdHJp
eD0iIDw8IG1fa2VybmVsTWF0cml4ICA8PCAiXSIKLSAgICAgICAgPDwgIiBbZGl2aXNvcj0iIDw8
IG1fZGl2aXNvciA8PCAiXSIKLSAgICAgICAgPDwgIiBbYmlhcz0iIDw8IG1fYmlhcyA8PCAiXSIK
LSAgICAgICAgPDwgIiBbdGFyZ2V0ICIgPDwgbV90YXJnZXRPZmZzZXQgPDwgIl0iCi0gICAgICAg
IDw8ICIgW2VkZ2UgbW9kZT0iIDw8IG1fZWRnZU1vZGUgPDwgIl0iCi0gICAgICAgIDw8ICIgW2tl
cm5lbCB1bml0IGxlbmd0aCAiIDw8IG1fa2VybmVsVW5pdExlbmd0aCA8PCAiXSIKLSAgICAgICAg
PDwgIiBbcHJlc2VydmUgYWxwaGE9IiA8PCBtX3ByZXNlcnZlQWxwaGEgPDwgIl0iOworICAgIHRz
IDw8ICJbdHlwZT1DT05WT0xWRS1NQVRSSVhdICIKKyAgICAgICAgPDwgIiBbaW4xPSIgPDwgcmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9pbi5nZXQoKSkgPDwgIl0iCisgICAgICAgIDw8ICIg
W2luMj0iIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1faW4yLmdldCgpKSAgPDwgIl0i
OwogICAgIHJldHVybiB0czsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUNvbnZvbHZlTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDU5ICsyMyw3MCBAQAogI2RlZmluZSBTVkdGRUNvbnZvbHZlTWF0cml4X2gK
IAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdG
aWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBTVkdFZGdlTW9kZVR5cGUgewotICAg
IFNWR19FREdFTU9ERV9VTktOT1dOICAgPSAwLAotICAgIFNWR19FREdFTU9ERV9EVVBMSUNBVEUg
PSAxLAotICAgIFNWR19FREdFTU9ERV9XUkFQICAgICAgPSAyLAotICAgIFNWR19FREdFTU9ERV9O
T05FICAgICAgPSAzCi19OwotCi1jbGFzcyBTVkdGRUNvbnZvbHZlTWF0cml4IDogcHVibGljIFNW
R0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb252
b2x2ZU1hdHJpeD4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBGbG9hdFNpemUg
a2VybmVsU2l6ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsU2l6ZShGbG9hdFNpemUpOwot
Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRL
ZXJuZWwoY29uc3QgVmVjdG9yPGZsb2F0PiYpOwotCi0gICAgZmxvYXQgZGl2aXNvcigpIGNvbnN0
OwotICAgIHZvaWQgc2V0RGl2aXNvcihmbG9hdCk7Ci0KLSAgICBmbG9hdCBiaWFzKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRCaWFzKGZsb2F0KTsKLQotICAgIEZsb2F0U2l6ZSB0YXJnZXRPZmZzZXQo
KSBjb25zdDsKLSAgICB2b2lkIHNldFRhcmdldE9mZnNldChGbG9hdFNpemUpOwotCi0gICAgU1ZH
RWRnZU1vZGVUeXBlIGVkZ2VNb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRFZGdlTW9kZShTVkdF
ZGdlTW9kZVR5cGUpOwotCi0gICAgRmxvYXRQb2ludCBrZXJuZWxVbml0TGVuZ3RoKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9pbnQpOwotCi0gICAgYm9vbCBw
cmVzZXJ2ZUFscGhhKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQcmVzZXJ2ZUFscGhhKGJvb2wpOwot
Ci0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0mKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBTVkdGRUNvbnZvbHZlTWF0cml4KFNWR1Jlc291
cmNlRmlsdGVyKik7Ci0KLSAgICBGbG9hdFNpemUgbV9rZXJuZWxTaXplOwotICAgIGZsb2F0IG1f
ZGl2aXNvcjsKLSAgICBmbG9hdCBtX2JpYXM7Ci0gICAgRmxvYXRTaXplIG1fdGFyZ2V0T2Zmc2V0
OwotICAgIFNWR0VkZ2VNb2RlVHlwZSBtX2VkZ2VNb2RlOwotICAgIEZsb2F0UG9pbnQgbV9rZXJu
ZWxVbml0TGVuZ3RoOwotICAgIGJvb2wgbV9wcmVzZXJ2ZUFscGhhOwotICAgIFZlY3RvcjxmbG9h
dD4gbV9rZXJuZWxNYXRyaXg7IC8vIG1heWJlIHNob3VsZCBiZSBhIHJlYWwgbWF0cml4PwotfTsK
KyAgICBlbnVtIEVkZ2VNb2RlVHlwZSB7CisgICAgICAgIEVER0VNT0RFX1VOS05PV04gICA9IDAs
CisgICAgICAgIEVER0VNT0RFX0RVUExJQ0FURSA9IDEsCisgICAgICAgIEVER0VNT0RFX1dSQVAg
ICAgICA9IDIsCisgICAgICAgIEVER0VNT0RFX05PTkUgICAgICA9IDMKKyAgICB9OworCisgICAg
Y2xhc3MgRkVDb252b2x2ZU1hdHJpeCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVDb252b2x2ZU1hdHJpeD4gY3JlYXRlKEZp
bHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IEZsb2F0U2l6ZSYsIAorICAgICAgICAg
ICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBjb25zdCBGbG9hdFNpemUmLCBFZGdl
TW9kZVR5cGUsIGNvbnN0IEZsb2F0UG9pbnQmLAorICAgICAgICAgICAgICAgIGJvb2wsIGNvbnN0
IFZlY3RvcjxmbG9hdD4mKTsKKworICAgICAgICBGbG9hdFNpemUga2VybmVsU2l6ZSgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldEtlcm5lbFNpemUoRmxvYXRTaXplKTsKKworICAgICAgICBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJuZWwo
Y29uc3QgVmVjdG9yPGZsb2F0PiYpOworCisgICAgICAgIGZsb2F0IGRpdmlzb3IoKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXREaXZpc29yKGZsb2F0KTsKKworICAgICAgICBmbG9hdCBiaWFzKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0QmlhcyhmbG9hdCk7CisKKyAgICAgICAgRmxvYXRTaXpl
IHRhcmdldE9mZnNldCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFRhcmdldE9mZnNldChGbG9h
dFNpemUpOworCisgICAgICAgIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSgpIGNvbnN0OworICAgICAg
ICB2b2lkIHNldEVkZ2VNb2RlKEVkZ2VNb2RlVHlwZSk7CisKKyAgICAgICAgRmxvYXRQb2ludCBr
ZXJuZWxVbml0TGVuZ3RoKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0
aChGbG9hdFBvaW50KTsKKworICAgICAgICBib29sIHByZXNlcnZlQWxwaGEoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRQcmVzZXJ2ZUFscGhhKGJvb2wpOworCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKKworICAg
IHByaXZhdGU6CisgICAgICAgIEZFQ29udm9sdmVNYXRyaXgoRmlsdGVyRWZmZWN0KiwgRmlsdGVy
RWZmZWN0KiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsCisg
ICAgICAgICAgICAgICAgY29uc3QgRmxvYXRTaXplJiwgRWRnZU1vZGVUeXBlLCBjb25zdCBGbG9h
dFBvaW50JiwgYm9vbCwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworCisgICAgICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IG1faW47CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW4yOwor
ICAgICAgICBGbG9hdFNpemUgbV9rZXJuZWxTaXplOworICAgICAgICBmbG9hdCBtX2Rpdmlzb3I7
CisgICAgICAgIGZsb2F0IG1fYmlhczsKKyAgICAgICAgRmxvYXRTaXplIG1fdGFyZ2V0T2Zmc2V0
OworICAgICAgICBFZGdlTW9kZVR5cGUgbV9lZGdlTW9kZTsKKyAgICAgICAgRmxvYXRQb2ludCBt
X2tlcm5lbFVuaXRMZW5ndGg7CisgICAgICAgIGJvb2wgbV9wcmVzZXJ2ZUFscGhhOworICAgICAg
ICBWZWN0b3I8ZmxvYXQ+IG1fa2VybmVsTWF0cml4OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDk3ICsyNCwxMDUgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCiAjaW5jbHVkZSAiU1ZHTGlnaHRTb3VyY2UuaCIKICNpbmNsdWRlICJTVkdGRURpZmZ1
c2VMaWdodGluZy5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TVkdGRURpZmZ1c2VMaWdodGluZzo6U1ZHRkVEaWZmdXNlTGlnaHRpbmcoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAg
LCBtX2xpZ2h0aW5nQ29sb3IoKQotICAgICwgbV9zdXJmYWNlU2NhbGUoMC4wZikKLSAgICAsIG1f
ZGlmZnVzZUNvbnN0YW50KDAuMGYpCi0gICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKDAuMGYpCi0g
ICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhZKDAuMGYpCi0gICAgLCBtX2xpZ2h0U291cmNlKDApCitG
RURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyRWZmZWN0KiBpbiAsIGNv
bnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBjb25zdCBmbG9hdCYgc3VyZmFjZVNjYWxlLAorICAg
IGNvbnN0IGZsb2F0JiBkaWZmdXNlQ29uc3RhbnQsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVu
Z3RoWCwgY29uc3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhZLCBMaWdodFNvdXJjZSogbGlnaHRT
b3VyY2UpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1fbGln
aHRpbmdDb2xvcihsaWdodGluZ0NvbG9yKQorICAgICwgbV9zdXJmYWNlU2NhbGUoc3VyZmFjZVNj
YWxlKQorICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KQorICAgICwgbV9r
ZXJuZWxVbml0TGVuZ3RoWChrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICAsIG1fa2VybmVsVW5pdExl
bmd0aFkoa2VybmVsVW5pdExlbmd0aFkpCisgICAgLCBtX2xpZ2h0U291cmNlKGxpZ2h0U291cmNl
KQogewogfQogCi1QYXNzUmVmUHRyPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nPiBTVkdGRURpZmZ1c2VM
aWdodGluZzo6Y3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZF
RGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlckVmZmVjdCog
aW4gLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwKKyAgICBjb25zdCBmbG9hdCYgc3VyZmFj
ZVNjYWxlLCBjb25zdCBmbG9hdCYgZGlmZnVzZUNvbnN0YW50LCBjb25zdCBmbG9hdCYga2VybmVs
VW5pdExlbmd0aFgsCisgICAgY29uc3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhZLCBMaWdodFNv
dXJjZSogbGlnaHRTb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGRURpZmZ1
c2VMaWdodGluZyhmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFRGlmZnVzZUxp
Z2h0aW5nKGluLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwg
a2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkpOwogfQog
Ci1TVkdGRURpZmZ1c2VMaWdodGluZzo6flNWR0ZFRGlmZnVzZUxpZ2h0aW5nKCkKK0ZFRGlmZnVz
ZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQogewogfQogCi1Db2xvciBTVkdGRURpZmZ1
c2VMaWdodGluZzo6bGlnaHRpbmdDb2xvcigpIGNvbnN0CitDb2xvciBGRURpZmZ1c2VMaWdodGlu
Zzo6bGlnaHRpbmdDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGlnaHRpbmdDb2xvcjsK
IH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBD
b2xvciYgbGlnaHRpbmdDb2xvcikKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0aW5n
Q29sb3IoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IpCiB7CiAgICAgbV9saWdodGluZ0NvbG9y
ID0gbGlnaHRpbmdDb2xvcjsKIH0KIAotZmxvYXQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnN1cmZh
Y2VTY2FsZSgpIGNvbnN0IAorZmxvYXQgRkVEaWZmdXNlTGlnaHRpbmc6OnN1cmZhY2VTY2FsZSgp
IGNvbnN0IAogewogICAgIHJldHVybiBtX3N1cmZhY2VTY2FsZTsKIH0KIAotdm9pZCBTVkdGRURp
ZmZ1c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxlKGZsb2F0IHN1cmZhY2VTY2FsZSkKK3ZvaWQg
RkVEaWZmdXNlTGlnaHRpbmc6OnNldFN1cmZhY2VTY2FsZShmbG9hdCBzdXJmYWNlU2NhbGUpCiB7
CiAgICAgbV9zdXJmYWNlU2NhbGUgPSBzdXJmYWNlU2NhbGU7CiB9CiAKLWZsb2F0IFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nOjpkaWZmdXNlQ29uc3RhbnQoKSBjb25zdAorZmxvYXQgRkVEaWZmdXNlTGln
aHRpbmc6OmRpZmZ1c2VDb25zdGFudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGlmZnVzZUNv
bnN0YW50OwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXREaWZmdXNlQ29uc3Rh
bnQoZmxvYXQgZGlmZnVzZUNvbnN0YW50KQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlm
ZnVzZUNvbnN0YW50KGZsb2F0IGRpZmZ1c2VDb25zdGFudCkKIHsKICAgICBtX2RpZmZ1c2VDb25z
dGFudCA9IGRpZmZ1c2VDb25zdGFudDsKIH0KIAotZmxvYXQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6
Omtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QKK2Zsb2F0IEZFRGlmZnVzZUxpZ2h0aW5nOjprZXJu
ZWxVbml0TGVuZ3RoWCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFg7
CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhYKGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVs
VW5pdExlbmd0aFgoZmxvYXQga2VybmVsVW5pdExlbmd0aFgpCiB7CiAgICAgbV9rZXJuZWxVbml0
TGVuZ3RoWCA9IGtlcm5lbFVuaXRMZW5ndGhYOwogfQogCi1mbG9hdCBTVkdGRURpZmZ1c2VMaWdo
dGluZzo6a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdAorZmxvYXQgRkVEaWZmdXNlTGlnaHRpbmc6
Omtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVu
Z3RoWTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0
aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRL
ZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSkKIHsKICAgICBtX2tlcm5l
bFVuaXRMZW5ndGhZID0ga2VybmVsVW5pdExlbmd0aFk7CiB9CiAKLWNvbnN0IExpZ2h0U291cmNl
KiBTVkdGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRT
b3VyY2UqIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6
OnNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKK3ZvaWQgRkVEaWZmdXNl
TGlnaHRpbmc6OnNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKIHsgICAg
CiAgICAgbV9saWdodFNvdXJjZSA9IGxpZ2h0U291cmNlOwogfQogCi1UZXh0U3RyZWFtJiBTVkdG
RURpZmZ1c2VMaWdodGluZzo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykg
Y29uc3QKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KCkKIHsKLSAgICB0cyA8PCAiW3R5
cGU9RElGRlVTRS1MSUdIVElOR10gIjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVw
cmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICIgW3N1cmZhY2Ugc2NhbGU9IiA8PCBtX3N1cmZh
Y2VTY2FsZSA8PCAiXSIKLSAgICAgICAgPDwgIiBbZGlmZnVzZSBjb25zdGFudD0iIDw8IG1fZGlm
ZnVzZUNvbnN0YW50IDw8ICJdIgotICAgICAgICA8PCAiIFtrZXJuZWwgdW5pdCBsZW5ndGggIiA8
PCBtX2tlcm5lbFVuaXRMZW5ndGhYIDw8ICIsICIgPDwgbV9rZXJuZWxVbml0TGVuZ3RoWSA8PCAi
XSI7Cit9CisKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmR1bXAoKQoreworfQorCitUZXh0U3Ry
ZWFtJiBGRURpZmZ1c2VMaWdodGluZzo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3QKK3sKKyAgICB0cyA8PCAiW3R5cGU9RElGRlVTRS1MSUdIVElOR10gIgorICAg
ICAgICA8PCAiIFtpbjE9IiA8PCByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2luLmdldCgp
KSA8PCAiXSI7CiAgICAgcmV0dXJuIHRzOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCShyZXZpc2lvbiAzNTAw
NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsNTEgKzI0LDUyIEBACiAKICNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJTVkdG
aWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBMaWdodFNvdXJjZTsKKyAgICBjbGFzcyBMaWdodFNvdXJjZTsKIAot
Y2xhc3MgU1ZHRkVEaWZmdXNlTGlnaHRpbmcgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRl
KFNWR1Jlc291cmNlRmlsdGVyKik7Ci0gICAgdmlydHVhbCB+U1ZHRkVEaWZmdXNlTGlnaHRpbmco
KTsKLQotICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldExpZ2h0
aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKLQotICAgIGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKLQotICAgIGZsb2F0IGRpZmZ1c2VD
b25zdGFudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKLQot
ICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLZXJuZWxV
bml0TGVuZ3RoWChmbG9hdCk7Ci0KLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwotCi0gICAgY29uc3QgTGln
aHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaWdodFNvdXJjZShM
aWdodFNvdXJjZSopOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1
YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0j
ZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRURpZmZ1c2VMaWdodGluZyhTVkdSZXNvdXJjZUZp
bHRlciopOwotICAgIAotICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKLSAgICBmbG9hdCBtX3N1
cmZhY2VTY2FsZTsKLSAgICBmbG9hdCBtX2RpZmZ1c2VDb25zdGFudDsKLSAgICBmbG9hdCBtX2tl
cm5lbFVuaXRMZW5ndGhYOwotICAgIGZsb2F0IG1fa2VybmVsVW5pdExlbmd0aFk7Ci0gICAgUmVm
UHRyPExpZ2h0U291cmNlPiBtX2xpZ2h0U291cmNlOwotfTsKKyAgICBjbGFzcyBGRURpZmZ1c2VM
aWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBj
b25zdCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAg
IGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBMaWdodFNvdXJjZSopOworICAgICAgICB2aXJ0
dWFsIH5GRURpZmZ1c2VMaWdodGluZygpOworCisgICAgICAgIENvbG9yIGxpZ2h0aW5nQ29sb3Io
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CisK
KyAgICAgICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3Vy
ZmFjZVNjYWxlKGZsb2F0KTsKKworICAgICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXREaWZmdXNlQ29uc3RhbnQoZmxvYXQpOworCisgICAgICAgIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5p
dExlbmd0aFgoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOworCisgICAgICAg
IGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5
KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIFRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OworICAgICAgICAKKyAg
ICBwcml2YXRlOgorICAgICAgICBGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXJFZmZlY3QqLCBjb25z
dCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBMaWdodFNvdXJjZSopOworCisgICAgICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IG1faW47CisgICAgICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKKyAg
ICAgICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CisgICAgICAgIGZsb2F0IG1fZGlmZnVzZUNvbnN0
YW50OworICAgICAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhYOworICAgICAgICBmbG9hdCBt
X2tlcm5lbFVuaXRMZW5ndGhZOworICAgICAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IG1fbGlnaHRT
b3VyY2U7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
RGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsOTEgKzIyLDcwIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR0ZFRGlz
cGxhY2VtZW50TWFwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVEaXNwbGFjZW1l
bnRNYXA6OlNWR0ZFRGlzcGxhY2VtZW50TWFwKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0g
ICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKFNW
R19DSEFOTkVMX1VOS05PV04pCi0gICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoU1ZHX0NIQU5ORUxf
VU5LTk9XTikKLSAgICAsIG1fc2NhbGUoMCkKK0ZFRGlzcGxhY2VtZW50TWFwOjpGRURpc3BsYWNl
bWVudE1hcChGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgQ2hhbm5lbFNlbGVj
dG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLAorICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5u
ZWxTZWxlY3RvciwgY29uc3QgZmxvYXQmIHNjYWxlKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAg
ICAsIG1faW4oaW4pCisgICAgLCBtX2luMihpbjIpCisgICAgLCBtX3hDaGFubmVsU2VsZWN0b3Io
eENoYW5uZWxTZWxlY3RvcikKKyAgICAsIG1feUNoYW5uZWxTZWxlY3Rvcih5Q2hhbm5lbFNlbGVj
dG9yKQorICAgICwgbV9zY2FsZShzY2FsZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRURpc3Bs
YWNlbWVudE1hcD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRl
ciogZmlsdGVyKQorUGFzc1JlZlB0cjxGRURpc3BsYWNlbWVudE1hcD4gRkVEaXNwbGFjZW1lbnRN
YXA6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwKKyAgICBDaGFu
bmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNo
YW5uZWxTZWxlY3RvciwgY29uc3QgZmxvYXQmIHNjYWxlKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU1ZHRkVEaXNwbGFjZW1lbnRNYXAoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGRURpc3BsYWNlbWVudE1hcChpbiwgaW4yLCB4Q2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5l
bFNlbGVjdG9yLCBzY2FsZSkpOwogfQogCi1TdHJpbmcgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6Omlu
MigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW4yOwotfQotCi12b2lkIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwOjpzZXRJbjIoY29uc3QgU3RyaW5nICZpbjIpCi17Ci0gICAgbV9pbjIgPSBpbjI7Ci19
Ci0KLVNWR0NoYW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnhDaGFubmVs
U2VsZWN0b3IoKSBjb25zdAorQ2hhbm5lbFNlbGVjdG9yVHlwZSBGRURpc3BsYWNlbWVudE1hcDo6
eENoYW5uZWxTZWxlY3RvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feENoYW5uZWxTZWxlY3Rv
cjsKIH0KIAotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcihj
b25zdCBTVkdDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IpCit2b2lkIEZFRGlz
cGxhY2VtZW50TWFwOjpzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5
cGUgeENoYW5uZWxTZWxlY3RvcikKIHsKICAgICBtX3hDaGFubmVsU2VsZWN0b3IgPSB4Q2hhbm5l
bFNlbGVjdG9yOwogfQogCi1TVkdDaGFubmVsU2VsZWN0b3JUeXBlIFNWR0ZFRGlzcGxhY2VtZW50
TWFwOjp5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QKK0NoYW5uZWxTZWxlY3RvclR5cGUgRkVEaXNw
bGFjZW1lbnRNYXA6OnlDaGFubmVsU2VsZWN0b3IoKSBjb25zdAogewogICAgIHJldHVybiBtX3lD
aGFubmVsU2VsZWN0b3I7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNldFlDaGFu
bmVsU2VsZWN0b3IoY29uc3QgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9y
KQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFu
bmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IpCiB7CiAgICAgbV95Q2hhbm5lbFNlbGVj
dG9yID0geUNoYW5uZWxTZWxlY3RvcjsKIH0KIAotZmxvYXQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6
OnNjYWxlKCkgY29uc3QKK2Zsb2F0IEZFRGlzcGxhY2VtZW50TWFwOjpzY2FsZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc2NhbGU7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNl
dFNjYWxlKGZsb2F0IHNjYWxlKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxv
YXQgc2NhbGUpCiB7CiAgICAgbV9zY2FsZSA9IHNjYWxlOwogfQogCi1zdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB0KQor
dm9pZCBGRURpc3BsYWNlbWVudE1hcDo6YXBwbHkoKQoreworfQorCit2b2lkIEZFRGlzcGxhY2Vt
ZW50TWFwOjpkdW1wKCkKIHsKLSAgICBzd2l0Y2ggKHQpCi0gICAgewotICAgICAgICBjYXNlIFNW
R19DSEFOTkVMX1VOS05PV046Ci0gICAgICAgICAgICB0cyA8PCAiVU5LTk9XTiI7IGJyZWFrOwot
ICAgICAgICBjYXNlIFNWR19DSEFOTkVMX1I6Ci0gICAgICAgICAgICB0cyA8PCAiUkVEIjsgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfRzoKLSAgICAgICAgICAgIHRzIDw8ICJHUkVF
TiI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19DSEFOTkVMX0I6Ci0gICAgICAgICAgICB0cyA8
PCAiQkxVRSI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19DSEFOTkVMX0E6Ci0gICAgICAgICAg
ICB0cyA8PCAiQUxQSEEiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0
U3RyZWFtJiBTVkdGRURpc3BsYWNlbWVudE1hcDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cykgY29uc3QKK1RleHRTdHJlYW0mIEZFRGlzcGxhY2VtZW50TWFwOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewotICAgIHRzIDw8ICJbdHlw
ZT1ESVNQTEFDRU1FTlQtTUFQXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbih0cyk7Ci0gICAgaWYgKCFpbjIoKS5pc0VtcHR5KCkpCi0gICAgICAgIHRzIDw8
ICIgW2luMj0iIDw8IGluMigpIDw8ICJdIjsKLSAgICB0cyA8PCAiIFtzY2FsZT0iIDw8IG1fc2Nh
bGUgPDwgIl0iCi0gICAgICAgIDw8ICIgW3ggY2hhbm5lbCBzZWxlY3Rvcj0iIDw8IG1feENoYW5u
ZWxTZWxlY3RvciA8PCAiXSIKLSAgICAgICAgPDwgIiBbeSBjaGFubmVsIHNlbGVjdG9yPSIgPDwg
bV95Q2hhbm5lbFNlbGVjdG9yIDw8ICJdIjsKKyAgICB0cyA8PCAiW3R5cGU9RElTUExBQ0VNRU5U
LU1BUF0gIgorICAgICAgICA8PCAiIFtpbjE9IiA8PCByZWludGVycHJldF9jYXN0PGludHB0cl90
PihtX2luLmdldCgpKSA8PCAiXSIKKyAgICAgICAgPDwgIiBbaW4yPSIgPDwgcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4obV9pbjIuZ2V0KCkpICA8PCAiXSI7CiAgICAgcmV0dXJuIHRzOwogfQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3Bs
YWNlbWVudE1hcC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDggKzIz
LDQ3IEBACiAjZGVmaW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwX2gKIAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB7Ci0gICAg
U1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDAsCi0gICAgU1ZHX0NIQU5ORUxfUiAgICAgICA9IDEsCi0g
ICAgU1ZHX0NIQU5ORUxfRyAgICAgICA9IDIsCi0gICAgU1ZHX0NIQU5ORUxfQiAgICAgICA9IDMs
Ci0gICAgU1ZHX0NIQU5ORUxfQSAgICAgICA9IDQKLX07Ci0KLWNsYXNzIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwIDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHRkVEaXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciop
OwotCi0gICAgU3RyaW5nIGluMigpIGNvbnN0OwotICAgIHZvaWQgc2V0SW4yKGNvbnN0IFN0cmlu
ZyYpOwotCi0gICAgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxTZWxlY3Rv
clR5cGUpOwotCi0gICAgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxTZWxl
Y3RvclR5cGUpOwotCi0gICAgZmxvYXQgc2NhbGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFNjYWxl
KGZsb2F0IHNjYWxlKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9STShDSSkKLSAgICB2aXJ0
dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0Owot
I2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXAoU1ZHUmVzb3VyY2VG
aWx0ZXIqKTsKLQotICAgIFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgbV94Q2hhbm5lbFNlbGVjdG9y
OwotICAgIFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgbV95Q2hhbm5lbFNlbGVjdG9yOwotICAgIGZs
b2F0IG1fc2NhbGU7Ci0gICAgU3RyaW5nIG1faW4yOwotfTsKKyAgICBlbnVtIENoYW5uZWxTZWxl
Y3RvclR5cGUgeworICAgICAgICBDSEFOTkVMX1VOS05PV04gPSAwLAorICAgICAgICBDSEFOTkVM
X1IgICAgICAgPSAxLAorICAgICAgICBDSEFOTkVMX0cgICAgICAgPSAyLAorICAgICAgICBDSEFO
TkVMX0IgICAgICAgPSAzLAorICAgICAgICBDSEFOTkVMX0EgICAgICAgPSA0CisgICAgfTsKKyAg
ICAKKyAgICBjbGFzcyBGRURpc3BsYWNlbWVudE1hcCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVEaXNwbGFjZW1lbnRNYXA+
IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBDaGFubmVsU2VsZWN0b3JUeXBl
LAorICAgICAgICAgICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUsIGNvbnN0IGZsb2F0Jik7CisK
KyAgICAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2V0WENoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBl
KTsKKworICAgICAgICBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3Rv
clR5cGUpOworCisgICAgICAgIGZsb2F0IHNjYWxlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
U2NhbGUoZmxvYXQgc2NhbGUpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIEZFRGlzcGxhY2VtZW50TWFwKEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIENoYW5u
ZWxTZWxlY3RvclR5cGUsCisgICAgICAgICAgICBDaGFubmVsU2VsZWN0b3JUeXBlLCBjb25zdCBm
bG9hdCYpOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47CisgICAgICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW4yOworICAgICAgICBDaGFubmVsU2VsZWN0b3JUeXBlIG1f
eENoYW5uZWxTZWxlY3RvcjsKKyAgICAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSBtX3lDaGFubmVs
U2VsZWN0b3I7CisgICAgICAgIGZsb2F0IG1fc2NhbGU7CisgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxv
b2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVG
bG9vZC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUZsb29kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNDkgKzIyLDU0IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMp
Ci0jaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR0ZFRmxvb2Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUZsb29kOjpTVkdGRUZsb29kKFNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAg
ICwgbV9mbG9vZENvbG9yKCkKLSAgICAsIG1fZmxvb2RPcGFjaXR5KDAuMGYpCitGRUZsb29kOjpG
RUZsb29kKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBjb25zdCBmbG9hdCYgZmxvb2RPcGFjaXR5
KQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1fZmxvb2RDb2xvcihmbG9vZENvbG9yKQor
ICAgICwgbV9mbG9vZE9wYWNpdHkoZmxvb2RPcGFjaXR5KQogewogfQogCi1QYXNzUmVmUHRyPFNW
R0ZFRmxvb2Q+IFNWR0ZFRmxvb2Q6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQor
UGFzc1JlZlB0cjxGRUZsb29kPiBGRUZsb29kOjpjcmVhdGUoY29uc3QgQ29sb3ImIGZsb29kQ29s
b3IsIGNvbnN0IGZsb2F0JiBmbG9vZE9wYWNpdHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdGRUZsb29kKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVGbG9vZChm
bG9vZENvbG9yLCBmbG9vZE9wYWNpdHkpKTsKIH0KIAotQ29sb3IgU1ZHRkVGbG9vZDo6Zmxvb2RD
b2xvcigpIGNvbnN0CitDb2xvciBGRUZsb29kOjpmbG9vZENvbG9yKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9mbG9vZENvbG9yOwogfQogCi12b2lkIFNWR0ZFRmxvb2Q6OnNldEZsb29kQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBGRUZsb29kOjpzZXRGbG9vZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHsKICAgICBtX2Zsb29kQ29sb3IgPSBjb2xvcjsKIH0KIAotZmxvYXQgU1ZH
RkVGbG9vZDo6Zmxvb2RPcGFjaXR5KCkgY29uc3QKK2Zsb2F0IEZFRmxvb2Q6OmZsb29kT3BhY2l0
eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmxvb2RPcGFjaXR5OwogfQogCi12b2lkIFNWR0ZF
Rmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBmbG9vZE9wYWNpdHkpCit2b2lkIEZFRmxvb2Q6
OnNldEZsb29kT3BhY2l0eShmbG9hdCBmbG9vZE9wYWNpdHkpCiB7CiAgICAgbV9mbG9vZE9wYWNp
dHkgPSBmbG9vZE9wYWNpdHk7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFRmxvb2Q6OmV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFRmxvb2Q6OmFwcGx5
KCkKK3sKK30KKwordm9pZCBGRUZsb29kOjpkdW1wKCkKK3sKK30KKworVGV4dFN0cmVhbSYgRkVG
bG9vZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKICAg
ICB0cyA8PCAiW3R5cGU9RkxPT0RdICI7Ci0gICAgU1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJl
cHJlc2VudGF0aW9uKHRzKTsKLSAgICB0cyA8PCAiIFtjb2xvcj0iIDw8IGZsb29kQ29sb3IoKSA8
PCAiXSIKLSAgICAgICAgPDwgIiBbb3BhY2l0eT0iIDw8IGZsb29kT3BhY2l0eSgpIDw8ICJdIjsK
KwogICAgIHJldHVybiB0czsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUZsb29kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUZsb29kLmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMyICsyNCwzMCBAQAog
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9y
LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRkVGbG9vZCA6IHB1YmxpYyBT
VkdGaWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRmxv
b2Q+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgQ29sb3IgZmxvb2RDb2xvcigp
IGNvbnN0OwotICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciAmKTsKLQotICAgIGZs
b2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0OwotICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0
KTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9STShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVy
KiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0OwotI2VuZGlmCi0KLXBy
aXZhdGU6Ci0gICAgU1ZHRkVGbG9vZChTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgQ29sb3Ig
bV9mbG9vZENvbG9yOwotICAgIGZsb2F0IG1fZmxvb2RPcGFjaXR5OwotfTsKKyAgICBjbGFzcyBG
RUZsb29kIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGRUZsb29kPiBjcmVhdGUoY29uc3QgQ29sb3ImLCBjb25zdCBmbG9hdCYp
OworCisgICAgICAgIENvbG9yIGZsb29kQ29sb3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRG
bG9vZENvbG9yKGNvbnN0IENvbG9yICYpOworCisgICAgICAgIGZsb2F0IGZsb29kT3BhY2l0eSgp
IGNvbnN0OworICAgICAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAg
ICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNv
bnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVGbG9vZChjb25zdCBDb2xvciYsIGNvbnN0
IGZsb2F0Jik7CisKKyAgICAgICAgQ29sb3IgbV9mbG9vZENvbG9yOworICAgICAgICBmbG9hdCBt
X2Zsb29kT3BhY2l0eTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIu
Y3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVHYXVzc2lhbkJsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw0NyArMjMsNTUgQEAKIAog
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUdh
dXNzaWFuQmx1ci5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TVkdGRUdhdXNzaWFuQmx1cjo6U1ZHRkVHYXVzc2lhbkJsdXIoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAgLCBtX3go
MC4wZikKLSAgICAsIG1feSgwLjBmKQorRkVHYXVzc2lhbkJsdXI6OkZFR2F1c3NpYW5CbHVyKEZp
bHRlckVmZmVjdCogaW4sIGNvbnN0IGZsb2F0JiB4LCBjb25zdCBmbG9hdCYgeSkKKyAgICA6IEZp
bHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQorICAgICwgbV94KHgpCisgICAgLCBtX3koeSkK
IHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUdhdXNzaWFuQmx1cj4gU1ZHRkVHYXVzc2lhbkJsdXI6
OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1JlZlB0cjxGRUdhdXNzaWFu
Qmx1cj4gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBmbG9h
dCYgeCwgY29uc3QgZmxvYXQmIHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGRUdh
dXNzaWFuQmx1cihmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFR2F1c3NpYW5C
bHVyKGluLCB4LCB5KSk7CiB9CiAKLWZsb2F0IFNWR0ZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRp
b25YKCkgY29uc3QKK2Zsb2F0IEZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25YKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV94OwogfQogCi12b2lkIFNWR0ZFR2F1c3NpYW5CbHVyOjpzZXRTdGRE
ZXZpYXRpb25YKGZsb2F0IHgpCit2b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25Y
KGZsb2F0IHgpCiB7CiAgICAgbV94ID0geDsKIH0KIAotZmxvYXQgU1ZHRkVHYXVzc2lhbkJsdXI6
OnN0ZERldmlhdGlvblkoKSBjb25zdAorZmxvYXQgRkVHYXVzc2lhbkJsdXI6OnN0ZERldmlhdGlv
blkoKSBjb25zdAogewogICAgIHJldHVybiBtX3k7CiB9CiAKLXZvaWQgU1ZHRkVHYXVzc2lhbkJs
dXI6OnNldFN0ZERldmlhdGlvblkoZmxvYXQgeSkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0
ZERldmlhdGlvblkoZmxvYXQgeSkKIHsKICAgICBtX3kgPSB5OwogfQogCi1UZXh0U3RyZWFtJiBT
VkdGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykg
Y29uc3QKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KCkKIHsKLSAgICB0cyA8PCAiW3R5cGU9
R0FVU1NJQU4tQkxVUl0gIjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50
YXRpb24odHMpOwotICAgIHRzIDw8ICIgW3N0ZCBkZXYuIHg9IiA8PCBzdGREZXZpYXRpb25YKCkg
PDwgIiB5PSIgPDwgc3RkRGV2aWF0aW9uWSgpIDw8ICJdIjsKK30KKwordm9pZCBGRUdhdXNzaWFu
Qmx1cjo6ZHVtcCgpCit7Cit9CisKK1RleHRTdHJlYW0mIEZFR2F1c3NpYW5CbHVyOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJbdHlw
ZT1HQVVTU0lBTi1CTFVSXSAiCisgICAgICAgIDw8ICIgW2luMT0iIDw8IHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KG1faW4uZ2V0KCkpIDw8ICJdIjsKKyAgICAgICAgCiAgICAgcmV0dXJuIHRz
OwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5C
bHVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdh
dXNzaWFuQmx1ci5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMzIgKzIzLDMx
IEBACiAjZGVmaW5lIFNWR0ZFR2F1c3NpYW5CbHVyX2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRUdh
dXNzaWFuQmx1ciA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNWR0ZFR2F1c3NpYW5CbHVyPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIq
KTsKLQotICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdDsKLSAgICB2b2lkIHNldFN0ZERl
dmlhdGlvblgoZmxvYXQpOwotCi0gICAgZmxvYXQgc3RkRGV2aWF0aW9uWSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi0jaWYgUExBVEZP
Uk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0
JiBiYm94KSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFNWR0ZFR2F1c3NpYW5CbHVy
KFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBmbG9hdCBtX3g7Ci0gICAgZmxvYXQgbV95Owot
fTsKKyAgICBjbGFzcyBGRUdhdXNzaWFuQmx1ciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVHYXVzc2lhbkJsdXI+IGNyZWF0
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAg
ZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFN0ZERldmlhdGlv
blgoZmxvYXQpOworCisgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRTdGREZXZpYXRpb25ZKGZsb2F0KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
YXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9h
dCYsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsK
KyAgICAgICAgZmxvYXQgbV94OworICAgICAgICBmbG9hdCBtX3k7CisgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMjkgKzI5LDI5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVJbWFnZTo6U1ZHRkVJbWFnZShTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAs
IG1fY2FjaGVkSW1hZ2UoMCkKK0ZFSW1hZ2U6OkZFSW1hZ2UoQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1fY2FjaGVkSW1hZ2UoY2FjaGVkSW1h
Z2UpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVJbWFnZT4gU1ZHRkVJbWFnZTo6Y3JlYXRlKFNW
R1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZFSW1hZ2U+IEZFSW1hZ2U6OmNy
ZWF0ZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdGRUltYWdlKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVJbWFnZShj
YWNoZWRJbWFnZSkpOwogfQogCi1TVkdGRUltYWdlOjp+U1ZHRkVJbWFnZSgpCitGRUltYWdlOjp+
RkVJbWFnZSgpCiB7CiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIG1fY2FjaGVkSW1h
Z2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotQ2FjaGVkSW1hZ2UqIFNWR0ZFSW1hZ2U6OmNh
Y2hlZEltYWdlKCkgY29uc3QKK0NhY2hlZEltYWdlKiBGRUltYWdlOjpjYWNoZWRJbWFnZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2U7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZTo6
c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqIGltYWdlKQordm9pZCBGRUltYWdlOjpzZXRDYWNo
ZWRJbWFnZShDYWNoZWRJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UgPT0g
aW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTY1LDE5ICs2NSwxOSBAQAogICAgICAgICBtX2Nh
Y2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZFSW1hZ2U6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFSW1h
Z2U6OmFwcGx5KCkKIHsKLSAgICB0cyA8PCAiW3R5cGU9SU1BR0VdICI7Ci0gICAgU1ZHRmlsdGVy
RWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKLSAgICAvLyBGSVhNRTogc2hvdWxk
IHRoaXMgZHVtcCBhbHNvIG9iamVjdCByZXR1cm5lZCBieSBTVkdGRUltYWdlOjppbWFnZSgpID8K
LSAgICByZXR1cm4gdHM7Cit9CiAKK3ZvaWQgRkVJbWFnZTo6ZHVtcCgpCit7CiB9CiAKLXZvaWQg
U1ZHRkVJbWFnZTo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKikKK1RleHRTdHJlYW0mIEZFSW1h
Z2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAg
aWYgKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSA9IGZpbHRlcigpKQotICAgICAg
ICBmaWx0ZXJSZXNvdXJjZS0+aW52YWxpZGF0ZSgpOworICAgIHRzIDw8ICJbdHlwZT1JTUFHRV0g
IjsKKyAgICAgICAgCisgICAgcmV0dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2aXNp
b24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjUsMzQgKzI1LDMwIEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdG
RUltYWdlIDogcHVibGljIFNWR0ZpbHRlckVmZmVjdAotICAgICAgICAgICAgICAgICAsIHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHRkVJbWFnZT4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0gICAgdmlydHVhbCB+U1ZH
RkVJbWFnZSgpOwotCi0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gc3VwcG9ydCA8c3ZnPiAoUmVu
ZGVyT2JqZWN0KikgYXMgd2VsbCBhcyBpbWFnZSBkYXRhLgotCi0gICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSop
OwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIq
IGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotICAg
IHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqKTsKLSAgICAKLXByaXZhdGU6
Ci0gICAgU1ZHRkVJbWFnZShTVkdSZXNvdXJjZUZpbHRlciopOworICAgIGNsYXNzIEZFSW1hZ2Ug
OiBwdWJsaWMgRmlsdGVyRWZmZWN0CisgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBDYWNo
ZWRSZXNvdXJjZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGRUltYWdlPiBjcmVhdGUoQ2FjaGVkSW1hZ2UqKTsKKyAgICAgICAgdmlydHVhbCB+RkVJbWFn
ZSgpOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHN1cHBvcnQgPHN2Zz4gKFJlbmRl
ck9iamVjdCopIGFzIHdlbGwgYXMgaW1hZ2UgZGF0YS4KKworICAgICAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJ
bWFnZSopOworICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OworICAgICAgICAKKyAgICBwcml2YXRlOgor
ICAgICAgICBGRUltYWdlKENhY2hlZEltYWdlKik7CiAKLSAgICBDYWNoZWRJbWFnZSogbV9jYWNo
ZWRJbWFnZTsKLX07CisgICAgICAgIENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdlOworICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRU1lcmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDQ0
ICsyMyw0MiBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2lu
Y2x1ZGUgIlNWR0ZFTWVyZ2UuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU1ZHRkVNZXJnZTo6U1ZHRkVNZXJnZShTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyKSAKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpIAorRkVNZXJnZTo6RkVNZXJn
ZShjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4mIG1lcmdlSW5wdXRzKSAKKyAgICA6IEZpbHRl
ckVmZmVjdCgpCisgICAgLCBtX21lcmdlSW5wdXRzKG1lcmdlSW5wdXRzKQogewogfQogCi1QYXNz
UmVmUHRyPFNWR0ZFTWVyZ2U+IFNWR0ZFTWVyZ2U6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyKQorUGFzc1JlZlB0cjxGRU1lcmdlPiBGRU1lcmdlOjpjcmVhdGUoY29uc3QgVmVjdG9y
PEZpbHRlckVmZmVjdCo+JiBtZXJnZUlucHV0cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNWR0ZFTWVyZ2UoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRU1lcmdlKG1l
cmdlSW5wdXRzKSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBTVkdGRU1lcmdlOjptZXJn
ZUlucHV0cygpIGNvbnN0Citjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4mIEZFTWVyZ2U6Om1l
cmdlSW5wdXRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZXJnZUlucHV0czsKIH0KIAotdm9p
ZCBTVkdGRU1lcmdlOjpzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWVyZ2VJ
bnB1dHMpCit2b2lkIEZFTWVyZ2U6OnNldE1lcmdlSW5wdXRzKGNvbnN0IFZlY3RvcjxGaWx0ZXJF
ZmZlY3QqPiYgbWVyZ2VJbnB1dHMpCiB7CiAgICAgbV9tZXJnZUlucHV0cyA9IG1lcmdlSW5wdXRz
OwogfQogCi1UZXh0U3RyZWFtJiBTVkdGRU1lcmdlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAordm9pZCBGRU1lcmdlOjphcHBseSgpCit7Cit9CisKK3ZvaWQg
RkVNZXJnZTo6ZHVtcCgpCit7Cit9CisKK1RleHRTdHJlYW0mIEZFTWVyZ2U6OmV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgdHMgPDwgIlt0eXBlPU1F
UkdFXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7
Ci0gICAgdHMgPDwgIlttZXJnZSBpbnB1dHM9WyI7Ci0gICAgdW5zaWduZWQgeCA9IDA7Ci0gICAg
dW5zaWduZWQgc2l6ZSA9IG1fbWVyZ2VJbnB1dHMuc2l6ZSgpOwotICAgIHdoaWxlICh4IDwgc2l6
ZSkgewotICAgICAgICB0cyA8PCBtX21lcmdlSW5wdXRzW3hdOwotICAgICAgICB4Kys7Ci0gICAg
ICAgIGlmICh4IDwgbV9tZXJnZUlucHV0cy5zaXplKCkpCi0gICAgICAgICAgICB0cyA8PCAiLCAi
OwotICAgIH0KLSAgICB0cyA8PCAiXV0iOworICAgICAgICAKICAgICByZXR1cm4gdHM7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oCShyZXZpc2lv
biAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMywyOCArMjMsMjggQEAKICNkZWZpbmUgU1ZHRkVNZXJnZV9oCiAK
ICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmls
dGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgU1ZHRkVNZXJnZSA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFTWVyZ2U+IGNyZWF0ZShTVkdSZXNvdXJj
ZUZpbHRlciopOworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBtZXJnZUlucHV0cygpIGNvbnN0OwotICAgIHZvaWQgc2V0TWVyZ2VJbnB1dHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG1lcmdlSW5wdXRzKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRD
SUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0OwotI2VuZGlmCisgICAgY2xhc3Mg
RkVNZXJnZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RkVNZXJnZT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3Qq
PiYpOworCisgICAgICAgIGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0b3I8RmlsdGVy
RWZmZWN0Kj4mIG1lcmdlSW5wdXRzKTsKKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBh
cHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICBUZXh0U3RyZWFt
JiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIAotcHJpdmF0
ZToKLSAgICBTVkdGRU1lcmdlKFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgcHJpdmF0ZToKKyAg
ICAgICAgRkVNZXJnZShjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4mKTsKIAotICAgIFZlY3Rv
cjxTdHJpbmc+IG1fbWVyZ2VJbnB1dHM7Ci19OworICAgICAgICBWZWN0b3I8RmlsdGVyRWZmZWN0
Kj4gbV9tZXJnZUlucHV0czsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5j
cHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RU1vcnBob2xvZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2OCArMjMsNjEgQEAKIAogI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRU1vcnBo
b2xvZ3kuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU1ZHRkVNb3JwaG9sb2d5OjpTVkdGRU1vcnBob2xvZ3koU1ZHUmVzb3VyY2VGaWx0ZXIqIGZp
bHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAgLCBtX29wZXJhdG9yKFNW
R19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04pCi0gICAgLCBtX3JhZGl1c1goMC4wZikKLSAg
ICAsIG1fcmFkaXVzWSgwLjBmKQorRkVNb3JwaG9sb2d5OjpGRU1vcnBob2xvZ3koRmlsdGVyRWZm
ZWN0KiBpbiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBmbG9hdCYgcmFkaXVz
WCwgY29uc3QgZmxvYXQmIHJhZGl1c1kpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9p
bihpbikKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9yYWRpdXNYKHJhZGl1c1gpCisgICAg
LCBtX3JhZGl1c1kocmFkaXVzWSkKIHsKIH0KIAotU1ZHTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBT
VkdGRU1vcnBob2xvZ3k6Om1vcnBob2xvZ3lPcGVyYXRvcigpIGNvbnN0CitQYXNzUmVmUHRyPEZF
TW9ycGhvbG9neT4gRkVNb3JwaG9sb2d5OjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiwgTW9ycGhv
bG9neU9wZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBmbG9hdCYgcmFkaXVzWCwgY29uc3QgZmxvYXQm
IHJhZGl1c1kpCiB7Ci0gICAgcmV0dXJuIG1fb3BlcmF0b3I7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGRU1vcnBob2xvZ3koaW4sIHR5cGUsIHJhZGl1c1gsIHJhZGl1c1kpKTsKIH0KIAotdm9p
ZCBTVkdGRU1vcnBob2xvZ3k6OnNldE1vcnBob2xvZ3lPcGVyYXRvcihTVkdNb3JwaG9sb2d5T3Bl
cmF0b3JUeXBlIF9vcGVyYXRvcikKK3ZvaWQgRkVNb3JwaG9sb2d5OjpzZXRNb3JwaG9sb2d5T3Bl
cmF0b3IoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlKQogewotICAgIG1fb3BlcmF0b3IgPSBf
b3BlcmF0b3I7CisgICAgbV90eXBlID0gdHlwZTsKIH0KIAotZmxvYXQgU1ZHRkVNb3JwaG9sb2d5
OjpyYWRpdXNYKCkgY29uc3QKK2Zsb2F0IEZFTW9ycGhvbG9neTo6cmFkaXVzWCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcmFkaXVzWDsKIH0KIAotdm9pZCBTVkdGRU1vcnBob2xvZ3k6OnNldFJh
ZGl1c1goZmxvYXQgcmFkaXVzWCkKK3ZvaWQgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNYKGZsb2F0
IHJhZGl1c1gpCiB7CiAgICAgbV9yYWRpdXNYID0gcmFkaXVzWDsKIH0KIAotZmxvYXQgU1ZHRkVN
b3JwaG9sb2d5OjpyYWRpdXNZKCkgY29uc3QKK2Zsb2F0IEZFTW9ycGhvbG9neTo6cmFkaXVzWSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmFkaXVzWTsKIH0KIAotdm9pZCBTVkdGRU1vcnBob2xv
Z3k6OnNldFJhZGl1c1koZmxvYXQgcmFkaXVzWSkKK3ZvaWQgRkVNb3JwaG9sb2d5OjpzZXRSYWRp
dXNZKGZsb2F0IHJhZGl1c1kpCiB7CiAgICAgbV9yYWRpdXNZID0gcmFkaXVzWTsKIH0KIAotc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNWR01vcnBob2xvZ3lP
cGVyYXRvclR5cGUgdCkKK3ZvaWQgRkVNb3JwaG9sb2d5OjphcHBseSgpCit7Cit9CisKK3ZvaWQg
RkVNb3JwaG9sb2d5OjpkdW1wKCkKIHsKLSAgICBzd2l0Y2ggKHQpCi0gICAgewotICAgICAgICBj
YXNlIFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV046Ci0gICAgICAgICAgICB0cyA8PCAi
VU5LTk9XTiI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0VS
T0RFOgotICAgICAgICAgICAgdHMgPDwgIkVST0RFIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
X01PUlBIT0xPR1lfT1BFUkFUT1JfRElBTEFURToKLSAgICAgICAgICAgIHRzIDw8ICJESUFMQVRF
IjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVN
b3JwaG9sb2d5OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAor
VGV4dFN0cmVhbSYgRkVNb3JwaG9sb2d5OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0mIHRzKSBjb25zdAogewotICAgIHRzIDw8ICJbdHlwZT1NT1JQSE9MT0dZLU9QRVJBVE9SXSAi
OwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAg
dHMgPDwgIiBbb3BlcmF0b3IgdHlwZT0iIDw8IG1vcnBob2xvZ3lPcGVyYXRvcigpIDw8ICJdIgot
ICAgICAgICA8PCAiIFtyYWRpdXMgeD0iIDw8IHJhZGl1c1goKSA8PCAiIHk9IiA8PCByYWRpdXNZ
KCkgPDwgIl0iOworICAgIHRzIDw8ICJbdHlwZT1NT1JQSE9MT0dZXSAiCisgICAgICAgIDw8ICIg
W2luMT0iIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1faW4uZ2V0KCkpIDw8ICJdIjsK
KyAgICAgICAgCiAgICAgcmV0dXJuIHRzOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsMzYgKzIzLDQwIEBACiAjZGVmaW5lIFNWR0ZFTW9ycGhvbG9neV9oCiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZm
ZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotZW51bSBTVkdNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHsKLSAgICBTVkdfTU9SUEhPTE9HWV9P
UEVSQVRPUl9VTktOT1dOID0gMCwKLSAgICBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAg
ID0gMSwKLSAgICBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUFMQVRFID0gMgotfTsKLQotY2xh
c3MgU1ZHRkVNb3JwaG9sb2d5IDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0g
ICAgU1ZHRkVNb3JwaG9sb2d5KFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBTVkdNb3JwaG9s
b2d5T3BlcmF0b3JUeXBlIG1vcnBob2xvZ3lPcGVyYXRvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0
TW9ycGhvbG9neU9wZXJhdG9yKFNWR01vcnBob2xvZ3lPcGVyYXRvclR5cGUpOwotCi0gICAgZmxv
YXQgcmFkaXVzWCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmFkaXVzWChmbG9hdCk7Ci0KLSAgICBm
bG9hdCByYWRpdXNZKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSYWRpdXNZKGZsb2F0KTsKLQotICAg
IHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtX29wZXJh
dG9yOwotICAgIGZsb2F0IG1fcmFkaXVzWDsKLSAgICBmbG9hdCBtX3JhZGl1c1k7Ci19OworICAg
IGVudW0gTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB7CisgICAgICAgIEZFTU9SUEhPTE9HWV9PUEVS
QVRPUl9VTktOT1dOID0gMCwKKyAgICAgICAgRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFICAg
PSAxLAorICAgICAgICBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElBTEFURSA9IDIKKyAgICB9Owor
CisgICAgY2xhc3MgRkVNb3JwaG9sb2d5IDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVi
bGljOgorICAgICAgICBQYXNzUmVmUHRyPEZFTW9ycGhvbG9neT4gY3JlYXRlKEZpbHRlckVmZmVj
dCosIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmKTsg
IAorICAgICAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIG1vcnBob2xvZ3lPcGVyYXRvcigpIGNv
bnN0OworICAgICAgICB2b2lkIHNldE1vcnBob2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0
b3JUeXBlKTsKKworICAgICAgICBmbG9hdCByYWRpdXNYKCkgY29uc3Q7CisgICAgICAgIHZvaWQg
c2V0UmFkaXVzWChmbG9hdCk7CisKKyAgICAgICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldFJhZGl1c1koZmxvYXQpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICBUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKKworICAgIHByaXZh
dGU6CisgICAgICAgIEZFTW9ycGhvbG9neShGaWx0ZXJFZmZlY3QqLCBNb3JwaG9sb2d5T3BlcmF0
b3JUeXBlLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CisgICAgICAgIAorICAgICAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOworICAgICAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBl
IG1fdHlwZTsKKyAgICAgICAgZmxvYXQgbV9yYWRpdXNYOworICAgICAgICBmbG9hdCBtX3JhZGl1
c1k7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAkocmV2aXNpb24gMzUwMDYpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNDIgKzI3LDUyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVP
ZmZzZXQ6OlNWR0ZFT2Zmc2V0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdG
aWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV9keCgwLjBmKQotICAgICwgbV9keSgwLjBmKQor
RkVPZmZzZXQ6OkZFT2Zmc2V0KEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGZsb2F0JiBkeCwgY29u
c3QgZmxvYXQmIGR5KQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAg
LCBtX2R4KGR4KQorICAgICwgbV9keShkeSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRU9mZnNl
dD4gU1ZHRkVPZmZzZXQ6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorUGFzc1Jl
ZlB0cjxGRU9mZnNldD4gRkVPZmZzZXQ6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBm
bG9hdCYgZHgsIGNvbnN0IGZsb2F0JiBkeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R0ZFT2Zmc2V0KGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVPZmZzZXQoaW4s
IGR4LCBkeSkpOwogfQogCi1mbG9hdCBTVkdGRU9mZnNldDo6ZHgoKSBjb25zdAorZmxvYXQgRkVP
ZmZzZXQ6OmR4KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9keDsKIH0KIAotdm9pZCBTVkdGRU9m
ZnNldDo6c2V0RHgoZmxvYXQgZHgpCit2b2lkIEZFT2Zmc2V0OjpzZXREeChmbG9hdCBkeCkKIHsK
ICAgICBtX2R4ID0gZHg7CiB9CiAKLWZsb2F0IFNWR0ZFT2Zmc2V0OjpkeSgpIGNvbnN0CitmbG9h
dCBGRU9mZnNldDo6ZHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2R5OwogfQogCi12b2lkIFNW
R0ZFT2Zmc2V0OjpzZXREeShmbG9hdCBkeSkKK3ZvaWQgRkVPZmZzZXQ6OnNldER5KGZsb2F0IGR5
KQogewogICAgIG1fZHkgPSBkeTsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVPZmZzZXQ6OmV4dGVy
bmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFT2Zmc2V0Ojph
cHBseSgpCiB7Ci0gICAgdHMgPDwgIlt0eXBlPU9GRlNFVF0gIjsgU1ZHRmlsdGVyRWZmZWN0Ojpl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKQotICAgICAgICA8PCAiIFtkeD0iIDw8IGR4KCkgPDwg
IiBkeT0iIDw8IGR5KCkgPDwgIl0iOworfQorCit2b2lkIEZFT2Zmc2V0OjpkdW1wKCkKK3sKK30K
KworVGV4dFN0cmVhbSYgRkVPZmZzZXQ6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYgdHMpIGNvbnN0Cit7CisgICAgdHMgPDwgIlt0eXBlPU9GRlNFVF0gIgorICAgICAgICA8PCAi
IFtpbjE9IiA8PCByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2luLmdldCgpKSA8PCAiXSI7
CisgICAgICAgIAogICAgIHJldHVybiB0czsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMy
ICsyMywzMSBAQAogI2RlZmluZSBTVkdGRU9mZnNldF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRkVP
ZmZzZXQgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRU9mZnNldD4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBm
bG9hdCBkeCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RHgoZmxvYXQpOwotCi0gICAgZmxvYXQgZHko
KSBjb25zdDsKLSAgICB2b2lkIHNldER5KGZsb2F0KTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFU
Rk9STShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJl
Y3QmIGJib3gpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgU1ZHRkVPZmZzZXQoU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIGZsb2F0IG1fZHg7Ci0gICAgZmxvYXQgbV9keTsKLX07
CisgICAgY2xhc3MgRkVPZmZzZXQgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFT2Zmc2V0PiBjcmVhdGUoRmlsdGVyRWZmZWN0
KiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOworCisgICAgICAgIGZsb2F0IGR4KCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0RHgoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGR5KCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0RHkoZmxvYXQpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBh
cHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICBUZXh0U3RyZWFt
JiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIEZFT2Zmc2V0KEZpbHRlckVmZmVjdCosIGNvbnN0IGZsb2F0JiwgY29u
c3QgZmxvYXQmKTsKKworICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOworICAgICAg
ICBmbG9hdCBtX2R4OworICAgICAgICBmbG9hdCBtX2R5OworICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDEwOCArMjMsMTE5IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgiCi0jaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFU3BlY3Vs
YXJMaWdodGluZzo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV9saWdodGluZ0NvbG9y
KCkKLSAgICAsIG1fc3VyZmFjZVNjYWxlKDAuMGYpCi0gICAgLCBtX3NwZWN1bGFyQ29uc3RhbnQo
MC4wZikKLSAgICAsIG1fc3BlY3VsYXJFeHBvbmVudCgwLjBmKQotICAgICwgbV9rZXJuZWxVbml0
TGVuZ3RoWCgwLjBmKQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWSgwLjBmKQotICAgICwgbV9s
aWdodFNvdXJjZSgwKQorRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmls
dGVyRWZmZWN0KiBpbiwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGNvbnN0IGZsb2F0JiBz
dXJmYWNlU2NhbGUsCisgICAgY29uc3QgZmxvYXQmIHNwZWN1bGFyQ29uc3RhbnQsIGNvbnN0IGZs
b2F0JiBzcGVjdWxhckV4cG9uZW50LCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFgsCisg
ICAgY29uc3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhZLCBMaWdodFNvdXJjZSogbGlnaHRTb3Vy
Y2UpCisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1fbGlnaHRp
bmdDb2xvcihsaWdodGluZ0NvbG9yKQorICAgICwgbV9zdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxl
KQorICAgICwgbV9zcGVjdWxhckNvbnN0YW50KHNwZWN1bGFyQ29uc3RhbnQpCisgICAgLCBtX3Nw
ZWN1bGFyRXhwb25lbnQoc3BlY3VsYXJFeHBvbmVudCkKKyAgICAsIG1fa2VybmVsVW5pdExlbmd0
aFgoa2VybmVsVW5pdExlbmd0aFgpCisgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhZKGtlcm5lbFVu
aXRMZW5ndGhZKQorICAgICwgbV9saWdodFNvdXJjZShsaWdodFNvdXJjZSkKIHsKIH0KIAotUGFz
c1JlZlB0cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmc+IFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6Y3Jl
YXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZFU3BlY3VsYXJMaWdo
dGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3Qg
Q29sb3ImIGxpZ2h0aW5nQ29sb3IsCisgICAgY29uc3QgZmxvYXQmIHN1cmZhY2VTY2FsZSwgY29u
c3QgZmxvYXQmIHNwZWN1bGFyQ29uc3RhbnQsIGNvbnN0IGZsb2F0JiBzcGVjdWxhckV4cG9uZW50
LAorICAgIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWCwgY29uc3QgZmxvYXQmIGtlcm5l
bFVuaXRMZW5ndGhZLCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTVkdGRVNwZWN1bGFyTGlnaHRpbmcoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGRVNwZWN1bGFyTGlnaHRpbmcoaW4sIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VT
Y2FsZSwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwKKyAgICAgICAga2VybmVs
VW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkpOwogfQogCi1TVkdG
RVNwZWN1bGFyTGlnaHRpbmc6On5TVkdGRVNwZWN1bGFyTGlnaHRpbmcoKQorRkVTcGVjdWxhckxp
Z2h0aW5nOjp+RkVTcGVjdWxhckxpZ2h0aW5nKCkKIHsKIH0KIAotQ29sb3IgU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QKK0NvbG9yIEZFU3BlY3VsYXJMaWdodGlu
Zzo6bGlnaHRpbmdDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGlnaHRpbmdDb2xvcjsK
IH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29sb3IoY29uc3Qg
Q29sb3ImIGxpZ2h0aW5nQ29sb3IpCit2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRp
bmdDb2xvcihjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcikKIHsKICAgICBtX2xpZ2h0aW5nQ29s
b3IgPSBsaWdodGluZ0NvbG9yOwogfQogCi1mbG9hdCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnN1
cmZhY2VTY2FsZSgpIGNvbnN0CitmbG9hdCBGRVNwZWN1bGFyTGlnaHRpbmc6OnN1cmZhY2VTY2Fs
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3VyZmFjZVNjYWxlOwogfQogCi12b2lkIFNWR0ZF
U3BlY3VsYXJMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxlKGZsb2F0IHN1cmZhY2VTY2FsZSkKK3Zv
aWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUoZmxvYXQgc3VyZmFjZVNjYWxl
KQogewogICAgIG1fc3VyZmFjZVNjYWxlID0gc3VyZmFjZVNjYWxlOwogfQogCi1mbG9hdCBTVkdG
RVNwZWN1bGFyTGlnaHRpbmc6OnNwZWN1bGFyQ29uc3RhbnQoKSBjb25zdAorZmxvYXQgRkVTcGVj
dWxhckxpZ2h0aW5nOjpzcGVjdWxhckNvbnN0YW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
cGVjdWxhckNvbnN0YW50OwogfQogCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6c2V0U3Bl
Y3VsYXJDb25zdGFudChmbG9hdCBzcGVjdWxhckNvbnN0YW50KQordm9pZCBGRVNwZWN1bGFyTGln
aHRpbmc6OnNldFNwZWN1bGFyQ29uc3RhbnQoZmxvYXQgc3BlY3VsYXJDb25zdGFudCkKIHsKICAg
ICBtX3NwZWN1bGFyQ29uc3RhbnQgPSBzcGVjdWxhckNvbnN0YW50OwogfQogCi1mbG9hdCBTVkdG
RVNwZWN1bGFyTGlnaHRpbmc6OnNwZWN1bGFyRXhwb25lbnQoKSBjb25zdAorZmxvYXQgRkVTcGVj
dWxhckxpZ2h0aW5nOjpzcGVjdWxhckV4cG9uZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
cGVjdWxhckV4cG9uZW50OwogfQogCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6c2V0U3Bl
Y3VsYXJFeHBvbmVudChmbG9hdCBzcGVjdWxhckV4cG9uZW50KQordm9pZCBGRVNwZWN1bGFyTGln
aHRpbmc6OnNldFNwZWN1bGFyRXhwb25lbnQoZmxvYXQgc3BlY3VsYXJFeHBvbmVudCkKIHsKICAg
ICBtX3NwZWN1bGFyRXhwb25lbnQgPSBzcGVjdWxhckV4cG9uZW50OwogfQogCi1mbG9hdCBTVkdG
RVNwZWN1bGFyTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QKK2Zsb2F0IEZFU3Bl
Y3VsYXJMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFgoKSBjb25zdAogewogICAgIHJldHVybiBt
X2tlcm5lbFVuaXRMZW5ndGhYOwogfQogCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6c2V0
S2VybmVsVW5pdExlbmd0aFgoZmxvYXQga2VybmVsVW5pdExlbmd0aFgpCit2b2lkIEZFU3BlY3Vs
YXJMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQga2VybmVsVW5pdExlbmd0aFgp
CiB7CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWCA9IGtlcm5lbFVuaXRMZW5ndGhYOwogfQogCi1m
bG9hdCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QKK2Zs
b2F0IEZFU3BlY3VsYXJMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdAogewogICAg
IHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhZOwogfQogCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdo
dGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCit2b2lk
IEZFU3BlY3VsYXJMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQga2VybmVsVW5p
dExlbmd0aFkpCiB7CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWSA9IGtlcm5lbFVuaXRMZW5ndGhZ
OwogfQogCi1jb25zdCBMaWdodFNvdXJjZSogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpsaWdodFNv
dXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSogRkVTcGVjdWxhckxpZ2h0aW5nOjpsaWdo
dFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAK
LXZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSog
bGlnaHRTb3VyY2UpCit2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UoTGln
aHRTb3VyY2UqIGxpZ2h0U291cmNlKQogewogICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJj
ZTsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAordm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6
OmFwcGx5KCkKIHsKLSAgICB0cyA8PCAiW3R5cGU9U1BFQ1VMQVItTElHSFRJTkddICI7Ci0gICAg
U1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKLSAgICB0cyA8PCAi
IFtzdXJmYWNlIHNjYWxlPSIgPDwgbV9zdXJmYWNlU2NhbGUgPDwgIl0iCi0gICAgICAgIDw8ICIg
W3NwZWN1YWwgY29uc3RhbnQ9IiA8PCBtX3NwZWN1bGFyQ29uc3RhbnQgPDwgIl0iCi0gICAgICAg
IDw8ICIgW3NwZWN1bGFyIGV4cG9uZW50PSIgPDwgbV9zcGVjdWxhckV4cG9uZW50IDw8ICJdIjsK
K30KKwordm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OmR1bXAoKQoreworfQorCitUZXh0U3RyZWFt
JiBGRVNwZWN1bGFyTGlnaHRpbmc6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMpIGNvbnN0Cit7CisgICAgdHMgPDwgIlt0eXBlPVNQRUNVTEFSLUxJR0hUSU5HXSAiCisgICAg
ICAgIDw8ICIgW2luMT0iIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1faW4uZ2V0KCkp
IDw8ICJdIjsKKyAgICAgICAgCiAgICAgcmV0dXJuIHRzOwogfQogCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHJl
dmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNTMgKzI1LDU0IEBACiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiU1ZHTGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
VkdGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0ZShTVkdS
ZXNvdXJjZUZpbHRlciopOwotICAgIHZpcnR1YWwgflNWR0ZFU3BlY3VsYXJMaWdodGluZygpOwot
Ci0gICAgQ29sb3IgbGlnaHRpbmdDb2xvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0TGlnaHRpbmdD
b2xvcihjb25zdCBDb2xvciYpOwotCi0gICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRTdXJmYWNlU2NhbGUoZmxvYXQpOwotCi0gICAgZmxvYXQgc3BlY3VsYXJDb25z
dGFudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3BlY3VsYXJDb25zdGFudChmbG9hdCk7Ci0KLSAg
ICBmbG9hdCBzcGVjdWxhckV4cG9uZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTcGVjdWxhckV4
cG9uZW50KGZsb2F0KTsKLQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCk7Ci0KLSAgICBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWSgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQp
OwotCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFt
JiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRG
T1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVj
dCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRVNwZWN1bGFyTGln
aHRpbmcoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsK
LSAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKLSAgICBmbG9hdCBtX3NwZWN1bGFyQ29uc3RhbnQ7
Ci0gICAgZmxvYXQgbV9zcGVjdWxhckV4cG9uZW50OwotICAgIGZsb2F0IG1fa2VybmVsVW5pdExl
bmd0aFg7Ci0gICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWTsKLSAgICBSZWZQdHI8TGlnaHRT
b3VyY2U+IG1fbGlnaHRTb3VyY2U7Ci19OworICAgIGNsYXNzIEZFU3BlY3VsYXJMaWdodGluZyA6
IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgQ29s
b3ImLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0
JiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0U291cmNlKik7CisgICAgICAgIHZp
cnR1YWwgfkZFU3BlY3VsYXJMaWdodGluZygpOworCisgICAgICAgIENvbG9yIGxpZ2h0aW5nQ29s
b3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7
CisKKyAgICAgICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
U3VyZmFjZVNjYWxlKGZsb2F0KTsKKworICAgICAgICBmbG9hdCBzcGVjdWxhckNvbnN0YW50KCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3BlY3VsYXJDb25zdGFudChmbG9hdCk7CisKKyAgICAg
ICAgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNwZWN1
bGFyRXhwb25lbnQoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQpOworCisgICAg
ICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2Vy
bmVsVW5pdExlbmd0aFkoZmxvYXQpOworCisgICAgICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdo
dFNvdXJjZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNl
Kik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkdW1wKCk7CisgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYgdHMpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVTcGVjdWxhckxp
Z2h0aW5nKEZpbHRlckVmZmVjdCosIGNvbnN0IENvbG9yJiwgY29uc3QgZmxvYXQmLCBjb25zdCBm
bG9hdCYsIGNvbnN0IGZsb2F0JiwKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxv
YXQmLCBMaWdodFNvdXJjZSopOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47
CisgICAgICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKKyAgICAgICAgZmxvYXQgbV9zdXJmYWNl
U2NhbGU7CisgICAgICAgIGZsb2F0IG1fc3BlY3VsYXJDb25zdGFudDsKKyAgICAgICAgZmxvYXQg
bV9zcGVjdWxhckV4cG9uZW50OworICAgICAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhYOwor
ICAgICAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhZOworICAgICAgICBSZWZQdHI8TGlnaHRT
b3VyY2U+IG1fbGlnaHRTb3VyY2U7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCShyZXZp
c2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTQgKzI0LDMxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU1ZHRkVUaWxlOjpTVkdGRVRpbGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAg
ICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIpCitGRVRpbGU6OkZFVGlsZShGaWx0ZXJFZmZlY3Qq
IGluKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4pCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8U1ZHRkVUaWxlPiBTVkdGRVRpbGU6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmls
dGVyKQorUGFzc1JlZlB0cjxGRVRpbGU+IEZFVGlsZTo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4p
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGRVRpbGUoZmlsdGVyKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBGRVRpbGUoaW4pKTsKK30KKwordm9pZCBGRVRpbGU6OmFwcGx5KCkK
K3sKK30KKwordm9pZCBGRVRpbGU6OmR1bXAoKQoreworfQorCitUZXh0U3RyZWFtJiBGRVRpbGU6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMg
PDwgIlt0eXBlPVRJTEVdICIKKyAgICAgICAgPDwgIiBbaW4xPSIgPDwgcmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4obV9pbi5nZXQoKSkgPDwgIl0iOworICAgICAgICAKKyAgICByZXR1cm4gdHM7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVUaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRVRpbGUuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyMCArMjMsMjIg
QEAKICNkZWZpbmUgU1ZHRkVUaWxlX2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotICAgIGNsYXNzIFNWR0ZFVGls
ZSA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgeworICAgIGNsYXNzIEZFVGlsZSA6IHB1YmxpYyBG
aWx0ZXJFZmZlY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
RkVUaWxlPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RkVUaWxlPiBjcmVhdGUoRmlsdGVyRWZmZWN0Kik7CiAKLSAgICAjaWYgUExBVEZPUk0o
Q0kpCi0gICAgICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVj
dCYgYmJveCkgY29uc3Q7Ci0gICAgI2VuZGlmCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKKyAgICAgICAgCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgU1ZHRkVUaWxlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KKyAgICAg
ICAgRkVUaWxlKEZpbHRlckVmZmVjdCopOworICAgICAgICAKKyAgICAgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gbV9pbjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCShy
ZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJi
dWxlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTA3ICsyNyw5NyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVNWR0ZFVHVyYnVsZW5jZTo6U1ZHRkVUdXJidWxlbmNlKFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwg
bV9iYXNlRnJlcXVlbmN5WCgwLjBmKQotICAgICwgbV9iYXNlRnJlcXVlbmN5WSgwLjBmKQotICAg
ICwgbV9udW1PY3RhdmVzKDApCi0gICAgLCBtX3NlZWQoMCkKLSAgICAsIG1fc3RpdGNoVGlsZXMo
ZmFsc2UpCi0gICAgLCBtX3R5cGUoU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOKQorRkVUdXJi
dWxlbmNlOjpGRVR1cmJ1bGVuY2UoVHVyYnVsYW5jZVR5cGUgdHlwZSwgY29uc3QgZmxvYXQmIGJh
c2VGcmVxdWVuY3lYLCBjb25zdCBmbG9hdCYgYmFzZUZyZXF1ZW5jeVksCisgICAgY29uc3QgaW50
JiBudW1PY3RhdmVzLCBjb25zdCBmbG9hdCYgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcykKKyAgICA6
IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fYmFzZUZyZXF1ZW5j
eVgoYmFzZUZyZXF1ZW5jeVgpCisgICAgLCBtX2Jhc2VGcmVxdWVuY3lZKGJhc2VGcmVxdWVuY3lZ
KQorICAgICwgbV9udW1PY3RhdmVzKG51bU9jdGF2ZXMpCisgICAgLCBtX3NlZWQoc2VlZCkKKyAg
ICAsIG1fc3RpdGNoVGlsZXMoc3RpdGNoVGlsZXMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVU
dXJidWxlbmNlPiBTVkdGRVR1cmJ1bGVuY2U6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmls
dGVyKQorUGFzc1JlZlB0cjxGRVR1cmJ1bGVuY2U+IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKFR1cmJ1
bGFuY2VUeXBlIHR5cGUsIGNvbnN0IGZsb2F0JiBiYXNlRnJlcXVlbmN5WCwgY29uc3QgZmxvYXQm
IGJhc2VGcmVxdWVuY3lZLAorICAgIGNvbnN0IGludCYgbnVtT2N0YXZlcywgY29uc3QgZmxvYXQm
IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdG
RVR1cmJ1bGVuY2UoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRVR1cmJ1bGVu
Y2UodHlwZSwgYmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lZLCBudW1PY3RhdmVzLCBzZWVk
LCBzdGl0Y2hUaWxlcykpOwogfQogCi1TVkdUdXJidWxhbmNlVHlwZSBTVkdGRVR1cmJ1bGVuY2U6
OnR5cGUoKSBjb25zdAorVHVyYnVsYW5jZVR5cGUgRkVUdXJidWxlbmNlOjp0eXBlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV90eXBlOwogfQogCi12b2lkIFNWR0ZFVHVyYnVsZW5jZTo6c2V0VHlw
ZShTVkdUdXJidWxhbmNlVHlwZSB0eXBlKQordm9pZCBGRVR1cmJ1bGVuY2U6OnNldFR5cGUoVHVy
YnVsYW5jZVR5cGUgdHlwZSkKIHsKICAgICBtX3R5cGUgPSB0eXBlOwogfQogCi1mbG9hdCBTVkdG
RVR1cmJ1bGVuY2U6OmJhc2VGcmVxdWVuY3lZKCkgY29uc3QKK2Zsb2F0IEZFVHVyYnVsZW5jZTo6
YmFzZUZyZXF1ZW5jeVkoKSBjb25zdAogewogICAgIHJldHVybiBtX2Jhc2VGcmVxdWVuY3lZOwog
fQogCi12b2lkIFNWR0ZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1ZW5jeVkoZmxvYXQgYmFzZUZy
ZXF1ZW5jeVkpCit2b2lkIEZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1ZW5jeVkoZmxvYXQgYmFz
ZUZyZXF1ZW5jeVkpCiB7CiAgICAgbV9iYXNlRnJlcXVlbmN5WSA9IGJhc2VGcmVxdWVuY3lZOwog
fQogCi1mbG9hdCBTVkdGRVR1cmJ1bGVuY2U6OmJhc2VGcmVxdWVuY3lYKCkgY29uc3QKK2Zsb2F0
IEZFVHVyYnVsZW5jZTo6YmFzZUZyZXF1ZW5jeVgoKSBjb25zdAogewogICAgIHJldHVybiBtX2Jh
c2VGcmVxdWVuY3lYOwogfQogCi12b2lkIFNWR0ZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1ZW5j
eVgoZmxvYXQgYmFzZUZyZXF1ZW5jeVgpCit2b2lkIEZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1
ZW5jeVgoZmxvYXQgYmFzZUZyZXF1ZW5jeVgpCiB7CiAgICAgICAgbV9iYXNlRnJlcXVlbmN5WCA9
IGJhc2VGcmVxdWVuY3lYOwogfQogCi1mbG9hdCBTVkdGRVR1cmJ1bGVuY2U6OnNlZWQoKSBjb25z
dAorZmxvYXQgRkVUdXJidWxlbmNlOjpzZWVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZWVk
OyAKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2U6OnNldFNlZWQoZmxvYXQgc2VlZCkKK3ZvaWQg
RkVUdXJidWxlbmNlOjpzZXRTZWVkKGZsb2F0IHNlZWQpCiB7CiAgICAgbV9zZWVkID0gc2VlZDsK
IH0KIAotaW50IFNWR0ZFVHVyYnVsZW5jZTo6bnVtT2N0YXZlcygpIGNvbnN0CitpbnQgRkVUdXJi
dWxlbmNlOjpudW1PY3RhdmVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9udW1PY3RhdmVzOwog
fQogCi12b2lkIFNWR0ZFVHVyYnVsZW5jZTo6c2V0TnVtT2N0YXZlcyhib29sIG51bU9jdGF2ZXMp
Cit2b2lkIEZFVHVyYnVsZW5jZTo6c2V0TnVtT2N0YXZlcyhib29sIG51bU9jdGF2ZXMpCiB7CiAg
ICAgbV9udW1PY3RhdmVzID0gbnVtT2N0YXZlczsKIH0KIAotYm9vbCBTVkdGRVR1cmJ1bGVuY2U6
OnN0aXRjaFRpbGVzKCkgY29uc3QKK2Jvb2wgRkVUdXJidWxlbmNlOjpzdGl0Y2hUaWxlcygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fc3RpdGNoVGlsZXM7CiB9CiAKLXZvaWQgU1ZHRkVUdXJidWxl
bmNlOjpzZXRTdGl0Y2hUaWxlcyhib29sIHN0aXRjaCkKK3ZvaWQgRkVUdXJidWxlbmNlOjpzZXRT
dGl0Y2hUaWxlcyhib29sIHN0aXRjaCkKIHsKICAgICBtX3N0aXRjaFRpbGVzID0gc3RpdGNoOwog
fQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU1ZHVHVy
YnVsYW5jZVR5cGUgdCkKK3ZvaWQgRkVUdXJidWxlbmNlOjphcHBseSgpCiB7Ci0gICAgc3dpdGNo
ICh0KQotICAgIHsKLSAgICAgICAgY2FzZSBTVkdfVFVSQlVMRU5DRV9UWVBFX1VOS05PV046Ci0g
ICAgICAgICAgICB0cyA8PCAiVU5LTk9XTiI7IGJyZWFrOwotICAgICAgICBjYXNlIFNWR19UVVJC
VUxFTkNFX1RZUEVfVFVSQlVMRU5DRToKLSAgICAgICAgICAgIHRzIDw8ICJUVVJCVUxBTkNFIjsg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0U6Ci0g
ICAgICAgICAgICB0cyA8PCAiTk9JU0UiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwog
fQogCi1UZXh0U3RyZWFtJiBTVkdGRVR1cmJ1bGVuY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit2b2lkIEZFVHVyYnVsZW5jZTo6ZHVtcCgpCit7Cit9CisK
K1RleHRTdHJlYW0mIEZFVHVyYnVsZW5jZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cykgY29uc3QKIHsKICAgICB0cyA8PCAiW3R5cGU9VFVSQlVMRU5DRV0gIjsKLSAgICBT
VkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICIg
W3R1cmJ1bGVuY2UgdHlwZT0iIDw8IHR5cGUoKSA8PCAiXSIKLSAgICAgICAgPDwgIiBbYmFzZSBm
cmVxdWVuY3kgeD0iIDw8IGJhc2VGcmVxdWVuY3lYKCkgPDwgIiB5PSIgPDwgYmFzZUZyZXF1ZW5j
eVkoKSA8PCAiXSIKLSAgICAgICAgPDwgIiBbc2VlZD0iIDw8IHNlZWQoKSA8PCAiXSIKLSAgICAg
ICAgPDwgIiBbbnVtIG9jdGF2ZXM9IiA8PCBudW1PY3RhdmVzKCkgPDwgIl0iCi0gICAgICAgIDw8
ICIgW3N0aXRjaCB0aWxlcz0iIDw8IHN0aXRjaFRpbGVzKCkgPDwgIl0iOworICAgICAgICAKICAg
ICByZXR1cm4gdHM7Ci0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiAz
NTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDUwICsyMyw1NCBAQAogI2RlZmluZSBTVkdGRVR1cmJ1bGVu
Y2VfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUg
IlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWVudW0gU1ZHVHVyYnVsYW5jZVR5cGUgewotICAgIFNWR19UVVJCVUxF
TkNFX1RZUEVfVU5LTk9XTiAgICAgID0gMCwKLSAgICBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNU
QUxOT0lTRSA9IDEsCi0gICAgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFICAgPSAyCi19
OwotCi1jbGFzcyBTVkdGRVR1cmJ1bGVuY2UgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRVR1cmJ1bGVuY2U+IGNyZWF0ZShTVkdS
ZXNvdXJjZUZpbHRlciopOwotCi0gICAgU1ZHVHVyYnVsYW5jZVR5cGUgdHlwZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0VHlwZShTVkdUdXJidWxhbmNlVHlwZSk7Ci0KLSAgICBmbG9hdCBiYXNlRnJl
cXVlbmN5WSgpIGNvbnN0OwotICAgIHZvaWQgc2V0QmFzZUZyZXF1ZW5jeVkoZmxvYXQpOwotCi0g
ICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVgoKSBjb25zdDsKLSAgICB2b2lkIHNldEJhc2VGcmVxdWVu
Y3lYKGZsb2F0KTsKLQotICAgIGZsb2F0IHNlZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFNlZWQo
ZmxvYXQpOwotCi0gICAgaW50IG51bU9jdGF2ZXMoKSBjb25zdDsKLSAgICB2b2lkIHNldE51bU9j
dGF2ZXMoYm9vbCk7Ci0KLSAgICBib29sIHN0aXRjaFRpbGVzKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRTdGl0Y2hUaWxlcyhib29sKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVU
dXJidWxlbmNlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBmbG9hdCBtX2Jhc2VGcmVxdWVu
Y3lYOwotICAgIGZsb2F0IG1fYmFzZUZyZXF1ZW5jeVk7Ci0gICAgaW50IG1fbnVtT2N0YXZlczsK
LSAgICBmbG9hdCBtX3NlZWQ7Ci0gICAgYm9vbCBtX3N0aXRjaFRpbGVzOwotICAgIFNWR1R1cmJ1
bGFuY2VUeXBlIG1fdHlwZTsKLX07CisgICAgZW51bSBUdXJidWxhbmNlVHlwZSB7CisgICAgICAg
IEZFVFVSQlVMRU5DRV9UWVBFX1VOS05PV04gICAgICA9IDAsCisgICAgICAgIEZFVFVSQlVMRU5D
RV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDEsCisgICAgICAgIEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJV
TEVOQ0UgICA9IDIKKyAgICB9OworCisgICAgY2xhc3MgRkVUdXJidWxlbmNlIDogcHVibGljIEZp
bHRlckVmZmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVR1
cmJ1bGVuY2U+IGNyZWF0ZShUdXJidWxhbmNlVHlwZSwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9h
dCYsIGNvbnN0IGludCYsIGNvbnN0IGZsb2F0JiwKKyAgICAgICAgICAgICAgICBib29sKTsKKwor
ICAgICAgICBUdXJidWxhbmNlVHlwZSB0eXBlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VHlw
ZShUdXJidWxhbmNlVHlwZSk7CisKKyAgICAgICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVkoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRCYXNlRnJlcXVlbmN5WShmbG9hdCk7CisKKyAgICAgICAgZmxv
YXQgYmFzZUZyZXF1ZW5jeVgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRCYXNlRnJlcXVlbmN5
WChmbG9hdCk7CisKKyAgICAgICAgZmxvYXQgc2VlZCgpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dFNlZWQoZmxvYXQpOworCisgICAgICAgIGludCBudW1PY3RhdmVzKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0TnVtT2N0YXZlcyhib29sKTsKKworICAgICAgICBib29sIHN0aXRjaFRpbGVzKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3RpdGNoVGlsZXMoYm9vbCk7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAg
IFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVUdXJidWxlbmNlKFR1cmJ1bGFuY2VUeXBlLCBj
b25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgY29uc3QgaW50JiwgY29uc3QgZmxvYXQmLAorICAg
ICAgICAgICAgICAgIGJvb2wpOworCisgICAgICAgIFR1cmJ1bGFuY2VUeXBlIG1fdHlwZTsKKyAg
ICAgICAgZmxvYXQgbV9iYXNlRnJlcXVlbmN5WDsKKyAgICAgICAgZmxvYXQgbV9iYXNlRnJlcXVl
bmN5WTsKKyAgICAgICAgaW50IG1fbnVtT2N0YXZlczsKKyAgICAgICAgZmxvYXQgbV9zZWVkOwor
ICAgICAgICBib29sIG1fc3RpdGNoVGlsZXM7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9jZy9TVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw3NCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQotI2ltcG9ydCAiV0tE
aWZmdXNlTGlnaHRpbmdGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRl
ciogU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJv
eCkgY29uc3QKLXsKLSAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHQgPSBsaWdodFNvdXJjZSgp
OwotICAgIGlmICghbGlnaHQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbV0tEaWZmdXNl
TGlnaHRpbmdGaWx0ZXIgY2xhc3NdOwotCi0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRl
ciA9IGZpbHRlcigpOwotICAgIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKiBmaWx0
ZXJQbGF0Zm9ybURhdGEgPSBzdGF0aWNfY2FzdDxTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0
YU1hYyo+KHN2Z0ZpbHRlci0+cGxhdGZvcm1EYXRhKCkpOwotCi0gICAgQ0lGaWx0ZXIqIGZpbHRl
cjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgZmlsdGVyID0gW0NJRmls
dGVyIGZpbHRlcldpdGhOYW1lOkAiV0tEaWZmdXNlTGlnaHRpbmciXTsKLSAgICBpZiAoIWZpbHRl
cikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAg
IENJSW1hZ2UqIGlucHV0SW1hZ2UgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhp
cyk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIENJRmlsdGVy
KiBub3JtYWxzID0gZ2V0Tm9ybWFsTWFwKGlucHV0SW1hZ2UsIHN1cmZhY2VTY2FsZSgpKTsKLSAg
ICBpZiAoIW5vcm1hbHMpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBDSUZpbHRlciogbGln
aHRWZWN0b3JzID0gZ2V0TGlnaHRWZWN0b3JzKG5vcm1hbHMsIGxpZ2h0LCBzdXJmYWNlU2NhbGUo
KSk7Ci0gICAgaWYgKCFsaWdodFZlY3RvcnMpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBb
ZmlsdGVyIHNldFZhbHVlOltub3JtYWxzIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JL
ZXk6QCJpbnB1dE5vcm1hbE1hcCJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2xpZ2h0VmVjdG9y
cyB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gZm9yS2V5OkAiaW5wdXRMaWdodFZlY3RvcnMi
XTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmNpQ29sb3IobGlnaHRpbmdDb2xvcigpKSBmb3JLZXk6
QCJpbnB1dExpZ2h0aW5nQ29sb3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoRmxvYXQ6c3VyZmFjZVNjYWxlKCldIGZvcktleTpAImlucHV0U3VyZmFjZVNjYWxl
Il07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmRpZmZ1
c2VDb25zdGFudCgpXSBmb3JLZXk6QCJpbnB1dERpZmZ1c2VDb25zdGFudCJdOwotICAgIFtmaWx0
ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDprZXJuZWxVbml0TGVuZ3RoWCgp
XSBmb3JLZXk6QCJpbnB1dEtlcm5lbFVuaXRMZW5ndGhYIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1
ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Omtlcm5lbFVuaXRMZW5ndGhZKCldIGZvcktleTpA
ImlucHV0S2VybmVsVW5pdExlbmd0aFkiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVH
SU9OKGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURpc3BsYWNlbWVudE1h
cENnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
Y2cvU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCww
IEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVj
dAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCi0jaW5jbHVkZSAi
U1ZHRkVIZWxwZXJzQ2cuaCIKLQotI2ltcG9ydCAiV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVEaXNwbGFjZW1lbnRNYXA6
OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBTVkdSZXNv
dXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQ
bGF0Zm9ybURhdGFNYWMqIGZpbHRlclBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291
cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0K
LSAgICBDSUZpbHRlciogZmlsdGVyID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKLSAgICBbV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIgY2xhc3NdOwotICAgIGZpbHRlciA9
IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLRGlzcGxhY2VtZW50TWFwRmlsdGVyIl07Ci0g
ICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0gICAgQ0lJbWFnZSogaW5wdXRJbWFnZSA9IGZpbHRl
clBsYXRmb3JtRGF0YS0+aW5wdXRJbWFnZSh0aGlzKTsKLSAgICBDSUltYWdlKiBkaXNwbGFjZW1l
bnRNYXAgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmltYWdlRm9yTmFtZShpbjIoKSk7Ci0gICAgRkVf
UVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIEZFX1FVQVJUWl9DSEVDS19JTlBV
VChkaXNwbGFjZW1lbnRNYXApOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JL
ZXk6QCJpbnB1dEltYWdlIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpkaXNwbGFjZW1lbnRNYXAg
Zm9yS2V5OkAiaW5wdXREaXNwbGFjZW1lbnRNYXAiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmdl
dFZlY3RvckZvckNoYW5uZWwoeENoYW5uZWxTZWxlY3RvcigpKSBmb3JLZXk6QCJpbnB1dFhDaGFu
bmVsU2VsZWN0b3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmdldFZlY3RvckZvckNoYW5uZWwo
eUNoYW5uZWxTZWxlY3RvcigpKSBmb3JLZXk6QCJpbnB1dFlDaGFubmVsU2VsZWN0b3IiXTsKLSAg
ICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c2NhbGUoKV0gZm9y
S2V5OkAiaW5wdXRTY2FsZSJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJv
eCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tCShyZXZpc2lvbiAzNTAwNikKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVGbG9v
ZC5oIgotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxw
ZXJzQ2cuaCIKLSNpbmNsdWRlICJDZ1N1cHBvcnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1DSUZpbHRlciogU1ZHRkVGbG9vZDo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94
KSBjb25zdAotewotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsK
LSAgICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZvcm1EYXRh
ID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihzdmdGaWx0
ZXItPnBsYXRmb3JtRGF0YSgpKTsKLSAgICBDSUZpbHRlciogZmlsdGVyOwotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5h
bWU6QCJDSUNvbnN0YW50Q29sb3JHZW5lcmF0b3IiXTsKLSAgICBbZmlsdGVyIHNldERlZmF1bHRz
XTsKLSAgICBDR0NvbG9yUmVmIGNvbG9yID0gY2dDb2xvcihmbG9vZENvbG9yKCkpOwotICAgIENH
Q29sb3JSZWYgd2l0aEFscGhhID0gQ0dDb2xvckNyZWF0ZUNvcHlXaXRoQWxwaGEoY29sb3IsIENH
Q29sb3JHZXRBbHBoYShjb2xvcikgKiBmbG9vZE9wYWNpdHkoKSk7Ci0gICAgQ0lDb2xvciogaW5w
dXRDb2xvciA9IFtDSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6d2l0aEFscGhhXTsKLSAgICBDR0Nv
bG9yUmVsZWFzZShjb2xvcik7Ci0gICAgQ0dDb2xvclJlbGVhc2Uod2l0aEFscGhhKTsKLSAgICBb
ZmlsdGVyIHNldFZhbHVlOmlucHV0Q29sb3IgZm9yS2V5OkAiaW5wdXRDb2xvciJdOwotCi0gICAg
RkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9S
RVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVHYXVzc2lh
bkJsdXJDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1NWR0ZFR2F1c3NpYW5CbHVyQ2cubW0JKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUdhdXNzaWFuQmx1ckNnLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXIuaCIK
LSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJ
RmlsdGVyKiBTVkdGRUdhdXNzaWFuQmx1cjo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBi
Ym94KSBjb25zdAotewotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIo
KTsKLSAgICBGRV9RVUFSVFpfU0VUVVBfSU5QVVQoQCJDSUdhdXNzaWFuUHlyYW1pZCIpOwotCi0g
ICAgZmxvYXQgaW5wdXRSYWRpdXMgPSBzdGREZXZpYXRpb25YKCk7Ci0gICAgaWYgKGlucHV0UmFk
aXVzICE9IHN0ZERldmlhdGlvblkoKSkgewotICAgICAgICBmbG9hdCBpbnB1dEFzcGVjdFJhdGlv
ID0gc3RkRGV2aWF0aW9uWCgpL3N0ZERldmlhdGlvblkoKTsKLSAgICAgICAgLy8gRklYTUU6IGlu
cHV0QXNwZWN0UmF0aW8gb25seSBzdXBwb3J0IHRoZSByYW5nZSAuNSB0byAyLjAhCi0gICAgICAg
IFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDppbnB1dEFzcGVjdFJh
dGlvXSBmb3JLZXk6QCJpbnB1dEFzcGVjdFJhdGlvIl07Ci0gICAgfQotICAgIFtmaWx0ZXIgc2V0
VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDppbnB1dFJhZGl1c10gZm9yS2V5OkAiaW5w
dXRSYWRpdXMiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAg
IEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNJVmVjdG9yKiBn
ZXRWZWN0b3JGb3JDaGFubmVsKFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCk7CitDSVZl
Y3RvciogZ2V0VmVjdG9yRm9yQ2hhbm5lbChDaGFubmVsU2VsZWN0b3JUeXBlIGNoYW5uZWwpOwog
Q0lDb2xvciogY2lDb2xvcihjb25zdCBDb2xvciYgYyk7CiAKIC8vIExpZ2h0aW5nCkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cubW0J
KHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
RUhlbHBlcnNDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksMTggKzM5LDE4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ0lWZWN0b3IqIGdldFZlY3RvckZvckNoYW5uZWwoU1ZHQ2hhbm5l
bFNlbGVjdG9yVHlwZSBjaGFubmVsKQorQ0lWZWN0b3IqIGdldFZlY3RvckZvckNoYW5uZWwoQ2hh
bm5lbFNlbGVjdG9yVHlwZSBjaGFubmVsKQogewogICAgIHN3aXRjaCAoY2hhbm5lbCkgewotICAg
IGNhc2UgU1ZHX0NIQU5ORUxfVU5LTk9XTjoKKyAgICBjYXNlIENIQU5ORUxfVU5LTk9XTjoKICAg
ICAgICAgcmV0dXJuIG5pbDsgICAgCi0gICAgY2FzZSBTVkdfQ0hBTk5FTF9SOgorICAgIGNhc2Ug
Q0hBTk5FTF9SOgogICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMGYgWTow
LjBmIFo6MC4wZiBXOjAuMGZdOwotICAgIGNhc2UgU1ZHX0NIQU5ORUxfRzoKKyAgICBjYXNlIENI
QU5ORUxfRzoKICAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6MS4w
ZiBaOjAuMGYgVzowLjBmXTsKLSAgICBjYXNlIFNWR19DSEFOTkVMX0I6CisgICAgY2FzZSBDSEFO
TkVMX0I6CiAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjAuMGYg
WjoxLjBmIFc6MC4wZl07Ci0gICAgY2FzZSBTVkdfQ0hBTk5FTF9BOgorICAgIGNhc2UgQ0hBTk5F
TF9BOgogICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTowLjBmIFo6
MC4wZiBXOjEuMGZdOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVj
dG9yV2l0aFg6MC4wZiBZOjAuMGYgWjowLjBmIFc6MC4wZl07CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSW1hZ2VDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSW1hZ2VDZy5tbQkocmV2aXNpb24gMzUwMDYp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSW1hZ2VDZy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw4MCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZF
SW1hZ2UuaCIKLQotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cu
aCIKLSNpbmNsdWRlICJDZ1N1cHBvcnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZp
bHRlciogU1ZHRkVJbWFnZTo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25z
dAotewotICAgIGlmICghY2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJj
ZUZpbHRlclBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8
U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0
YSgpKTsKLQotICAgIENJRmlsdGVyKiBmaWx0ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwotICAgIENJSW1hZ2UqIGNpSW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdl
OmNhY2hlZEltYWdlKCktPmltYWdlKCktPmdldENHSW1hZ2VSZWYoKV07Ci0KLSAgICBmaWx0ZXIg
PSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUFmZmluZVRyYW5zZm9ybSJdOwotICAgIFtm
aWx0ZXIgc2V0RGVmYXVsdHNdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2lJbWFnZSBmb3JLZXk6
QCJpbnB1dEltYWdlIl07Ci0KLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gY2FjaGVkSW1hZ2Uo
KS0+aW1hZ2UoKS0+cmVjdCgpOwotCi0gICAgLy8gRmxpcCBpbWFnZSBpbnRvIHJpZ2h0IG9yaWdp
bgotICAgIENHQWZmaW5lVHJhbnNmb3JtIGNnVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1N
YWtlKDEuMGYsIDAuMGYsIDAuMGYsIC0xLjBmLCAwLjBmLCBpbWFnZVJlY3QuYm90dG9tKCkpOwot
ICAgIE5TQWZmaW5lVHJhbnNmb3JtKiBuc1RyYW5zZm9ybSA9IFtOU0FmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm1dOwotICAgIFtuc1RyYW5zZm9ybSBzZXRUcmFuc2Zvcm1TdHJ1Y3Q6KigoTlNBZmZp
bmVUcmFuc2Zvcm1TdHJ1Y3QgKikmY2dUcmFuc2Zvcm0pXTsKLSAgICBbZmlsdGVyIHNldFZhbHVl
Om5zVHJhbnNmb3JtIGZvcktleTpAImlucHV0VHJhbnNmb3JtIl07Ci0KLSAgICAvLyBDYWxjdWxh
dGUgY3JvcCByZWN0Ci0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT05fUFJFUEFSRShiYm94
KTsKLQotICAgIC8vIE1hcCBiZXR3ZWVuIHRoZSBpbWFnZSByZWN0YW5nbGUgYW5kIHRoZSBjcm9w
IHJlY3QKLSAgICBpZiAoIWNyb3BSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBDSUZpbHRlciog
c2NhbGVJbWFnZSA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJQWZmaW5lVHJhbnNmb3Jt
Il07Ci0gICAgICAgIFtzY2FsZUltYWdlIHNldERlZmF1bHRzXTsKLSAgICAgICAgW3NjYWxlSW1h
Z2Ugc2V0VmFsdWU6W2ZpbHRlciB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gZm9yS2V5OkAi
aW5wdXRJbWFnZSJdOwotCi0gICAgICAgIGNnVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1N
YWtlTWFwQmV0d2VlblJlY3RzKENHUmVjdChpbWFnZVJlY3QpLCBDR1JlY3QoY3JvcFJlY3QpKTsK
LSAgICAgICAgW25zVHJhbnNmb3JtIHNldFRyYW5zZm9ybVN0cnVjdDoqKChOU0FmZmluZVRyYW5z
Zm9ybVN0cnVjdCAqKSZjZ1RyYW5zZm9ybSldOwotICAgICAgICBbc2NhbGVJbWFnZSBzZXRWYWx1
ZTpuc1RyYW5zZm9ybSBmb3JLZXk6QCJpbnB1dFRyYW5zZm9ybSJdOwotCi0gICAgICAgIGZpbHRl
ciA9IHNjYWxlSW1hZ2U7Ci0gICAgfQotCi0gICAgLy8gQWN0dWFsbHkgYXBwbHkgY3JvcHBpbmcK
LSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTl9BUFBMWShjcm9wUmVjdCk7Ci0gICAgRkVf
UVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
Y2cvU1ZHRkVNZXJnZUNnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvU1ZHRkVNZXJnZUNnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVNZXJnZUNnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDU3ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVNZXJnZS5oIgotI2luY2x1ZGUgIlNW
R0ZFSGVscGVyc0NnLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZF
TWVyZ2U6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBT
VkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VG
aWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRlclBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNW
R1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEo
KSk7Ci0KLSAgICBDSUZpbHRlciogZmlsdGVyID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5wdXRzID0gbWVyZ2VJbnB1
dHMoKTsKLQotICAgIENJSW1hZ2UqIHByZXZpb3VzT3V0cHV0ID0gZmlsdGVyUGxhdGZvcm1EYXRh
LT5pbnB1dEltYWdlKHRoaXMpOwotICAgIGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBpbnB1dHMu
c2l6ZSgpOyB4KyspIHsKLSAgICAgICAgQ0lJbWFnZSogaW5wdXRJbWFnZSA9IGZpbHRlclBsYXRm
b3JtRGF0YS0+aW1hZ2VGb3JOYW1lKGlucHV0c1t4XSk7Ci0gICAgICAgIEZFX1FVQVJUWl9DSEVD
S19JTlBVVChpbnB1dEltYWdlKTsKLSAgICAgICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKHByZXZp
b3VzT3V0cHV0KTsKLSAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAi
Q0lTb3VyY2VPdmVyQ29tcG9zaXRpbmciXTsKLSAgICAgICAgW2ZpbHRlciBzZXREZWZhdWx0c107
Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdl
Il07Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6cHJldmlvdXNPdXRwdXQgZm9yS2V5OkAiaW5w
dXRCYWNrZ3JvdW5kSW1hZ2UiXTsKLSAgICAgICAgcHJldmlvdXNPdXRwdXQgPSBbZmlsdGVyIHZh
bHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKLSAgICB9Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RP
X1NVQlJFR0lPTihiYm94KTsKLSAgICBGRV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRU9mZnNldENnLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVPZmZzZXRDZy5tbQkocmV2
aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFT2Zm
c2V0Q2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0KLSAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRl
ICJTVkdGRU9mZnNldC5oIgotI2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZFT2Zmc2V0OjpnZXRDSUZpbHRlcihjb25zdCBG
bG9hdFJlY3QmIGJib3gpIGNvbnN0Ci17Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRl
ciA9IGZpbHRlcigpOwotICAgIEZFX1FVQVJUWl9TRVRVUF9JTlBVVChAIkNJQWZmaW5lVHJhbnNm
b3JtIik7Ci0gICAgTlNBZmZpbmVUcmFuc2Zvcm0qIG9mZnNldFRyYW5zZm9ybSA9IFtOU0FmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm1dOwotICAgIFtvZmZzZXRUcmFuc2Zvcm0gdHJhbnNsYXRlWEJ5
OmR4KCkgeUJ5OmR5KCldOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6b2Zmc2V0VHJhbnNmb3JtICBm
b3JLZXk6QCJpbnB1dFRyYW5zZm9ybSJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJ
T04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nQ2cubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdDZy5tbQkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L2NnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICsw
LDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9q
ZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWlu
dCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgiCi0jaW5jbHVk
ZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQotI2ltcG9ydCAiV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVy
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZFU3BlY3VsYXJMaWdo
dGluZzo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIGNv
bnN0IExpZ2h0U291cmNlKiBsaWdodCA9IGxpZ2h0U291cmNlKCk7Ci0gICAgaWYgKCFsaWdodCkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFtXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIgY2xh
c3NdOwotCi0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAg
IFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBz
dGF0aWNfY2FzdDxTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+
cGxhdGZvcm1EYXRhKCkpOwotICAgIENJRmlsdGVyKiBmaWx0ZXI7Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpA
IldLU3BlY3VsYXJMaWdodGluZyJdOwotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAgIENJ
SW1hZ2UqIGlucHV0SW1hZ2UgPSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhpcyk7
Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIENJRmlsdGVyKiBu
b3JtYWxzID0gZ2V0Tm9ybWFsTWFwKGlucHV0SW1hZ2UsIHN1cmZhY2VTY2FsZSgpKTsKLSAgICBp
ZiAoIW5vcm1hbHMpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgQ0lGaWx0ZXIqIGxpZ2h0VmVj
dG9ycyA9IGdldExpZ2h0VmVjdG9ycyhub3JtYWxzLCBsaWdodCwgc3VyZmFjZVNjYWxlKCkpOwot
ICAgIGlmICghbGlnaHRWZWN0b3JzKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIFtmaWx0ZXIg
c2V0VmFsdWU6W25vcm1hbHMgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdIGZvcktleTpAImlu
cHV0Tm9ybWFsTWFwIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbbGlnaHRWZWN0b3JzIHZhbHVl
Rm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dExpZ2h0VmVjdG9ycyJdOwotICAg
IFtmaWx0ZXIgc2V0VmFsdWU6Y2lDb2xvcihsaWdodGluZ0NvbG9yKCkpIGZvcktleTpAImlucHV0
TGlnaHRpbmdDb2xvciJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldp
dGhGbG9hdDpzdXJmYWNlU2NhbGUoKV0gZm9yS2V5OkAiaW5wdXRTdXJmYWNlU2NhbGUiXTsKLSAg
ICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3BlY3VsYXJDb25z
dGFudCgpXSBmb3JLZXk6QCJpbnB1dFNwZWN1bGFyQ29uc3RhbnQiXTsKLSAgICBbZmlsdGVyIHNl
dFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3BlY3VsYXJFeHBvbmVudCgpXSBmb3JL
ZXk6QCJpbnB1dFNwZWN1bGFyRXhwb25lbnQiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051
bWJlciBudW1iZXJXaXRoRmxvYXQ6a2VybmVsVW5pdExlbmd0aFgoKV0gZm9yS2V5OkAiaW5wdXRL
ZXJuZWxVbml0TGVuZ3RoWCJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDprZXJuZWxVbml0TGVuZ3RoWSgpXSBmb3JLZXk6QCJpbnB1dEtlcm5lbFVuaXRM
ZW5ndGhZIl07Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lPTihiYm94KTsKLSAgICBG
RV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9jZy9TVkdGRVRpbGVDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1NWR0ZFVGlsZUNnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVUaWxlQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTEs
NDEgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAg
ICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGRVRpbGUuaCIKLSNpbmNsdWRlICJTVkdG
RUhlbHBlcnNDZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRVRp
bGU6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBTVkdS
ZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVyKCk7Ci0gICAgRkVfUVVBUlRaX1NFVFVQ
X0lOUFVUKEAiQ0lBZmZpbmVUaWxlIik7Ci0KLSAgICBGRV9RVUFSVFpfTUFQX1RPX1NVQlJFR0lP
TihiYm94KTsKLSAgICBGRV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsKLX0KLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQo=
</data>
<flag name="review"
          id="9756"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22169</attachid>
            <date>2008-07-09 00:36:09 -0700</date>
            <delta_ts>2008-07-10 00:17:52 -0700</delta_ts>
            <desc>Large Refactoring again</desc>
            <filename>output4.diff</filename>
            <type>text/plain</type>
            <size>147495</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTA2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjY2IEBACisyMDA4LTA3LTA5ICBBbGV4IE1hdGhld3MgIDxwb3NzZXNzZWRwZW5n
dWluYm9iQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBidWcgMTk4MzU6IFdlYktpdCBuZWVkcyBjcm9zcy1wbGF0Zm9ybSBmaWx0ZXIg
c3lzdGVtCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MzU+CisKKyAgICAgICAgTW9yZSBjbGFzcyByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiBm
b3IgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIAorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5k
ZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgICogc3ZnL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVp
bGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojpi
dWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZp
bmRMaWdodHMpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6c3RyaW5nVG9DaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RUZsb29kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWls
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdl
RWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVt
ZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVy
Z2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVs
ZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
T2Zmc2V0RWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zm
c2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWls
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRp
bGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxl
bWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252
b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6
a2VybmVsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJu
ZWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWwpOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6ZGl2aXNvcik6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbnZvbHZlTWF0cml4OjpzZXREaXZpc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9s
dmVNYXRyaXg6OmJpYXMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6c2V0
Qmlhcyk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4Ojp0YXJnZXRPZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6c2V0VGFyZ2V0T2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmVkZ2VNb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEVkZ2VNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFQ29udm9sdmVNYXRyaXg6Omtlcm5lbFVuaXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsVW5pdExlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwcmVzZXJ2ZUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29udm9sdmVNYXRyaXg6OnNldFByZXNlcnZlQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb252b2x2ZU1hdHJpeDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1h
dHJpeDo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdl
YkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAgICAg
KFdlYkNvcmU6Oik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNl
TGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OkZFRGlm
ZnVzZUxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6On5GRURpZmZ1c2VMaWdo
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRpbmdDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c3VyZmFjZVNjYWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmRpZmZ1c2VDb25zdGFudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlmZnVzZUNvbnN0YW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWCk6
CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0
aFgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5n
dGhZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0
TGVuZ3RoWSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0U291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjphcHBseSk6CisgICAgICAg
IChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpG
RURpZmZ1c2VMaWdodGluZzo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURp
c3BsYWNlbWVudE1hcDo6eENoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpGRURp
c3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpG
RURpc3BsYWNlbWVudE1hcDo6eUNoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpG
RURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpc3BsYWNlbWVudE1hcDo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFj
ZW1lbnRNYXA6OnNldFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFw
OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6ZHVtcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxh
Y2VtZW50TWFwOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6KToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRmxvb2Q6OkZFRmxvb2QpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmZsb29kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVGbG9vZDo6c2V0Rmxvb2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpG
RUZsb29kOjpmbG9vZE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6c2V0Rmxv
b2RPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFRmxvb2Q6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6ZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVGbG9vZC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5C
bHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1
cik6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25YKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25YKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFR2F1c3NpYW5CbHVyOjpzdGREZXZpYXRpb25ZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1
c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6ZHVtcCk6
CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFSW1hZ2U6OkZFSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6On5GRUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFSW1hZ2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1h
Z2U6OnNldENhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6RkVJ
bWFnZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
TWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6RkVNZXJnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRU1lcmdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6
bWVyZ2VJbnB1dHMpOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6c2V0TWVyZ2VJbnB1dHMp
OgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
RkVNZXJnZTo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpleHRlcm5hbFJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmg6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6RkVNb3JwaG9sb2d5KToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTW9ycGhvbG9neTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhv
bG9neTo6bW9ycGhvbG9neU9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cmFkaXVzWCk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1gp
OgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpyYWRpdXNZKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWSk6CisgICAgICAgIChXZWJDb3JlOjpGRU1v
cnBob2xvZ3k6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6ZHVtcCk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9y
cGhvbG9neTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFT2Zmc2V0OjpGRU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkeCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRU9mZnNldDo6c2V0RHgpOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpzZXREeSk6CisgICAgICAgIChXZWJDb3JlOjpGRU9m
ZnNldDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmR1bXApOgorICAgICAg
ICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0Lmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3Bl
Y3VsYXJMaWdodGluZzo6fkZFU3BlY3VsYXJMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpG
RVNwZWN1bGFyTGlnaHRpbmc6OmxpZ2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVT
cGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
U3BlY3VsYXJMaWdodGluZzo6c3VyZmFjZVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3Bl
Y3VsYXJMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3Bl
Y3VsYXJMaWdodGluZzo6c3BlY3VsYXJDb25zdGFudCk6CisgICAgICAgIChXZWJDb3JlOjpGRVNw
ZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFyQ29uc3RhbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RkVTcGVjdWxhckxpZ2h0aW5nOjpzcGVjdWxhckV4cG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkZFU3BlY3VsYXJMaWdodGluZzo6c2V0U3BlY3VsYXJFeHBvbmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhYKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFgpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6OmFwcGx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkZFU3BlY3VsYXJMaWdodGluZzo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpGRVNwZWN1
bGFyTGlnaHRpbmc6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OkZF
VGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGRVRpbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6ZHVtcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1
cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
VHVyYnVsZW5jZTo6YmFzZUZyZXF1ZW5jeVkpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpzZXRCYXNlRnJlcXVlbmN5WSk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6
OmJhc2VGcmVxdWVuY3lYKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6c2V0QmFz
ZUZyZXF1ZW5jeVgpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZWVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6c2V0U2VlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2U6Om51bU9jdGF2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpzZXROdW1PY3RhdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6c3Rp
dGNoVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXRTdGl0Y2hUaWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmFwcGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkZFVHVyYnVsZW5jZTo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW06IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUZsb29kQ2cubW06IFJlbW92ZWQuCisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0VmVjdG9yRm9yQ2hhbm5lbCk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVJbWFnZUNnLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFTWVyZ2VDZy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRU9mZnNldENnLm1tOiBSZW1vdmVkLgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1t
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFVGlsZUNn
Lm1tOiBSZW1vdmVkLgorCiAyMDA4LTA3LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzUwMDYpCisrKyBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzAwOSwxNyArMzAwOSw4IEBACiAJCUIyNTU5OTMzMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdS
ZXNvdXJjZUNsaXBwZXJDZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVy
Q2cuY3BwICovOyB9OwogCQlCMjU1OTkzNTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VG
aWx0ZXJDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyNTU5ODk5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tICovOyB9
OwogCQlCMjU1OTkzNzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODlCMEQw
MEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tICovOyB9OwotCQlCMjU1OTkz
QzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEEyMEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tICovOyB9OwotCQlCMjU1OTkzRDBEMDBE
OEJBMDBCQjgyNUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1QyAv
KiBTVkdGRURpc3BsYWNlbWVudE1hcENnLm1tICovOyB9OwotCQlCMjU1OTkzRTBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHRkVGbG9vZENnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5t
bSAqLzsgfTsKLQkJQjI1NTk5M0YwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFR2F1c3NpYW5CbHVy
Q2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1
OThBNTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbSAqLzsgfTsKIAkJ
QjI1NTk5NDAwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThBNjBEMDBEOEI4MDBCQjgy
NUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLzsgfTsKIAkJQjI1NTk5NDEwRDAwRDhCQTAwQkI4MjVD
IC8qIFNWR0ZFSGVscGVyc0NnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI1NTk4QTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLm1t
ICovOyB9OwotCQlCMjU1OTk0MjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJbWFnZUNnLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTgwRDAw
RDhCODAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2VDZy5tbSAqLzsgfTsKLQkJQjI1NTk5NDMwRDAwRDhC
QTAwQkI4MjVDIC8qIFNWR0ZFTWVyZ2VDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRU1lcmdl
Q2cubW0gKi87IH07Ci0JCUIyNTU5OTQ0MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRU9mZnNldENn
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4
QUEwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFT2Zmc2V0Q2cubW0gKi87IH07Ci0JCUIyNTU5OTQ1
MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEFCMEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5tbSAqLzsgfTsKLQkJQjI1NTk5NDYwRDAw
RDhCQTAwQkI4MjVDIC8qIFNWR0ZFVGlsZUNnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QUMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFVGls
ZUNnLm1tICovOyB9OwogCQlCMjU1OTk0NzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRmlsdGVyRWZm
ZWN0Q2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjU1OThBRDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRmlsdGVyRWZmZWN0Q2cubW0gKi87IH07CiAJ
CUIyNTU5OTQ4MEQwMEQ4QkEwMEJCODI1QyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuY2lrZXJuZWwg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEFF
MEQwMEQ4QjkwMEJCODI1QyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuY2lrZXJuZWwgKi87IH07CiAJ
CUIyNTU5OTQ5MEQwMEQ4QkEwMEJCODI1QyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEFGMEQwMEQ4Qjkw
MEJCODI1QyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuaCAqLzsgfTsKQEAgLTczNTcsMTcgKzczNDgs
OCBAQAogCQlCMjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1Jlc291cmNlQ2xp
cHBlckNnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4OTkwRDAwRDhC
ODAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4OUIwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1Jlc291cmNl
TWFza2VyQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZH
UmVzb3VyY2VNYXNrZXJDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4
QTIwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTMwRDAwRDhCODAwQkI4MjVD
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBDZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFRmxvb2RDZy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUZsb29kQ2cu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEE1MEQwMEQ4QjgwMEJCODI1
QyAvKiBTVkdGRUdhdXNzaWFuQmx1ckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNWR0ZFR2F1c3NpYW5CbHVyQ2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNTU5OEE2MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRkVIZWxwZXJzQ2cuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZF
SGVscGVyc0NnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNW
R0ZFSGVscGVyc0NnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThBODBE
MDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVJbWFnZUNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNWR0ZFSW1hZ2VDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQjI1NTk4QTkwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFTWVyZ2VDZy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRU1lcmdlQ2cubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEFBMEQwMEQ4QjgwMEJCODI1QyAvKiBT
VkdGRU9mZnNldENnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFNWR0ZFT2Zmc2V0Q2cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEFC
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QUMwRDAwRDhCODAwQkI4MjVD
IC8qIFNWR0ZFVGlsZUNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNWR0ZFVGlsZUNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThB
RDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRmlsdGVyRWZmZWN0Q2cubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1ZHRmlsdGVyRWZmZWN0Q2cubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEFFMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0FyaXRo
bWV0aWNGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLQXJpdGhtZXRp
Y0ZpbHRlci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QUYw
RDAwRDhCOTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tBcml0aG1ldGljRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTk0NSwxNyArMTE5MjcsOCBAQAogCQlCMjU1OTg5RDBEMDBEOEI4MDBC
QjgyNUMgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCUIyNTU5OEEyMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0NnLm1t
ICovLAotCQkJCUIyNTU5OEEzMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRURpc3BsYWNlbWVudE1h
cENnLm1tICovLAotCQkJCUIyNTU5OEE0MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUZsb29kQ2cu
bW0gKi8sCi0JCQkJQjI1NTk4QTUwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFR2F1c3NpYW5CbHVy
Q2cubW0gKi8sCiAJCQkJQjI1NTk4QTYwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0Nn
LmggKi8sCiAJCQkJQjI1NTk4QTcwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLm1t
ICovLAotCQkJCUIyNTU5OEE4MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUltYWdlQ2cubW0gKi8s
Ci0JCQkJQjI1NTk4QTkwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFTWVyZ2VDZy5tbSAqLywKLQkJ
CQlCMjU1OThBQTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVPZmZzZXRDZy5tbSAqLywKLQkJCQlC
MjU1OThBQjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nQ2cubW0gKi8s
Ci0JCQkJQjI1NTk4QUMwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFVGlsZUNnLm1tICovLAogCQkJ
CUIyNTU5OEFEMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGaWx0ZXJFZmZlY3RDZy5tbSAqLywKIAkJ
CQlCMjU1OThBRTBEMDBEOEI5MDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmNpa2VybmVs
ICovLAogCQkJCUIyNTU5OEFGMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIu
aCAqLywKQEAgLTE2NTY5LDQxICsxNjU0MiwzMiBAQAogCQkJCUIyMjI3OUQwMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1
NTk5N0EwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFQ29udm9sdmVNYXRyaXguY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI1NTk5N0MwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTNDMEQwMEQ4QkEwMEJCODI1QyAvKiBT
VkdGRURpZmZ1c2VMaWdodGluZ0NnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RDMwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMjU1OTk3RTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVEaXNwbGFjZW1lbnRN
YXAuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5M0QwRDAwRDhCQTAwQkI4MjVDIC8qIFNW
R0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlENjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyMjI3OUQ5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpc3RhbnRMaWdodEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5ODAwRDAwRDhCQTAwQkI4MjVDIC8q
IFNWR0ZFRmxvb2QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5M0UwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ZFRmxvb2RDZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OURDMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRUZsb29kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyNzlERjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5jQUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjc5RTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY0JFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUU1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdG
RUZ1bmNHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlFODBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVGdW5jUkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5
ODIwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFR2F1c3NpYW5CbHVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUIyNTU5OTNGMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUdhdXNzaWFuQmx1ckNnLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk0MTBEMDBEOEJB
MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4
NDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlC
MjU1OTk0MjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJbWFnZUNnLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjc5RUUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFSW1hZ2VFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3OUYxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUxpZ2h0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4NjBEMDBEOEJBMDBCQjgyNUMg
LyogU1ZHRkVNZXJnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk0MzBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHRkVNZXJnZUNnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RjMwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyMjI3OUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5ODgwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZFTW9ycGhv
bG9neS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4QTBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHRkVPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5NDQwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ZFT2Zmc2V0Q2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGOTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVPZmZzZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyMjI3OUZDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyNTU5OThDMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRVNwZWN1
bGFyTGlnaHRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5NDUwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
Mjc5RkYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMDIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFU3Bv
dExpZ2h0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk0NjBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHRkVUaWxlQ2cubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EwNTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVUaWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjU1OTk4RjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVUdXJidWxlbmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyMjI3QTA4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclRy
ZWVBc1RleHQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5k
ZXJUcmVlQXNUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDEzIEBAIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGMKICAgICByZXR1cm4gdHM7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFBvaW50ZXI+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBQb2ludGVyKiB0KQoreworICAgIHRzIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KHQpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCShyZXZpc2lvbiAzNTAwNikK
KysrIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsy
MSw4IEBACiAjZGVmaW5lIEZpbHRlckVmZmVjdF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1
MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NiwxMyArNzYsMTIgQEAgYm9vbCBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoRmlsdGVy
QnVpbAogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJ
ZChpbjEoKSk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBidWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMigpKTsKLSAgICAKKwogICAgIGlmKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBG
RUJsZW5kOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PEJsZW5kTW9kZVR5cGU+
IChtb2RlKCkpKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVh
c2UoKSk7Ci0gICAgCisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUJsZW5kOjpjcmVhdGUo
aW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PEJsZW5kTW9kZVR5cGU+IChtb2RlKCkpKSk7CisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZp
c2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgU1ZHRkVCbGVuZEVsZW1lbnRfaAogCiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIkZpbHRlckJ1
aWxkZXIuaCIKICNpbmNsdWRlICJGRUJsZW5kLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMCArNzcsMTAgQEAgU1ZH
RmlsdGVyRWZmZWN0KiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudAogYm9vbCBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKIHsKICAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIAorCiAg
ICAgaWYoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgVmVjdG9y
PGZsb2F0PiBfdmFsdWVzOwogICAgIFNWR051bWJlckxpc3QqIG51bWJlcnMgPSB2YWx1ZXMoKTsK
IApAQCAtODksOCArODksNyBAQCBib29sIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChG
aWx0CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7aSA8IG5yO2krKykKICAgICAgICAgX3Zh
bHVlcy5hcHBlbmQobnVtYmVycy0+Z2V0SXRlbShpLCBlYykpOwogCi0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoaW5wdXQxLCBzdGF0
aWNfY2FzdDxDb2xvck1hdHJpeFR5cGU+ICh0eXBlKCkpLCBfdmFsdWVzKTsKLSAgICBidWlsZGVy
LT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgYnVpbGRlci0+YWRk
KHJlc3VsdCgpLCBGRUNvbG9yTWF0cml4OjpjcmVhdGUoaW5wdXQxLCBzdGF0aWNfY2FzdDxDb2xv
ck1hdHJpeFR5cGU+ICh0eXBlKCkpLCBfdmFsdWVzKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDM1
MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudF9o
CiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiRmls
dGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKICNpbmNsdWRlICJTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDggKzg2LDcgQEAgYm9vbCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6YnVpbAogICAgICAgICAgICAgYWxwaGEgPSBzdGF0aWNfY2FzdDxTVkdGRUZ1bmNBRWxlbWVu
dCo+KG4pLT50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGlucHV0
MSwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwg
YWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFQ29t
cG9uZW50VHJhbnNmZXI6OmNyZWF0ZShpbnB1dDEsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7
CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsNiBAQAogI2RlZmluZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudF9oCiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiRmlsdGVyQnVpbGRl
ci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgog
I2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBi
b29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoRmlsdGVyCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFQ29t
cG9zaXRlOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJh
dGlvblR5cGU+IChfb3BlcmF0b3IoKSksCi0gICAgICAgIGsxKCksIGsyKCksIGszKCksIGs0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsxKCksIGsyKCksIGsz
KCksIGs0KCkpOwogICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFz
ZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgU1ZHRkVDb21w
b3NpdGVFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
LSNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiRkVDb21wb3NpdGUuaCIKICNp
bmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAz
NTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDM1ICs3NSwzMyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6cGFyc2VNCiAKIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKIHsK
LSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KSAKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdG
RURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlcik7Ci0KLSAgICBtX2ZpbHRlckVmZmVjdC0+
c2V0SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXREaWZmdXNlQ29uc3RhbnQoZGlm
ZnVzZUNvbnN0YW50KCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRTdXJmYWNlU2NhbGUoc3Vy
ZmFjZVNjYWxlKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLZXJuZWxVbml0TGVuZ3RoWChr
ZXJuZWxVbml0TGVuZ3RoWCgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0S2VybmVsVW5pdExl
bmd0aFkoa2VybmVsVW5pdExlbmd0aFkoKSk7Ci0KLSAgICBTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50Kj4odGhpcyk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9
CiAKLSAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBub25Db25zdFRoaXMtPnN0eWxlRm9y
UmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOwotICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJT
dHlsZSA9IG5vbkNvbnN0VGhpcy0+cmVzb2x2ZVN0eWxlKHBhcmVudFN0eWxlKTsKK2Jvb2wgU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQor
eworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEo
KSk7CisgICAgCisgICAgaWYoIWlucHV0MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IHRoaXMtPnN0eWxlRm9yUmVuZGVyZXIocGFy
ZW50KCktPnJlbmRlcmVyKCkpOworICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHlsZSA9IHRoaXMt
PnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7CisgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHls
ZS0+c3ZnU3R5bGUoKS0+bGlnaHRpbmdDb2xvcigpOwogICAgIAotICAgIG1fZmlsdGVyRWZmZWN0
LT5zZXRMaWdodGluZ0NvbG9yKGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5saWdodGluZ0NvbG9y
KCkpOwotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0g
CiAgICAgcGFyZW50U3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAg
IGZpbHRlclN0eWxlLT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKICAgICAKLSAg
ICB1cGRhdGVMaWdodHMoKTsKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3Jl
YXRlKGlucHV0MSwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5n
dGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGZpbmRMaWdodHMoKSk7CisgICAgYnVpbGRlci0+
YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAorICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRz
KCkgY29uc3QKK0xpZ2h0U291cmNlKiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbmRM
aWdodHMoKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKICAgICBMaWdodFNvdXJjZSogbGlnaHQgPSAwOwogICAgIGZvciAoTm9kZSogbiA9
IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKG4t
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSB8fApAQCAtMTE1LDcgKzEx
Myw3IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojp1cGRhdGUKICAgICAgICAg
fQogICAgIH0KIAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRMaWdodFNvdXJjZShsaWdodCk7Cisg
ICAgcmV0dXJuIGxpZ2h0OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDExIEBA
CiAjZGVmaW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiU1ZHRkVMaWdodEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOworICAgIGNs
YXNzIEZFRGlmZnVzZUxpZ2h0aW5nOwogICAgIGNsYXNzIFNWR0NvbG9yOwogCiAgICAgY2xhc3Mg
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcwpAQCAtMzcsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciop
OwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAtNDgsOSArNTAsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBmbG9hdCwgS2VybmVsVW5pdExl
bmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgZmxvYXQsIEtlcm5l
bFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAotICAgICAgICBtdXRhYmxlIFJlZlB0
cjxTVkdGRURpZmZ1c2VMaWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIExpZ2h0U291
cmNlKiBmaW5kTGlnaHRzKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICB2b2lkIHVwZGF0ZUxp
Z2h0cygpIGNvbnN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRURpZmZ1c2VMaWdodGluZz4g
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAz
NTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1feENoYW5u
ZWxTZWxlY3RvcihTVkdfQ0hBTk5FTF9BKQotICAgICwgbV95Q2hhbm5lbFNlbGVjdG9yKFNWR19D
SEFOTkVMX0EpCisgICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoQ0hBTk5FTF9BKQorICAgICwgbV95
Q2hhbm5lbFNlbGVjdG9yKENIQU5ORUxfQSkKICAgICAsIG1fc2NhbGUoMC4wZikKICAgICAsIG1f
ZmlsdGVyRWZmZWN0KDApCiB7CkBAIC00NiwxOCArNDYsMTggQEAgQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRkVEaXNwbAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwg
WUNoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgU1ZHTmFtZXM6OnlDaGFubmVsU2Vs
ZWN0b3JBdHRyLCBtX3lDaGFubmVsU2VsZWN0b3IpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwg
U2NhbGUsIHNjYWxlLCBTVkdOYW1lczo6c2NhbGVBdHRyLCBtX3NjYWxlKQogCi1TVkdDaGFubmVs
U2VsZWN0b3JUeXBlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3RyaW5nVG9DaGFubmVs
KGNvbnN0IFN0cmluZyYga2V5KQorQ2hhbm5lbFNlbGVjdG9yVHlwZSBTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OnN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBp
ZiAoa2V5ID09ICJSIikKLSAgICAgICAgcmV0dXJuIFNWR19DSEFOTkVMX1I7CisgICAgICAgIHJl
dHVybiBDSEFOTkVMX1I7CiAgICAgZWxzZSBpZiAoa2V5ID09ICJHIikKLSAgICAgICAgcmV0dXJu
IFNWR19DSEFOTkVMX0c7CisgICAgICAgIHJldHVybiBDSEFOTkVMX0c7CiAgICAgZWxzZSBpZiAo
a2V5ID09ICJCIikKLSAgICAgICAgcmV0dXJuIFNWR19DSEFOTkVMX0I7CisgICAgICAgIHJldHVy
biBDSEFOTkVMX0I7CiAgICAgZWxzZSBpZiAoa2V5ID09ICJBIikKLSAgICAgICAgcmV0dXJuIFNW
R19DSEFOTkVMX0E7CisgICAgICAgIHJldHVybiBDSEFOTkVMX0E7CiAKLSAgICByZXR1cm4gU1ZH
X0NIQU5ORUxfVU5LTk9XTjsKKyAgICByZXR1cm4gQ0hBTk5FTF9VTktOT1dOOwogfQogCiB2b2lk
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQpAQCAtNzcsMTkgKzc3LDI2IEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50OjpwYXJzZU0KICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVEaXNwbGFj
ZW1lbnRNYXAqIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CitTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZl
Y3QgPSBTVkdGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlcik7Ci0KLSAgICBtX2ZpbHRl
ckVmZmVjdC0+c2V0WENoYW5uZWxTZWxlY3RvcigoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSkgeENo
YW5uZWxTZWxlY3RvcigpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0WUNoYW5uZWxTZWxlY3Rv
cigoU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSkgeUNoYW5uZWxTZWxlY3RvcigpKTsKLSAgICBtX2Zp
bHRlckVmZmVjdC0+c2V0SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbjIoaW4y
KCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRTY2FsZShzY2FsZSgpKTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIHNldFN0YW5kYXJkQXR0cmli
dXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0Lmdl
dCgpOworYm9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxk
ZXIqIGJ1aWxkZXIpCit7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIAorICAgIGlmKCFpbnB1dDEgfHwgIWlucHV0MikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAKKyAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBhZGRlZEVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoaW5wdXQxLCBpbnB1
dDIsIHN0YXRpY19jYXN0PENoYW5uZWxTZWxlY3RvclR5cGU+ICh4Q2hhbm5lbFNlbGVjdG9yKCkp
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxD
aGFubmVsU2VsZWN0b3JUeXBlPiAoeUNoYW5uZWxTZWxlY3RvcigpKSwgc2NhbGUoKSk7CisgICAg
YnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIAorICAg
IHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwg
flNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCgpOwogICAgICAgICAKLSAgICAgICAgc3RhdGlj
IFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0cmluZyYpOwor
ICAgICAgICBzdGF0aWMgQ2hhbm5lbFNlbGVjdG9yVHlwZSBzdHJpbmdUb0NoYW5uZWwoY29uc3Qg
U3RyaW5nJik7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRkVEaXNwbGFjZW1l
bnRNYXAqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikg
Y29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogICAgICAgICAKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBAIC00Niw3ICs0Nyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudCwgaW50LCBpbnQsIFlDaGFubmVsU2VsZWN0b3IsIHlDaGFu
bmVsU2VsZWN0b3IpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGZsb2F0LCBmbG9hdCwgU2NhbGUsIHNjYWxlKQogCi0g
ICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0ZFRGlzcGxhY2VtZW50TWFwPiBtX2ZpbHRlckVmZmVj
dDsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVEaXNwbGFjZW1lbnRNYXA+IG1fZmlsdGVyRWZm
ZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZs
b29kRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwyNSArNDgsMjYgQEAgdm9pZCBTVkdG
RUZsb29kRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZF
Rmxvb2QqIFNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9m
aWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVGbG9vZDo6Y3JlYXRl
KGZpbHRlcik7Ci0gICAgCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0
LmdldCgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KIAot
ICAgIFNWR0ZFRmxvb2RFbGVtZW50KiBub25Db25zdFRoaXMgPSBjb25zdF9jYXN0PFNWR0ZFRmxv
b2RFbGVtZW50Kj4odGhpcyk7Citib29sIFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChGaWx0ZXJC
dWlsZGVyKiBidWlsZGVyKQoreworICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IHRoaXMt
PnN0eWxlRm9yUmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOworICAgIFJlbmRlclN0eWxl
KiBmaWx0ZXJTdHlsZSA9IHRoaXMtPnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7CisKKyAgICBD
b2xvciBjb2xvciA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5mbG9vZENvbG9yKCk7CisgICAg
ZmxvYXQgb3BhY2l0eSA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5mbG9vZE9wYWNpdHkoKTsK
IAotICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IG5vbkNvbnN0VGhpcy0+c3R5bGVGb3JS
ZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVyZXIoKSk7Ci0gICAgUmVuZGVyU3R5bGUqIGZpbHRlclN0
eWxlID0gbm9uQ29uc3RUaGlzLT5yZXNvbHZlU3R5bGUocGFyZW50U3R5bGUpOwotICAgIAotICAg
IG1fZmlsdGVyRWZmZWN0LT5zZXRGbG9vZENvbG9yKGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5m
bG9vZENvbG9yKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRGbG9vZE9wYWNpdHkoZmlsdGVy
U3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kT3BhY2l0eSgpKTsKLSAgICAKICAgICBwYXJlbnRTdHls
ZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmlsdGVyU3R5bGUtPmRl
cmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOworCisgICAgYnVpbGRlci0+YWRkKHJlc3Vs
dCgpLCBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpKTsKICAgICAKLSAgICByZXR1cm4g
bV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RUZsb29kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB+U1ZHRkVGbG9vZEVsZW1lbnQoKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7
Ci0gICAgICAgIHZpcnR1YWwgU1ZHRkVGbG9vZCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmls
dGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZl
Y3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJC
dWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRUZsb29kPiBtX2ZpbHRlckVmZmVjdDsK
KyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVGbG9vZD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDE3ICs2NiwyMiBAQCB2
b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VNYXBwCiAgICAgICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiB9CiAKLVNWR0ZFR2F1c3NpYW5CbHVyKiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZmZWN0
KiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRl
ciogZmlsdGVyKSBjb25zdAogewotICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1f
ZmlsdGVyRWZmZWN0ID0gU1ZHRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIpOwotICAgIAot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNl
dFN0ZERldmlhdGlvblgoc3RkRGV2aWF0aW9uWCgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0
U3RkRGV2aWF0aW9uWShzdGREZXZpYXRpb25ZKCkpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOworfQorCitib29sIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVp
bGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9
IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworCisgICAgaWYoIWlucHV0MSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUdhdXNzaWFu
Qmx1cjo6Y3JlYXRlKGlucHV0MSwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCkpKTsK
IAotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7IAotICAg
IHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdm9pZCBzZXRT
dGREZXZpYXRpb24oZmxvYXQgc3RkRGV2aWF0aW9uWCwgZmxvYXQgc3RkRGV2aWF0aW9uWSk7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFR2F1c3NpYW5CbHVyKiBmaWx0ZXJFZmZlY3QoU1ZH
UmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3Qq
IGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICBib29sIGJ1
aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBj
b25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0K
QEAgLTQ5LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgZmxvYXQsIGZsb2F0
LCBTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBmbG9hdCwgZmxvYXQsIFN0
ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZH
RkVHYXVzc2lhbkJsdXI+IG1fZmlsdGVyRWZmZWN0OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxG
RUdhdXNzaWFuQmx1cj4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDE3ICs4OSwyMCBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChD
CiAgICAgICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRDYWNoZWRJbWFnZShtX2NhY2hlZEltYWdlKTsK
IH0KIAotU1ZHRkVJbWFnZSogU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUltYWdlRWxl
bWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdGRUlt
YWdlOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAKLSAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGFscmVh
ZHkgYmUgbG9hZGVkIQotICAgIGlmIChtX2NhY2hlZEltYWdlKQotICAgICAgICBtX2ZpbHRlckVm
ZmVjdC0+c2V0Q2FjaGVkSW1hZ2UobV9jYWNoZWRJbWFnZSk7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxk
KEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgaWYoIW1fY2FjaGVkSW1hZ2UpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVJbWFnZTo6
Y3JlYXRlKG1fY2FjaGVkSW1hZ2UpKTsKIAotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2Zp
bHRlckVmZmVjdC5nZXQoKSk7Ci0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgpOworICAg
IHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpnZXRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVN0cmluZ3MoVmVjdG9yPFN0cmluZz4mIHVybHMpIGNvbnN0CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VicmVzb3VyY2VBdHRyaWJ1dGVT
dHJpbmdzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFNWR0ZFSW1hZ2Uq
IGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7
CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBAIC02MSw3ICs2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUmVmUHRyPFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8+LCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQogCiAgICAgICAgIENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdlOwotICAgICAgICBtdXRh
YmxlIFJlZlB0cjxTVkdGRUltYWdlPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8RkVJbWFnZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDIxICs0MCwyOCBAQCBTVkdGRU1lcmdlRWxlbWVudDo6flNWR0ZFTWVyZ2VFbGVtZW50KCkK
IHsKIH0KIAotU1ZHRkVNZXJnZSogU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRU1lcmdl
RWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdG
RU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKLSAgICAgICAgCi0gICAgc2V0U3RhbmRhcmRBdHRyaWJ1
dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gMDsKK30KIAotICAgIFZlY3RvcjxTdHJpbmc+IG1lcmdlSW5wdXRzOworYm9vbCBT
VkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBW
ZWN0b3I8RmlsdGVyRWZmZWN0Kj4gbWVyZ2VJbnB1dHM7CiAgICAgZm9yIChOb2RlKiBuID0gZmly
c3RDaGlsZCgpOyBuICE9IDA7IG4gPSBuLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChu
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlTm9kZVRhZykpCi0gICAgICAgICAgICBtZXJn
ZUlucHV0cy5hcHBlbmQoc3RhdGljX2Nhc3Q8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Kj4obiktPmlu
MSgpKTsKKyAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlTWVyZ2VOb2RlVGFn
KSkgeworICAgICAgICAgICAgRmlsdGVyRWZmZWN0KiBtZXJnZUVmZmVjdCA9IGJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoc3RhdGljX2Nhc3Q8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Kj4obiktPmluMSgp
KTsKKyAgICAgICAgICAgIG1lcmdlSW5wdXRzLmFwcGVuZChtZXJnZUVmZmVjdCk7CisgICAgICAg
IH0KICAgICB9CiAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0TWVyZ2VJbnB1dHMobWVyZ2VJbnB1
dHMpOwotICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsKKyAgICBpZihtZXJnZUlucHV0
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJ1aWxkZXItPmFkZChy
ZXN1bHQoKSwgRkVNZXJnZTo6Y3JlYXRlKG1lcmdlSW5wdXRzKSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDEzICszNSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdGRU1lcmdlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZH
RkVNZXJnZUVsZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIFNWR0ZFTWVyZ2UqIGZpbHRlckVm
ZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAg
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVNZXJn
ZT4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEZFTWVyZ2U+IG1fZmls
dGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxNyArNTksMjIgQEAg
dm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cgogICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
OwogfQogCi1TVkdGRU9mZnNldCogU1ZHRkVPZmZzZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZH
UmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVPZmZz
ZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QK
IHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IFNW
R0ZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyKTsKLSAgICAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0
SW4oaW4xKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXREeChkeCgpKTsKLSAgICBtX2ZpbHRl
ckVmZmVjdC0+c2V0RHkoZHkoKSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK2Jvb2wgU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVy
KiBidWlsZGVyKQoreworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CisKKyAgICBpZighaW5wdXQxKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFT2Zmc2V0OjpjcmVhdGUoaW5wdXQxLCBk
eCgpLCBkeSgpKSk7CiAKLSAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3Qu
Z2V0KCkpOyAKLSAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiAzNTAw
NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgflNWR0ZF
T2Zmc2V0RWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGRU9mZnNldCogZmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZH
RmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0aGlzOyB9CkBAIC00Nyw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQsIGZsb2F0
LCBmbG9hdCwgRHgsIGR4KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRkVPZmZzZXRFbGVtZW50LCBmbG9hdCwgZmxvYXQsIER5LCBkeSkKIAotICAgICAgICBtdXRh
YmxlIFJlZlB0cjxTVkdGRU9mZnNldD4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIG11dGFibGUg
UmVmUHRyPEZFT2Zmc2V0PiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNDIgKzc2LDE3IEBAIHZvaWQg
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2UKICAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0K
IAotU1ZHRkVTcGVjdWxhckxpZ2h0aW5nKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVm
ZmVjdCogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkgCi0g
ICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmls
dGVyKTsKLQotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbjEoKSk7Ci0gICAgbV9maWx0ZXJF
ZmZlY3QtPnNldFNwZWN1bGFyQ29uc3RhbnQoKHNwZWN1bGFyQ29uc3RhbnQoKSkpOwotICAgIG1f
ZmlsdGVyRWZmZWN0LT5zZXRTcGVjdWxhckV4cG9uZW50KChzcGVjdWxhckV4cG9uZW50KCkpKTsK
LSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0U3VyZmFjZVNjYWxlKChzdXJmYWNlU2NhbGUoKSkpOwot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLZXJuZWxVbml0TGVuZ3RoWCgoa2VybmVsVW5pdExlbmd0
aFgoKSkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLZXJuZWxVbml0TGVuZ3RoWSgoa2VybmVs
VW5pdExlbmd0aFkoKSkpOwotCi0gICAgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCogbm9u
Q29uc3RUaGlzID0gY29uc3RfY2FzdDxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Kj4odGhp
cyk7Ci0KLSAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBub25Db25zdFRoaXMtPnN0eWxl
Rm9yUmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOyAgICAKLSAgICBSZW5kZXJTdHlsZSog
ZmlsdGVyU3R5bGUgPSBub25Db25zdFRoaXMtPnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7Ci0g
ICAgCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldExpZ2h0aW5nQ29sb3IoZmlsdGVyU3R5bGUtPnN2
Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKSk7Ci0gICAgCi0gICAgcGFyZW50U3R5bGUtPmRlcmVm
KGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwotICAgIGZpbHRlclN0eWxlLT5kZXJlZihkb2N1
bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKLQotICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2Zp
bHRlckVmZmVjdC5nZXQoKSk7Ci0KLSAgICB1cGRhdGVMaWdodHMoKTsKLSAgICByZXR1cm4gbV9m
aWx0ZXJFZmZlY3QuZ2V0KCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6dXBkYXRlTGlnaHRz
KCkgY29uc3QKK0xpZ2h0U291cmNlKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaW5k
TGlnaHRzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBMaWdodFNvdXJjZSogbGlnaHQgPSAwOyAgICAKKyAgICBMaWdodFNvdXJjZSog
bGlnaHQgPSAwOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlz
dGFudExpZ2h0VGFnKSB8fCAKKyAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZl
RGlzdGFudExpZ2h0VGFnKSB8fAogICAgICAgICAgICAgbi0+aGFzVGFnTmFtZShTVkdOYW1lczo6
ZmVQb2ludExpZ2h0VGFnKSB8fAogICAgICAgICAgICAgbi0+aGFzVGFnTmFtZShTVkdOYW1lczo6
ZmVTcG90TGlnaHRUYWcpKSB7CiAgICAgICAgICAgICBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHRO
b2RlID0gc3RhdGljX2Nhc3Q8U1ZHRkVMaWdodEVsZW1lbnQqPihuKTsgCkBAIC0xMjAsNyArOTUs
MjkgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojp1cGRhdAogICAgICAgICB9
CiAgICAgfQogCi0gICAgbV9maWx0ZXJFZmZlY3QtPnNldExpZ2h0U291cmNlKGxpZ2h0KTsKKyAg
ICByZXR1cm4gbGlnaHQ7Cit9CisKK2Jvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIAorICAgIGlmKCFpbnB1dDEp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlID0gdGhpcy0+c3R5bGVGb3JSZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVyZXIoKSk7ICAg
IAorICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHlsZSA9IHRoaXMtPnJlc29sdmVTdHlsZShwYXJl
bnRTdHlsZSk7CisgICAgCisgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUo
KS0+bGlnaHRpbmdDb2xvcigpOworICAgIAorICAgIHBhcmVudFN0eWxlLT5kZXJlZihkb2N1bWVu
dCgpLT5yZW5kZXJBcmVuYSgpKTsKKyAgICBmaWx0ZXJTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+
cmVuZGVyQXJlbmEoKSk7CisgICAgCisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZl
Y3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEsIGNvbG9yLCBzdXJmYWNlU2Nh
bGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5l
bFVuaXRMZW5ndGhZKCksIGZpbmRMaWdodHMoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgp
LCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9u
IDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IHZpcnR1YWwgflNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoKTsKICAgICAgICAgCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsK
LSAgICAgICAgdmlydHVhbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmcqIGZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCog
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgYnVp
bGQoRmlsdGVyQnVpbGRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNv
bnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpA
QCAtNTAsOSArNTEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIGZs
b2F0LCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBm
bG9hdCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAotICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmc+IG1fZmlsdGVyRWZmZWN0
OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRVNwZWN1bGFyTGlnaHRpbmc+IG1fZmlsdGVyRWZm
ZWN0OwogICAgICAgICAKLSAgICAgICAgdm9pZCB1cGRhdGVMaWdodHMoKSBjb25zdDsKKyAgICAg
ICAgTGlnaHRTb3VyY2UqIGZpbmRMaWdodHMoKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzUw
MDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTIsMTUgKzUyLDIyIEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWIKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVUaWxlKiBTVkdGRVRpbGVFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVm
ZmVjdCogU1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBm
aWx0ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0
ZXJFZmZlY3QgPSBTVkdGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOworICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICByZXR1cm4gMDsKK30KKworYm9vbCBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChG
aWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4o
aW4xKCkpOworICAgIGlmKCFpbnB1dDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNl
dFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdC5nZXQoKSk7Ci0gICAgcmV0dXJuIG1f
ZmlsdGVyRWZmZWN0LmdldCgpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVUaWxlOjpj
cmVhdGUoaW5wdXQxKSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVU
aWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgflNWR0ZFVGlsZUVsZW1lbnQoKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAg
ICAgIHZpcnR1YWwgU1ZHRkVUaWxlKiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciopIGNvbnN0OworICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIq
KTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTQ0LDcgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVUaWxlRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4x
KQogCi0gICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0ZFVGlsZT4gbV9maWx0ZXJFZmZlY3Q7Cisg
ICAgICAgIG11dGFibGUgUmVmUHRyPEZFVGlsZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNlRQogICAgICwgbV9udW1PY3RhdmVzKDEpCiAgICAg
LCBtX3NlZWQoMC4wZikKICAgICAsIG1fc3RpdGNoVGlsZXMoU1ZHX1NUSVRDSFRZUEVfTk9TVElU
Q0gpCi0gICAgLCBtX3R5cGUoU1ZHX1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFKQorICAgICwg
bV90eXBlKEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCiAgICAgLCBtX2ZpbHRlckVmZmVj
dCgwKQogewogfQpAQCAtNTgsOSArNTgsOSBAQCB2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6
OnBhcnNlTWFwcGVkCiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKICAgICAgICAgaWYg
KHZhbHVlID09ICJmcmFjdGFsTm9pc2UiKQotICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShT
VkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSk7CisgICAgICAgICAgICBzZXRUeXBlQmFz
ZVZhbHVlKEZFVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSk7CiAgICAgICAgIGVsc2UgaWYg
KHZhbHVlID09ICJ0dXJidWxlbmNlIikKLSAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoU1ZH
X1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFKTsKKyAgICAgICAgICAgIHNldFR5cGVCYXNlVmFs
dWUoRkVUVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0cikgewogICAgICAgICBpZiAodmFsdWUg
PT0gInN0aXRjaCIpCiAgICAgICAgICAgICBzZXRTdGl0Y2hUaWxlc0Jhc2VWYWx1ZShTVkdfU1RJ
VENIVFlQRV9TVElUQ0gpOwpAQCAtODAsMjEgKzgwLDE5IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNl
RWxlbWVudDo6cGFyc2VNYXBwZWQKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRkVUdXJidWxl
bmNlKiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0
ZXIqIGZpbHRlcikgY29uc3QKK1NWR0ZpbHRlckVmZmVjdCogU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0CiB7Ci0gICAg
Ci0gICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBTVkdG
RVR1cmJ1bGVuY2U6OmNyZWF0ZShmaWx0ZXIpOwotICAgIAotICAgIG1fZmlsdGVyRWZmZWN0LT5z
ZXRUeXBlKChTVkdUdXJidWxhbmNlVHlwZSkgdHlwZSgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+
c2V0QmFzZUZyZXF1ZW5jeVgoYmFzZUZyZXF1ZW5jeVgoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3Qt
PnNldEJhc2VGcmVxdWVuY3lZKGJhc2VGcmVxdWVuY3lZKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0
LT5zZXROdW1PY3RhdmVzKG51bU9jdGF2ZXMoKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldFNl
ZWQoc2VlZCgpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0U3RpdGNoVGlsZXMoc3RpdGNoVGls
ZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9TVElUQ0gpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOworfQorCitib29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxk
KEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRk
ZWRFZmZlY3QgPSBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxUdXJidWxhbmNlVHlw
ZT4gKHR5cGUoKSksIGJhc2VGcmVxdWVuY3lYKCksIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2VGcmVxdWVuY3lZKCksIG51bU9jdGF2ZXMoKSwgc2VlZCgpLCBz
dGl0Y2hUaWxlcygpID09IFNWR19TVElUQ0hUWVBFX1NUSVRDSCk7CisgICAgYnVpbGRlci0+YWRk
KHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOwogCi0gICAgc2V0U3RhbmRhcmRBdHRy
aWJ1dGVzKG1fZmlsdGVyRWZmZWN0LmdldCgpKTsgCi0gICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0
LmdldCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIH5TVkdGRVR1cmJ1bGVuY2VFbGVtZW50KCk7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZFVHVyYnVsZW5jZSogZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKKyAgICAgICAgYm9vbCBidWls
ZChGaWx0ZXJCdWlsZGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29u
c3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBA
IC01NSw3ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBpbnQsIGludCwgU3RpdGNo
VGlsZXMsIHN0aXRjaFRpbGVzKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgaW50LCBpbnQsIFR5cGUsIHR5cGUpCiAKLSAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHRkVUdXJidWxlbmNlPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8RkVUdXJidWxlbmNlPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMzUwMDYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXNfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJGaWx0ZXJCdWls
ZGVyLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRy
aXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVD
b252b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIs
MTM2ICsyMiwxNTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAj
aW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJpeC5oIgorI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVB
c1RleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUNvbnZvbHZlTWF0cml4OjpT
VkdGRUNvbnZvbHZlTWF0cml4KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdG
aWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV9rZXJuZWxTaXplKCkKLSAgICAsIG1fZGl2aXNv
cigwLjBmKQotICAgICwgbV9iaWFzKDAuMGYpCi0gICAgLCBtX3RhcmdldE9mZnNldCgpCi0gICAg
LCBtX2VkZ2VNb2RlKFNWR19FREdFTU9ERV9VTktOT1dOKQotICAgICwgbV9rZXJuZWxVbml0TGVu
Z3RoKCkKLSAgICAsIG1fcHJlc2VydmVBbHBoYShmYWxzZSkKK0ZFQ29udm9sdmVNYXRyaXg6OkZF
Q29udm9sdmVNYXRyaXgoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIsIGNvbnN0
IEZsb2F0U2l6ZSYga2VybmVsU2l6ZSwgCisgICAgY29uc3QgZmxvYXQmIGRpdmlzb3IsIGNvbnN0
IGZsb2F0JiBiaWFzLCBjb25zdCBGbG9hdFNpemUmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBl
IGVkZ2VNb2RlLAorICAgIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wg
cHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQorICAgIDog
RmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX2luMihpbjIpCisgICAgLCBt
X2tlcm5lbFNpemUoa2VybmVsU2l6ZSkKKyAgICAsIG1fZGl2aXNvcihkaXZpc29yKQorICAgICwg
bV9iaWFzKGJpYXMpCisgICAgLCBtX3RhcmdldE9mZnNldCh0YXJnZXRPZmZzZXQpCisgICAgLCBt
X2VkZ2VNb2RlKGVkZ2VNb2RlKQorICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoKGtlcm5lbFVuaXRM
ZW5ndGgpCisgICAgLCBtX3ByZXNlcnZlQWxwaGEocHJlc2VydmVBbHBoYSkKKyAgICAsIG1fa2Vy
bmVsTWF0cml4KGtlcm5lbE1hdHJpeCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZl
TWF0cml4PiBTVkdGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZp
bHRlcikKK1Bhc3NSZWZQdHI8RkVDb252b2x2ZU1hdHJpeD4gRkVDb252b2x2ZU1hdHJpeDo6Y3Jl
YXRlKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yLCBjb25zdCBGbG9hdFNpemUm
IGtlcm5lbFNpemUsIAorICAgIGNvbnN0IGZsb2F0JiBkaXZpc29yLCBjb25zdCBmbG9hdCYgYmlh
cywgY29uc3QgRmxvYXRTaXplJiB0YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSwg
CisgICAgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFs
cGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTVkdGRUNvbnZvbHZlTWF0cml4KGZpbHRlcikpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRkVDb252b2x2ZU1hdHJpeChpbiwgaW4yLCBrZXJuZWxTaXplLCBkaXZpc29yLCBi
aWFzLCB0YXJnZXRPZmZzZXQsIGVkZ2VNb2RlLCBrZXJuZWxVbml0TGVuZ3RoLAorICAgICAgICBw
cmVzZXJ2ZUFscGhhLCBrZXJuZWxNYXRyaXgpKTsKIH0KIAotRmxvYXRTaXplIFNWR0ZFQ29udm9s
dmVNYXRyaXg6Omtlcm5lbFNpemUoKSBjb25zdAorCitGbG9hdFNpemUgRkVDb252b2x2ZU1hdHJp
eDo6a2VybmVsU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fa2VybmVsU2l6ZTsKIH0KIAot
dm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxTaXplKEZsb2F0U2l6ZSBrZXJuZWxT
aXplKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxTaXplKEZsb2F0U2l6ZSBrZXJu
ZWxTaXplKQogewogICAgIG1fa2VybmVsU2l6ZSA9IGtlcm5lbFNpemU7IAogfQogCi1jb25zdCBW
ZWN0b3I8ZmxvYXQ+JiBTVkdGRUNvbnZvbHZlTWF0cml4OjprZXJuZWwoKSBjb25zdAorY29uc3Qg
VmVjdG9yPGZsb2F0PiYgRkVDb252b2x2ZU1hdHJpeDo6a2VybmVsKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9rZXJuZWxNYXRyaXg7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNl
dEtlcm5lbChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWwpCit2b2lkIEZFQ29udm9sdmVNYXRy
aXg6OnNldEtlcm5lbChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWwpCiB7CiAgICAgbV9rZXJu
ZWxNYXRyaXggPSBrZXJuZWw7IAogfQogCi1mbG9hdCBTVkdGRUNvbnZvbHZlTWF0cml4OjpkaXZp
c29yKCkgY29uc3QKK2Zsb2F0IEZFQ29udm9sdmVNYXRyaXg6OmRpdmlzb3IoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2Rpdmlzb3I7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNl
dERpdmlzb3IoZmxvYXQgZGl2aXNvcikKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0RGl2aXNv
cihmbG9hdCBkaXZpc29yKQogewogICAgIG1fZGl2aXNvciA9IGRpdmlzb3I7IAogfQogCi1mbG9h
dCBTVkdGRUNvbnZvbHZlTWF0cml4OjpiaWFzKCkgY29uc3QKK2Zsb2F0IEZFQ29udm9sdmVNYXRy
aXg6OmJpYXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2JpYXM7IAogfQogCi12b2lkIFNWR0ZF
Q29udm9sdmVNYXRyaXg6OnNldEJpYXMoZmxvYXQgYmlhcykKK3ZvaWQgRkVDb252b2x2ZU1hdHJp
eDo6c2V0QmlhcyhmbG9hdCBiaWFzKQogewogICAgIG1fYmlhcyA9IGJpYXM7IAogfQogCi1GbG9h
dFNpemUgU1ZHRkVDb252b2x2ZU1hdHJpeDo6dGFyZ2V0T2Zmc2V0KCkgY29uc3QKK0Zsb2F0U2l6
ZSBGRUNvbnZvbHZlTWF0cml4Ojp0YXJnZXRPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBt
X3RhcmdldE9mZnNldDsgCiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0VGFyZ2V0
T2Zmc2V0KEZsb2F0U2l6ZSB0YXJnZXRPZmZzZXQpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNl
dFRhcmdldE9mZnNldChGbG9hdFNpemUgdGFyZ2V0T2Zmc2V0KQogewogICAgIG1fdGFyZ2V0T2Zm
c2V0ID0gdGFyZ2V0T2Zmc2V0OyAKIH0KIAotU1ZHRWRnZU1vZGVUeXBlIFNWR0ZFQ29udm9sdmVN
YXRyaXg6OmVkZ2VNb2RlKCkgY29uc3QKK0VkZ2VNb2RlVHlwZSBGRUNvbnZvbHZlTWF0cml4Ojpl
ZGdlTW9kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZWRnZU1vZGU7IAogfQogCi12b2lkIFNW
R0ZFQ29udm9sdmVNYXRyaXg6OnNldEVkZ2VNb2RlKFNWR0VkZ2VNb2RlVHlwZSBlZGdlTW9kZSkK
K3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0RWRnZU1vZGUoRWRnZU1vZGVUeXBlIGVkZ2VNb2Rl
KQogewogICAgIG1fZWRnZU1vZGUgPSBlZGdlTW9kZTsgCiB9CiAKLUZsb2F0UG9pbnQgU1ZHRkVD
b252b2x2ZU1hdHJpeDo6a2VybmVsVW5pdExlbmd0aCgpIGNvbnN0CitGbG9hdFBvaW50IEZFQ29u
dm9sdmVNYXRyaXg6Omtlcm5lbFVuaXRMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2tl
cm5lbFVuaXRMZW5ndGg7IAogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXg6OnNldEtlcm5l
bFVuaXRMZW5ndGgoRmxvYXRQb2ludCBrZXJuZWxVbml0TGVuZ3RoKQordm9pZCBGRUNvbnZvbHZl
TWF0cml4OjpzZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCkK
IHsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGggPSBrZXJuZWxVbml0TGVuZ3RoOyAKIH0KIAotYm9v
bCBTVkdGRUNvbnZvbHZlTWF0cml4OjpwcmVzZXJ2ZUFscGhhKCkgY29uc3QKK2Jvb2wgRkVDb252
b2x2ZU1hdHJpeDo6cHJlc2VydmVBbHBoYSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJlc2Vy
dmVBbHBoYTsgCiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBo
YShib29sIHByZXNlcnZlQWxwaGEpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldFByZXNlcnZl
QWxwaGEoYm9vbCBwcmVzZXJ2ZUFscGhhKQogewogICAgIG1fcHJlc2VydmVBbHBoYSA9IHByZXNl
cnZlQWxwaGE7IAogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgU1ZHRWRnZU1vZGVUeXBlIHQpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OmFwcGx5KCkK
K3sKK30KKwordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpkdW1wKCkKK3sKK30KKworc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEVkZ2VNb2RlVHlwZSB0KQogewog
ICAgIHN3aXRjaCAodCkKICAgICB7Ci0gICAgICAgIGNhc2UgU1ZHX0VER0VNT0RFX1VOS05PV046
CisgICAgICAgIGNhc2UgRURHRU1PREVfVU5LTk9XTjoKICAgICAgICAgICAgIHRzIDw8ICJVTktO
T1dOIjticmVhazsKLSAgICAgICAgY2FzZSBTVkdfRURHRU1PREVfRFVQTElDQVRFOgorICAgICAg
ICBjYXNlIEVER0VNT0RFX0RVUExJQ0FURToKICAgICAgICAgICAgIHRzIDw8ICJEVVBMSUNBVEUi
O2JyZWFrOwotICAgICAgICBjYXNlIFNWR19FREdFTU9ERV9XUkFQOgorICAgICAgICBjYXNlIEVE
R0VNT0RFX1dSQVA6CiAgICAgICAgICAgICB0cyA8PCAiV1JBUCI7IGJyZWFrOwotICAgICAgICBj
YXNlIFNWR19FREdFTU9ERV9OT05FOgorICAgICAgICBjYXNlIEVER0VNT0RFX05PTkU6CiAgICAg
ICAgICAgICB0cyA8PCAiTk9ORSI7IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIFNWR0ZFQ29udm9sdmVNYXRyaXg6OmV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0CitUZXh0U3RyZWFtJiBGRUNvbnZvbHZlTWF0cml4OjpleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewotICAgIHRzIDw8ICJb
dHlwZT1DT05WT0xWRS1NQVRSSVhdICI7Ci0gICAgU1ZHRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJl
cHJlc2VudGF0aW9uKHRzKTsKLSAgICB0cyA8PCAiIFtvcmRlciAiIDw8IG1fa2VybmVsU2l6ZSA8
PCAiXSIKLSAgICAgICAgPDwgIiBba2VybmVsIG1hdHJpeD0iIDw8IG1fa2VybmVsTWF0cml4ICA8
PCAiXSIKLSAgICAgICAgPDwgIiBbZGl2aXNvcj0iIDw8IG1fZGl2aXNvciA8PCAiXSIKLSAgICAg
ICAgPDwgIiBbYmlhcz0iIDw8IG1fYmlhcyA8PCAiXSIKLSAgICAgICAgPDwgIiBbdGFyZ2V0ICIg
PDwgbV90YXJnZXRPZmZzZXQgPDwgIl0iCi0gICAgICAgIDw8ICIgW2VkZ2UgbW9kZT0iIDw8IG1f
ZWRnZU1vZGUgPDwgIl0iCi0gICAgICAgIDw8ICIgW2tlcm5lbCB1bml0IGxlbmd0aCAiIDw8IG1f
a2VybmVsVW5pdExlbmd0aCA8PCAiXSIKLSAgICAgICAgPDwgIiBbcHJlc2VydmUgYWxwaGE9IiA8
PCBtX3ByZXNlcnZlQWxwaGEgPDwgIl0iOworICAgIHRzIDw8ICJbdHlwZT1DT05WT0xWRS1NQVRS
SVhdICIKKyAgICAgICAgPDwgIiBbaW4xPSIgPDwgbV9pbi5nZXQoKSA8PCAiXSIKKyAgICAgICAg
PDwgIiBbaW4yPSIgPDwgbV9pbjIuZ2V0KCkgPDwgIl0iCisgICAgICAgIDw8ICIgW29yZGVyICIg
PDwga2VybmVsU2l6ZSgpIDw8ICJdIgorICAgICAgICA8PCAiIFtrZXJuZWwgbWF0cml4PSIgPDwg
a2VybmVsKCkgPDwgIl0iCisgICAgICAgIDw8ICIgW2Rpdmlzb3I9IiA8PCBkaXZpc29yKCkgPDwg
Il0iCisgICAgICAgIDw8ICIgW2JpYXM9IiA8PCBiaWFzKCkgPDwgIl0iCisgICAgICAgIDw8ICIg
W3RhcmdldCAiIDw8IHRhcmdldE9mZnNldCgpIDw8ICJdIgorICAgICAgICA8PCAiIFtlZGdlIG1v
ZGU9IiA8PCBlZGdlTW9kZSgpIDw8ICJdIgorICAgICAgICA8PCAiIFtrZXJuZWwgdW5pdCBsZW5n
dGggIiA8PCBrZXJuZWxVbml0TGVuZ3RoKCkgPDwgIl0iCisgICAgICAgIDw8ICIgW3ByZXNlcnZl
IGFscGhhPSIgPDwgcHJlc2VydmVBbHBoYSgpIDw8ICJdIjsKICAgICByZXR1cm4gdHM7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2
ZU1hdHJpeC5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw1OSArMjMsNzAg
QEAKICNkZWZpbmUgU1ZHRkVDb252b2x2ZU1hdHJpeF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gU1ZHRWRnZU1vZGVUeXBlIHsKLSAgICBTVkdfRURHRU1PREVfVU5LTk9XTiAg
ID0gMCwKLSAgICBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMSwKLSAgICBTVkdfRURHRU1PREVf
V1JBUCAgICAgID0gMiwKLSAgICBTVkdfRURHRU1PREVfTk9ORSAgICAgID0gMwotfTsKLQotY2xh
c3MgU1ZHRkVDb252b2x2ZU1hdHJpeCA6IHB1YmxpYyBTVkdGaWx0ZXJFZmZlY3QgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShTVkdS
ZXNvdXJjZUZpbHRlciopOwotCi0gICAgRmxvYXRTaXplIGtlcm5lbFNpemUoKSBjb25zdDsKLSAg
ICB2b2lkIHNldEtlcm5lbFNpemUoRmxvYXRTaXplKTsKLQotICAgIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIGtlcm5lbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9h
dD4mKTsKLQotICAgIGZsb2F0IGRpdmlzb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldERpdmlzb3Io
ZmxvYXQpOwotCi0gICAgZmxvYXQgYmlhcygpIGNvbnN0OwotICAgIHZvaWQgc2V0QmlhcyhmbG9h
dCk7Ci0KLSAgICBGbG9hdFNpemUgdGFyZ2V0T2Zmc2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRU
YXJnZXRPZmZzZXQoRmxvYXRTaXplKTsKLQotICAgIFNWR0VkZ2VNb2RlVHlwZSBlZGdlTW9kZSgp
IGNvbnN0OwotICAgIHZvaWQgc2V0RWRnZU1vZGUoU1ZHRWRnZU1vZGVUeXBlKTsKLQotICAgIEZs
b2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsVW5p
dExlbmd0aChGbG9hdFBvaW50KTsKLQotICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0UHJlc2VydmVBbHBoYShib29sKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZhdGU6
Ci0gICAgU1ZHRkVDb252b2x2ZU1hdHJpeChTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgRmxv
YXRTaXplIG1fa2VybmVsU2l6ZTsKLSAgICBmbG9hdCBtX2Rpdmlzb3I7Ci0gICAgZmxvYXQgbV9i
aWFzOwotICAgIEZsb2F0U2l6ZSBtX3RhcmdldE9mZnNldDsKLSAgICBTVkdFZGdlTW9kZVR5cGUg
bV9lZGdlTW9kZTsKLSAgICBGbG9hdFBvaW50IG1fa2VybmVsVW5pdExlbmd0aDsKLSAgICBib29s
IG1fcHJlc2VydmVBbHBoYTsKLSAgICBWZWN0b3I8ZmxvYXQ+IG1fa2VybmVsTWF0cml4OyAvLyBt
YXliZSBzaG91bGQgYmUgYSByZWFsIG1hdHJpeD8KLX07CisgICAgZW51bSBFZGdlTW9kZVR5cGUg
eworICAgICAgICBFREdFTU9ERV9VTktOT1dOICAgPSAwLAorICAgICAgICBFREdFTU9ERV9EVVBM
SUNBVEUgPSAxLAorICAgICAgICBFREdFTU9ERV9XUkFQICAgICAgPSAyLAorICAgICAgICBFREdF
TU9ERV9OT05FICAgICAgPSAzCisgICAgfTsKKworICAgIGNsYXNzIEZFQ29udm9sdmVNYXRyaXgg
OiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZl
Y3QqLCBjb25zdCBGbG9hdFNpemUmLCAKKyAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCYsIGNv
bnN0IGZsb2F0JiwgY29uc3QgRmxvYXRTaXplJiwgRWRnZU1vZGVUeXBlLCBjb25zdCBGbG9hdFBv
aW50JiwKKyAgICAgICAgICAgICAgICBib29sLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisKKyAg
ICAgICAgRmxvYXRTaXplIGtlcm5lbFNpemUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRLZXJu
ZWxTaXplKEZsb2F0U2l6ZSk7CisKKyAgICAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVs
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsK
KworICAgICAgICBmbG9hdCBkaXZpc29yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0RGl2aXNv
cihmbG9hdCk7CisKKyAgICAgICAgZmxvYXQgYmlhcygpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dEJpYXMoZmxvYXQpOworCisgICAgICAgIEZsb2F0U2l6ZSB0YXJnZXRPZmZzZXQoKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXRUYXJnZXRPZmZzZXQoRmxvYXRTaXplKTsKKworICAgICAgICBFZGdl
TW9kZVR5cGUgZWRnZU1vZGUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRFZGdlTW9kZShFZGdl
TW9kZVR5cGUpOworCisgICAgICAgIEZsb2F0UG9pbnQga2VybmVsVW5pdExlbmd0aCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldEtlcm5lbFVuaXRMZW5ndGgoRmxvYXRQb2ludCk7CisKKyAgICAg
ICAgYm9vbCBwcmVzZXJ2ZUFscGhhKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0UHJlc2VydmVB
bHBoYShib29sKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRUNv
bnZvbHZlTWF0cml4KEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGNvbnN0IEZs
b2F0U2l6ZSYsIEVkZ2VNb2RlVHlwZSwgY29uc3QgRmxvYXRQb2ludCYsIGJvb2wsIGNvbnN0IFZl
Y3RvcjxmbG9hdD4mKTsKKworICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOworICAg
ICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luMjsKKyAgICAgICAgRmxvYXRTaXplIG1fa2Vy
bmVsU2l6ZTsKKyAgICAgICAgZmxvYXQgbV9kaXZpc29yOworICAgICAgICBmbG9hdCBtX2JpYXM7
CisgICAgICAgIEZsb2F0U2l6ZSBtX3RhcmdldE9mZnNldDsKKyAgICAgICAgRWRnZU1vZGVUeXBl
IG1fZWRnZU1vZGU7CisgICAgICAgIEZsb2F0UG9pbnQgbV9rZXJuZWxVbml0TGVuZ3RoOworICAg
ICAgICBib29sIG1fcHJlc2VydmVBbHBoYTsKKyAgICAgICAgVmVjdG9yPGZsb2F0PiBtX2tlcm5l
bE1hdHJpeDsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcu
Y3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVEaWZmdXNlTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5NyArMjQsMTA5IEBA
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0xp
Z2h0U291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaCIKLSNpbmNsdWRl
ICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpTVkdGRURpZmZ1c2VMaWdo
dGluZyhTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZp
bHRlcikKLSAgICAsIG1fbGlnaHRpbmdDb2xvcigpCi0gICAgLCBtX3N1cmZhY2VTY2FsZSgwLjBm
KQotICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoMC4wZikKLSAgICAsIG1fa2VybmVsVW5pdExlbmd0
aFgoMC4wZikKLSAgICAsIG1fa2VybmVsVW5pdExlbmd0aFkoMC4wZikKLSAgICAsIG1fbGlnaHRT
b3VyY2UoMCkKK0ZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXJFZmZl
Y3QqIGluICwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGNvbnN0IGZsb2F0JiBzdXJmYWNl
U2NhbGUsCisgICAgY29uc3QgZmxvYXQmIGRpZmZ1c2VDb25zdGFudCwgY29uc3QgZmxvYXQmIGtl
cm5lbFVuaXRMZW5ndGhYLCBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0aFksIExpZ2h0U291
cmNlKiBsaWdodFNvdXJjZSkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQor
ICAgICwgbV9saWdodGluZ0NvbG9yKGxpZ2h0aW5nQ29sb3IpCisgICAgLCBtX3N1cmZhY2VTY2Fs
ZShzdXJmYWNlU2NhbGUpCisgICAgLCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQp
CisgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICwgbV9r
ZXJuZWxVbml0TGVuZ3RoWShrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAsIG1fbGlnaHRTb3VyY2Uo
bGlnaHRTb3VyY2UpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVEaWZmdXNlTGlnaHRpbmc+IFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bh
c3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoRmls
dGVyRWZmZWN0KiBpbiAsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLAorICAgIGNvbnN0IGZs
b2F0JiBzdXJmYWNlU2NhbGUsIGNvbnN0IGZsb2F0JiBkaWZmdXNlQ29uc3RhbnQsIGNvbnN0IGZs
b2F0JiBrZXJuZWxVbml0TGVuZ3RoWCwKKyAgICBjb25zdCBmbG9hdCYga2VybmVsVW5pdExlbmd0
aFksIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RkVEaWZmdXNlTGlnaHRpbmcoaW4sIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVz
ZUNvbnN0YW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIGxpZ2h0U291
cmNlKSk7CiB9CiAKLVNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjp+U1ZHRkVEaWZmdXNlTGlnaHRpbmco
KQorRkVEaWZmdXNlTGlnaHRpbmc6On5GRURpZmZ1c2VMaWdodGluZygpCiB7CiB9CiAKLUNvbG9y
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QKK0NvbG9yIEZFRGlm
ZnVzZUxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saWdo
dGluZ0NvbG9yOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodGluZ0Nv
bG9yKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6
c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcikKIHsKICAgICBtX2xp
Z2h0aW5nQ29sb3IgPSBsaWdodGluZ0NvbG9yOwogfQogCi1mbG9hdCBTVkdGRURpZmZ1c2VMaWdo
dGluZzo6c3VyZmFjZVNjYWxlKCkgY29uc3QgCitmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6c3Vy
ZmFjZVNjYWxlKCkgY29uc3QgCiB7CiAgICAgcmV0dXJuIG1fc3VyZmFjZVNjYWxlOwogfQogCi12
b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUoZmxvYXQgc3VyZmFjZVNj
YWxlKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxlKGZsb2F0IHN1cmZh
Y2VTY2FsZSkKIHsKICAgICBtX3N1cmZhY2VTY2FsZSA9IHN1cmZhY2VTY2FsZTsKIH0KIAotZmxv
YXQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OmRpZmZ1c2VDb25zdGFudCgpIGNvbnN0CitmbG9hdCBG
RURpZmZ1c2VMaWdodGluZzo6ZGlmZnVzZUNvbnN0YW50KCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9kaWZmdXNlQ29uc3RhbnQ7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmc6OnNldERp
ZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29uc3RhbnQpCit2b2lkIEZFRGlmZnVzZUxpZ2h0
aW5nOjpzZXREaWZmdXNlQ29uc3RhbnQoZmxvYXQgZGlmZnVzZUNvbnN0YW50KQogewogICAgIG1f
ZGlmZnVzZUNvbnN0YW50ID0gZGlmZnVzZUNvbnN0YW50OwogfQogCi1mbG9hdCBTVkdGRURpZmZ1
c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFgoKSBjb25zdAorZmxvYXQgRkVEaWZmdXNlTGln
aHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJuZWxV
bml0TGVuZ3RoWDsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5p
dExlbmd0aFgoZmxvYXQga2VybmVsVW5pdExlbmd0aFgpCit2b2lkIEZFRGlmZnVzZUxpZ2h0aW5n
OjpzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCkKIHsKICAgICBt
X2tlcm5lbFVuaXRMZW5ndGhYID0ga2VybmVsVW5pdExlbmd0aFg7CiB9CiAKLWZsb2F0IFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0CitmbG9hdCBGRURpZmZ1
c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdAogewogICAgIHJldHVybiBtX2tl
cm5lbFVuaXRMZW5ndGhZOwogfQogCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJu
ZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSkKK3ZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKQogewog
ICAgIG1fa2VybmVsVW5pdExlbmd0aFkgPSBrZXJuZWxVbml0TGVuZ3RoWTsKIH0KIAotY29uc3Qg
TGlnaHRTb3VyY2UqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0Citj
b25zdCBMaWdodFNvdXJjZSogRkVEaWZmdXNlTGlnaHRpbmc6OmxpZ2h0U291cmNlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9saWdodFNvdXJjZS5nZXQoKTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1
c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQordm9p
ZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291
cmNlKQogeyAgICAKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLVRleHRT
dHJlYW0mIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdAordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkoKQogewotICAg
IHRzIDw8ICJbdHlwZT1ESUZGVVNFLUxJR0hUSU5HXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbc3VyZmFjZSBzY2FsZT0i
IDw8IG1fc3VyZmFjZVNjYWxlIDw8ICJdIgotICAgICAgICA8PCAiIFtkaWZmdXNlIGNvbnN0YW50
PSIgPDwgbV9kaWZmdXNlQ29uc3RhbnQgPDwgIl0iCi0gICAgICAgIDw8ICIgW2tlcm5lbCB1bml0
IGxlbmd0aCAiIDw8IG1fa2VybmVsVW5pdExlbmd0aFggPDwgIiwgIiA8PCBtX2tlcm5lbFVuaXRM
ZW5ndGhZIDw8ICJdIjsKK30KKwordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6ZHVtcCgpCit7Cit9
CisKK1RleHRTdHJlYW0mIEZFRGlmZnVzZUxpZ2h0aW5nOjpleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJbdHlwZT1ESUZGVVNFLUxJR0hU
SU5HXSAiCisgICAgICAgIDw8ICIgW2luMT0iIDw8IG1faW4uZ2V0KCkgPDwgIl0iCisgICAgICAg
IDw8ICIgW3N1cmZhY2Ugc2NhbGU9IiA8PCBzdXJmYWNlU2NhbGUoKSA8PCAiXSIKKyAgICAgICAg
PDwgIiBbZGlmZnVzZSBjb25zdGFudD0iIDw8IGRpZmZ1c2VDb25zdGFudCgpIDw8ICJdIgorICAg
ICAgICA8PCAiIFtrZXJuZWwgdW5pdCBsZW5ndGggIiA8PCBrZXJuZWxVbml0TGVuZ3RoWCgpIDw8
ICIsICIgPDwga2VybmVsVW5pdExlbmd0aFkoKSA8PCAiXSI7CiAgICAgcmV0dXJuIHRzOwogfQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNTEgKzI0
LDUyIEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVk
ZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0
ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMaWdodFNvdXJjZTsK
KyAgICBjbGFzcyBMaWdodFNvdXJjZTsKIAotY2xhc3MgU1ZHRkVEaWZmdXNlTGlnaHRpbmcgOiBw
dWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
VkdGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0gICAgdmly
dHVhbCB+U1ZHRkVEaWZmdXNlTGlnaHRpbmcoKTsKLQotICAgIENvbG9yIGxpZ2h0aW5nQ29sb3Io
KSBjb25zdDsKLSAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKLQotICAg
IGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3VyZmFjZVNjYWxlKGZs
b2F0KTsKLQotICAgIGZsb2F0IGRpZmZ1c2VDb25zdGFudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0
RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKLQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCk7Ci0KLSAgICBmbG9h
dCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0
aFkoZmxvYXQpOwotCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwotCi0gICAgdmlydHVhbCBU
ZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQot
I2lmIFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0
IEZsb2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRURp
ZmZ1c2VMaWdodGluZyhTVkdSZXNvdXJjZUZpbHRlciopOwotICAgIAotICAgIENvbG9yIG1fbGln
aHRpbmdDb2xvcjsKLSAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKLSAgICBmbG9hdCBtX2RpZmZ1
c2VDb25zdGFudDsKLSAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhYOwotICAgIGZsb2F0IG1f
a2VybmVsVW5pdExlbmd0aFk7Ci0gICAgUmVmUHRyPExpZ2h0U291cmNlPiBtX2xpZ2h0U291cmNl
OwotfTsKKyAgICBjbGFzcyBGRURpZmZ1c2VMaWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29u
c3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBM
aWdodFNvdXJjZSopOworICAgICAgICB2aXJ0dWFsIH5GRURpZmZ1c2VMaWdodGluZygpOworCisg
ICAgICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRMaWdo
dGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICAgICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKKworICAgICAgICBm
bG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXREaWZmdXNlQ29u
c3RhbnQoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQpOworCisgICAgICAgIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5p
dExlbmd0aFkoZmxvYXQpOworCisgICAgICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJj
ZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1w
KCk7CisgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYgdHMpIGNvbnN0OworICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBGRURpZmZ1c2VM
aWdodGluZyhGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3Qg
ZmxvYXQmLAorICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBMaWdo
dFNvdXJjZSopOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47CisgICAgICAg
IENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKKyAgICAgICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7Cisg
ICAgICAgIGZsb2F0IG1fZGlmZnVzZUNvbnN0YW50OworICAgICAgICBmbG9hdCBtX2tlcm5lbFVu
aXRMZW5ndGhYOworICAgICAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhZOworICAgICAgICBS
ZWZQdHI8TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CisgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlz
cGxhY2VtZW50TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIsOTEgKzIyLDkyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFz
VGV4dC5oIgogI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCisjaW5jbHVkZSAiU1ZH
UmVuZGVyVHJlZUFzVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRGlzcGxh
Y2VtZW50TWFwOjpTVkdGRURpc3BsYWNlbWVudE1hcChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVy
KQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAgICAsIG1feENoYW5uZWxTZWxlY3Rv
cihTVkdfQ0hBTk5FTF9VTktOT1dOKQotICAgICwgbV95Q2hhbm5lbFNlbGVjdG9yKFNWR19DSEFO
TkVMX1VOS05PV04pCi0gICAgLCBtX3NjYWxlKDApCi17Ci19Ci0KLVBhc3NSZWZQdHI8U1ZHRkVE
aXNwbGFjZW1lbnRNYXA+IFNWR0ZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwKGZpbHRlcikpOwotfQotCi1TdHJpbmcgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OmluMigp
IGNvbnN0CitGRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVyRWZmZWN0
KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIsIENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxl
Y3RvciwKKyAgICBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGNvbnN0IGZs
b2F0JiBzY2FsZSkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQorICAgICwg
bV9pbjIoaW4yKQorICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKHhDaGFubmVsU2VsZWN0b3IpCisg
ICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoeUNoYW5uZWxTZWxlY3RvcikKKyAgICAsIG1fc2NhbGUo
c2NhbGUpCiB7Ci0gICAgcmV0dXJuIG1faW4yOwogfQogCi12b2lkIFNWR0ZFRGlzcGxhY2VtZW50
TWFwOjpzZXRJbjIoY29uc3QgU3RyaW5nICZpbjIpCitQYXNzUmVmUHRyPEZFRGlzcGxhY2VtZW50
TWFwPiBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVm
ZmVjdCogaW4yLAorICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hh
bm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBjb25zdCBmbG9hdCYgc2NhbGUpCiB7
Ci0gICAgbV9pbjIgPSBpbjI7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRURpc3BsYWNlbWVu
dE1hcChpbiwgaW4yLCB4Q2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBzY2FsZSkp
OwogfQogCi1TVkdDaGFubmVsU2VsZWN0b3JUeXBlIFNWR0ZFRGlzcGxhY2VtZW50TWFwOjp4Q2hh
bm5lbFNlbGVjdG9yKCkgY29uc3QKK0NoYW5uZWxTZWxlY3RvclR5cGUgRkVEaXNwbGFjZW1lbnRN
YXA6OnhDaGFubmVsU2VsZWN0b3IoKSBjb25zdAogewogICAgIHJldHVybiBtX3hDaGFubmVsU2Vs
ZWN0b3I7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OnNldFhDaGFubmVsU2VsZWN0
b3IoY29uc3QgU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKQordm9pZCBG
RURpc3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0
b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IpCiB7CiAgICAgbV94Q2hhbm5lbFNlbGVjdG9yID0geENo
YW5uZWxTZWxlY3RvcjsKIH0KIAotU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSBTVkdGRURpc3BsYWNl
bWVudE1hcDo6eUNoYW5uZWxTZWxlY3RvcigpIGNvbnN0CitDaGFubmVsU2VsZWN0b3JUeXBlIEZF
RGlzcGxhY2VtZW50TWFwOjp5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV95Q2hhbm5lbFNlbGVjdG9yOwogfQogCi12b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwOjpzZXRZ
Q2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxl
Y3RvcikKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFlDaGFubmVsU2VsZWN0b3IoY29uc3Qg
Q2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yKQogewogICAgIG1feUNoYW5uZWxT
ZWxlY3RvciA9IHlDaGFubmVsU2VsZWN0b3I7CiB9CiAKLWZsb2F0IFNWR0ZFRGlzcGxhY2VtZW50
TWFwOjpzY2FsZSgpIGNvbnN0CitmbG9hdCBGRURpc3BsYWNlbWVudE1hcDo6c2NhbGUoKSBjb25z
dAogewogICAgIHJldHVybiBtX3NjYWxlOwogfQogCi12b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFw
OjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFNjYWxl
KGZsb2F0IHNjYWxlKQogewogICAgIG1fc2NhbGUgPSBzY2FsZTsKIH0KIAotc3RhdGljIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNWR0NoYW5uZWxTZWxlY3RvclR5cGUg
dCkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmFwcGx5KCkKK3sKK30KKwordm9pZCBGRURpc3Bs
YWNlbWVudE1hcDo6ZHVtcCgpCit7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBDaGFubmVsU2VsZWN0b3JUeXBlIHQpCiB7CiAgICAgc3dpdGNoICh0
KQogICAgIHsKLSAgICAgICAgY2FzZSBTVkdfQ0hBTk5FTF9VTktOT1dOOgorICAgICAgICBjYXNl
IENIQU5ORUxfVU5LTk9XTjoKICAgICAgICAgICAgIHRzIDw8ICJVTktOT1dOIjsgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfUjoKKyAgICAgICAgY2FzZSBDSEFOTkVMX1I6CiAgICAg
ICAgICAgICB0cyA8PCAiUkVEIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5ORUxfRzoK
KyAgICAgICAgY2FzZSBDSEFOTkVMX0c6CiAgICAgICAgICAgICB0cyA8PCAiR1JFRU4iOyBicmVh
azsKLSAgICAgICAgY2FzZSBTVkdfQ0hBTk5FTF9COgorICAgICAgICBjYXNlIENIQU5ORUxfQjoK
ICAgICAgICAgICAgIHRzIDw8ICJCTFVFIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0NIQU5O
RUxfQToKKyAgICAgICAgY2FzZSBDSEFOTkVMX0E6CiAgICAgICAgICAgICB0cyA8PCAiQUxQSEEi
OyBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBTVkdGRURp
c3BsYWNlbWVudE1hcDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29u
c3QKK1RleHRTdHJlYW0mIEZFRGlzcGxhY2VtZW50TWFwOjpleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogewotICAgIHRzIDw8ICJbdHlwZT1ESVNQTEFDRU1FTlQt
TUFQXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7
Ci0gICAgaWYgKCFpbjIoKS5pc0VtcHR5KCkpCi0gICAgICAgIHRzIDw8ICIgW2luMj0iIDw8IGlu
MigpIDw8ICJdIjsKLSAgICB0cyA8PCAiIFtzY2FsZT0iIDw8IG1fc2NhbGUgPDwgIl0iCi0gICAg
ICAgIDw8ICIgW3ggY2hhbm5lbCBzZWxlY3Rvcj0iIDw8IG1feENoYW5uZWxTZWxlY3RvciA8PCAi
XSIKLSAgICAgICAgPDwgIiBbeSBjaGFubmVsIHNlbGVjdG9yPSIgPDwgbV95Q2hhbm5lbFNlbGVj
dG9yIDw8ICJdIjsKKyAgICB0cyA8PCAiW3R5cGU9RElTUExBQ0VNRU5ULU1BUF0gIgorICAgICAg
ICA8PCAiIFtpbjE9IiA8PCBtX2luLmdldCgpIDw8ICJdIgorICAgICAgICA8PCAiIFtpbjI9IiA8
PCBtX2luMi5nZXQoKSA8PCAiXSIKKyAgICAgICAgPDwgIiBbc2NhbGU9IiA8PCBzY2FsZSgpIDw8
ICJdIgorICAgICAgICA8PCAiIFt4IGNoYW5uZWwgc2VsZWN0b3I9IiA8PCB4Q2hhbm5lbFNlbGVj
dG9yKCkgPDwgIl0iCisgICAgICAgIDw8ICIgW3kgY2hhbm5lbCBzZWxlY3Rvcj0iIDw8IHlDaGFu
bmVsU2VsZWN0b3IoKSA8PCAiXSI7CiAgICAgcmV0dXJuIHRzOwogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCShy
ZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNw
bGFjZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDggKzIzLDQ3IEBACiAjZGVmaW5l
IFNWR0ZFRGlzcGxhY2VtZW50TWFwX2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gU1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB7Ci0gICAgU1ZHX0NIQU5ORUxfVU5L
Tk9XTiA9IDAsCi0gICAgU1ZHX0NIQU5ORUxfUiAgICAgICA9IDEsCi0gICAgU1ZHX0NIQU5ORUxf
RyAgICAgICA9IDIsCi0gICAgU1ZHX0NIQU5ORUxfQiAgICAgICA9IDMsCi0gICAgU1ZHX0NIQU5O
RUxfQSAgICAgICA9IDQKLX07Ci0KLWNsYXNzIFNWR0ZFRGlzcGxhY2VtZW50TWFwIDogcHVibGlj
IFNWR0ZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVE
aXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0gICAgU3RyaW5n
IGluMigpIGNvbnN0OwotICAgIHZvaWQgc2V0SW4yKGNvbnN0IFN0cmluZyYpOwotCi0gICAgU1ZH
Q2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxTZWxlY3RvclR5cGUpOwotCi0gICAg
U1ZHQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IFNWR0NoYW5uZWxTZWxlY3RvclR5cGUpOwotCi0g
ICAgZmxvYXQgc2NhbGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNjYWxlKTsK
LQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9STShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVyKiBn
ZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZh
dGU6Ci0gICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXAoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAg
IFNWR0NoYW5uZWxTZWxlY3RvclR5cGUgbV94Q2hhbm5lbFNlbGVjdG9yOwotICAgIFNWR0NoYW5u
ZWxTZWxlY3RvclR5cGUgbV95Q2hhbm5lbFNlbGVjdG9yOwotICAgIGZsb2F0IG1fc2NhbGU7Ci0g
ICAgU3RyaW5nIG1faW4yOwotfTsKKyAgICBlbnVtIENoYW5uZWxTZWxlY3RvclR5cGUgeworICAg
ICAgICBDSEFOTkVMX1VOS05PV04gPSAwLAorICAgICAgICBDSEFOTkVMX1IgICAgICAgPSAxLAor
ICAgICAgICBDSEFOTkVMX0cgICAgICAgPSAyLAorICAgICAgICBDSEFOTkVMX0IgICAgICAgPSAz
LAorICAgICAgICBDSEFOTkVMX0EgICAgICAgPSA0CisgICAgfTsKKyAgICAKKyAgICBjbGFzcyBG
RURpc3BsYWNlbWVudE1hcCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVEaXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShGaWx0ZXJF
ZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBDaGFubmVsU2VsZWN0b3JUeXBlLAorICAgICAgICAgICAg
ICAgIENoYW5uZWxTZWxlY3RvclR5cGUsIGNvbnN0IGZsb2F0Jik7CisKKyAgICAgICAgQ2hhbm5l
bFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
WENoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlKTsKKworICAgICAgICBD
aGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUpOworCisgICAg
ICAgIGZsb2F0IHNjYWxlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2NhbGUoZmxvYXQgc2Nh
bGUpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpOworICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZFRGlzcGxhY2Vt
ZW50TWFwKEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIENoYW5uZWxTZWxlY3RvclR5cGUs
CisgICAgICAgICAgICBDaGFubmVsU2VsZWN0b3JUeXBlLCBjb25zdCBmbG9hdCYpOworCisgICAg
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IG1faW4yOworICAgICAgICBDaGFubmVsU2VsZWN0b3JUeXBlIG1feENoYW5uZWxTZWxlY3Rv
cjsKKyAgICAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSBtX3lDaGFubmVsU2VsZWN0b3I7CisgICAg
ICAgIGZsb2F0IG1fc2NhbGU7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHJldmlz
aW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsNDggKzIyLDU1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZH
UmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR0ZFRmxvb2QuaCIKKyNpbmNsdWRlICJT
VkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVGbG9v
ZDo6U1ZHRkVGbG9vZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVy
RWZmZWN0KGZpbHRlcikKLSAgICAsIG1fZmxvb2RDb2xvcigpCi0gICAgLCBtX2Zsb29kT3BhY2l0
eSgwLjBmKQorRkVGbG9vZDo6RkVGbG9vZChjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgY29uc3Qg
ZmxvYXQmIGZsb29kT3BhY2l0eSkKKyAgICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2Zsb29k
Q29sb3IoZmxvb2RDb2xvcikKKyAgICAsIG1fZmxvb2RPcGFjaXR5KGZsb29kT3BhY2l0eSkKIHsK
IH0KIAotUGFzc1JlZlB0cjxTVkdGRUZsb29kPiBTVkdGRUZsb29kOjpjcmVhdGUoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVGbG9vZD4gRkVGbG9vZDo6Y3JlYXRlKGNv
bnN0IENvbG9yJiBmbG9vZENvbG9yLCBjb25zdCBmbG9hdCYgZmxvb2RPcGFjaXR5KQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVGbG9vZChmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZFRmxvb2QoZmxvb2RDb2xvciwgZmxvb2RPcGFjaXR5KSk7CiB9CiAKLUNvbG9y
IFNWR0ZFRmxvb2Q6OmZsb29kQ29sb3IoKSBjb25zdAorQ29sb3IgRkVGbG9vZDo6Zmxvb2RDb2xv
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmxvb2RDb2xvcjsKIH0KIAotdm9pZCBTVkdGRUZs
b29kOjpzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgRkVGbG9vZDo6c2V0
Rmxvb2RDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9mbG9vZENvbG9yID0gY29s
b3I7CiB9CiAKLWZsb2F0IFNWR0ZFRmxvb2Q6OmZsb29kT3BhY2l0eSgpIGNvbnN0CitmbG9hdCBG
RUZsb29kOjpmbG9vZE9wYWNpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2Zsb29kT3BhY2l0
eTsKIH0KIAotdm9pZCBTVkdGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFj
aXR5KQordm9pZCBGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQog
ewogICAgIG1fZmxvb2RPcGFjaXR5ID0gZmxvb2RPcGFjaXR5OwogfQogCi1UZXh0U3RyZWFtJiBT
VkdGRUZsb29kOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAor
dm9pZCBGRUZsb29kOjphcHBseSgpCit7Cit9CisKK3ZvaWQgRkVGbG9vZDo6ZHVtcCgpCit7Cit9
CisKK1RleHRTdHJlYW0mIEZFRmxvb2Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYgdHMpIGNvbnN0CiB7Ci0gICAgdHMgPDwgIlt0eXBlPUZMT09EXSAiOwotICAgIFNWR0ZpbHRl
ckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbY29sb3I9
IiA8PCBmbG9vZENvbG9yKCkgPDwgIl0iCisgICAgdHMgPDwgIlt0eXBlPUZMT09EXSAiCisgICAg
ICAgIDw8ICIgW2NvbG9yPSIgPDwgZmxvb2RDb2xvcigpIDw8ICJdIgogICAgICAgICA8PCAiIFtv
cGFjaXR5PSIgPDwgZmxvb2RPcGFjaXR5KCkgPDwgIl0iOwogICAgIHJldHVybiB0czsKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCShyZXZpc2lvbiAz
NTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCwzMiArMjQsMzAgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckVm
ZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNWR0ZFRmxvb2QgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUZsb29kPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0
ZXIqKTsKLQotICAgIENvbG9yIGZsb29kQ29sb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldEZsb29k
Q29sb3IoY29uc3QgQ29sb3IgJik7Ci0KLSAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdDsK
LSAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJl
YW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi0jaWYgUExB
VEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRS
ZWN0JiBiYm94KSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFNWR0ZFRmxvb2QoU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIENvbG9yIG1fZmxvb2RDb2xvcjsKLSAgICBmbG9hdCBt
X2Zsb29kT3BhY2l0eTsKLX07CisgICAgY2xhc3MgRkVGbG9vZCA6IHB1YmxpYyBGaWx0ZXJFZmZl
Y3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVGbG9vZD4gY3Jl
YXRlKGNvbnN0IENvbG9yJiwgY29uc3QgZmxvYXQmKTsKKworICAgICAgICBDb2xvciBmbG9vZENv
bG9yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciAmKTsK
KworICAgICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRG
bG9vZE9wYWNpdHkoZmxvYXQpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIEZFRmxvb2QoY29uc3QgQ29sb3ImLCBjb25zdCBmbG9hdCYpOworCisgICAgICAgIENvbG9y
IG1fZmxvb2RDb2xvcjsKKyAgICAgICAgZmxvYXQgbV9mbG9vZE9wYWNpdHk7CisgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNDcgKzIzLDU2IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCisjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVNWR0ZFR2F1c3NpYW5CbHVyOjpTVkdGRUdhdXNzaWFuQmx1cihTVkdS
ZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAg
ICAsIG1feCgwLjBmKQotICAgICwgbV95KDAuMGYpCitGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lh
bkJsdXIoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgZmxvYXQmIHgsIGNvbnN0IGZsb2F0JiB5KQor
ICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1faW4oaW4pCisgICAgLCBtX3goeCkKKyAgICAs
IG1feSh5KQogewogfQogCi1QYXNzUmVmUHRyPFNWR0ZFR2F1c3NpYW5CbHVyPiBTVkdGRUdhdXNz
aWFuQmx1cjo6Y3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZF
R2F1c3NpYW5CbHVyPiBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIGNv
bnN0IGZsb2F0JiB4LCBjb25zdCBmbG9hdCYgeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNWR0ZFR2F1c3NpYW5CbHVyKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVH
YXVzc2lhbkJsdXIoaW4sIHgsIHkpKTsKIH0KIAotZmxvYXQgU1ZHRkVHYXVzc2lhbkJsdXI6OnN0
ZERldmlhdGlvblgoKSBjb25zdAorZmxvYXQgRkVHYXVzc2lhbkJsdXI6OnN0ZERldmlhdGlvblgo
KSBjb25zdAogewogICAgIHJldHVybiBtX3g7CiB9CiAKLXZvaWQgU1ZHRkVHYXVzc2lhbkJsdXI6
OnNldFN0ZERldmlhdGlvblgoZmxvYXQgeCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERl
dmlhdGlvblgoZmxvYXQgeCkKIHsKICAgICBtX3ggPSB4OwogfQogCi1mbG9hdCBTVkdGRUdhdXNz
aWFuQmx1cjo6c3RkRGV2aWF0aW9uWSgpIGNvbnN0CitmbG9hdCBGRUdhdXNzaWFuQmx1cjo6c3Rk
RGV2aWF0aW9uWSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feTsKIH0KIAotdm9pZCBTVkdGRUdh
dXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCB5KQordm9pZCBGRUdhdXNzaWFuQmx1
cjo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCB5KQogewogICAgIG1feSA9IHk7CiB9CiAKLVRleHRT
dHJlYW0mIFNWR0ZFR2F1c3NpYW5CbHVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0mIHRzKSBjb25zdAordm9pZCBGRUdhdXNzaWFuQmx1cjo6YXBwbHkoKQogewotICAgIHRzIDw8
ICJbdHlwZT1HQVVTU0lBTi1CTFVSXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbc3RkIGRldi4geD0iIDw8IHN0ZERldmlh
dGlvblgoKSA8PCAiIHk9IiA8PCBzdGREZXZpYXRpb25ZKCkgPDwgIl0iOworfQorCit2b2lkIEZF
R2F1c3NpYW5CbHVyOjpkdW1wKCkKK3sKK30KKworVGV4dFN0cmVhbSYgRkVHYXVzc2lhbkJsdXI6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMg
PDwgIlt0eXBlPUdBVVNTSUFOLUJMVVJdICIKKyAgICAgICAgPDwgIiBbaW4xPSIgPDwgbV9pbi5n
ZXQoKSA8PCAiXSIKKyAgICAgICAgPDwgIiBbc3RkIGRldi4geD0iIDw8IHN0ZERldmlhdGlvblgo
KSA8PCAiIHk9IiA8PCBzdGREZXZpYXRpb25ZKCkgPDwgIl0iOwogICAgIHJldHVybiB0czsKIH0K
IApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lh
bkJsdXIuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMyICsyMywzMSBAQAog
I2RlZmluZSBTVkdGRUdhdXNzaWFuQmx1cl9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmls
dGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRkVHYXVzc2lh
bkJsdXIgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRUdhdXNzaWFuQmx1cj4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0K
LSAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdGREZXZpYXRp
b25YKGZsb2F0KTsKLQotICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdDsKLSAgICB2b2lk
IHNldFN0ZERldmlhdGlvblkoZmxvYXQpOwotCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKENJ
KQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJv
eCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRUdhdXNzaWFuQmx1cihTVkdS
ZXNvdXJjZUZpbHRlciopOwotCi0gICAgZmxvYXQgbV94OwotICAgIGZsb2F0IG1feTsKLX07Cisg
ICAgY2xhc3MgRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFR2F1c3NpYW5CbHVyPiBjcmVhdGUoRmls
dGVyRWZmZWN0KiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOworCisgICAgICAgIGZsb2F0
IHN0ZERldmlhdGlvblgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZs
b2F0KTsKKworICAgICAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5
KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIFRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgRkVHYXVzc2lhbkJsdXIoRmlsdGVyRWZmZWN0KiwgY29uc3QgZmxvYXQmLCBj
b25zdCBmbG9hdCYpOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1faW47CisgICAg
ICAgIGZsb2F0IG1feDsKKyAgICAgICAgZmxvYXQgbV95OworICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDM1ICsyMywzMyBAQAogCiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFSW1h
Z2UuaCIKLQotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCi0jaW5jbHVkZSAiVGV4dFN0
cmVhbS5oIgorI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TVkdGRUltYWdlOjpTVkdGRUltYWdlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXIpCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgICwgbV9jYWNoZWRJbWFnZSgw
KQorRkVJbWFnZTo6RkVJbWFnZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCisgICAgOiBGaWx0
ZXJFZmZlY3QoKQorICAgICwgbV9jYWNoZWRJbWFnZShjYWNoZWRJbWFnZSkKIHsKIH0KIAotUGFz
c1JlZlB0cjxTVkdGRUltYWdlPiBTVkdGRUltYWdlOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlKENhY2hlZEltYWdl
KiBjYWNoZWRJbWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFSW1hZ2UoZmls
dGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUltYWdlKGNhY2hlZEltYWdlKSk7CiB9
CiAKLVNWR0ZFSW1hZ2U6On5TVkdGRUltYWdlKCkKK0ZFSW1hZ2U6On5GRUltYWdlKCkKIHsKICAg
ICBpZiAobV9jYWNoZWRJbWFnZSkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwogfQogCi1DYWNoZWRJbWFnZSogU1ZHRkVJbWFnZTo6Y2FjaGVkSW1hZ2UoKSBjb25z
dAorQ2FjaGVkSW1hZ2UqIEZFSW1hZ2U6OmNhY2hlZEltYWdlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9jYWNoZWRJbWFnZTsKIH0KIAotdm9pZCBTVkdGRUltYWdlOjpzZXRDYWNoZWRJbWFnZShD
YWNoZWRJbWFnZSogaW1hZ2UpCit2b2lkIEZFSW1hZ2U6OnNldENhY2hlZEltYWdlKENhY2hlZElt
YWdlKiBpbWFnZSkKIHsKICAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBpbWFnZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjUsMTkgKzYzLDE5IEBAIHZvaWQgU1ZHRkVJbWFnZTo6c2V0Q2FjaGVkSW1h
Z2UoQ2FjaGVkSW0KICAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwogfQog
Ci1UZXh0U3RyZWFtJiBTVkdGRUltYWdlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0mIHRzKSBjb25zdAordm9pZCBGRUltYWdlOjphcHBseSgpCiB7Ci0gICAgdHMgPDwgIlt0eXBl
PUlNQUdFXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0
cyk7Ci0gICAgLy8gRklYTUU6IHNob3VsZCB0aGlzIGR1bXAgYWxzbyBvYmplY3QgcmV0dXJuZWQg
YnkgU1ZHRkVJbWFnZTo6aW1hZ2UoKSA/Ci0gICAgcmV0dXJuIHRzOworfQogCit2b2lkIEZFSW1h
Z2U6OmR1bXAoKQorewogfQogCi12b2lkIFNWR0ZFSW1hZ2U6OmltYWdlQ2hhbmdlZChDYWNoZWRJ
bWFnZSopCitUZXh0U3RyZWFtJiBGRUltYWdlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdAogewotICAgIGlmIChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVz
b3VyY2UgPSBmaWx0ZXIoKSkKLSAgICAgICAgZmlsdGVyUmVzb3VyY2UtPmludmFsaWRhdGUoKTsK
KyAgICB0cyA8PCAiW3R5cGU9SU1BR0VdICI7CisgICAgLy8gRklYTUU6IHNob3VsZCB0aGlzIGR1
bXAgYWxzbyBvYmplY3QgcmV0dXJuZWQgYnkgU1ZHRkVJbWFnZTo6aW1hZ2UoKSA/CisgICAgcmV0
dXJuIHRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
MzQgKzI1LDMwIEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIK
LSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRUltYWdlIDogcHVibGljIFNWR0Zp
bHRlckVmZmVjdAotICAgICAgICAgICAgICAgICAsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVJbWFnZT4gY3JlYXRlKFNW
R1Jlc291cmNlRmlsdGVyKik7Ci0gICAgdmlydHVhbCB+U1ZHRkVJbWFnZSgpOwotCi0gICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gc3VwcG9ydCA8c3ZnPiAoUmVuZGVyT2JqZWN0KikgYXMgd2VsbCBh
cyBpbWFnZSBkYXRhLgotCi0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOwotCi0gICAgdmlydHVhbCBUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lm
IFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZs
b2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoQ2FjaGVkSW1hZ2UqKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgU1ZHRkVJbWFnZShTVkdS
ZXNvdXJjZUZpbHRlciopOworICAgIGNsYXNzIEZFSW1hZ2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
CisgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUltYWdlPiBjcmVhdGUoQ2Fj
aGVkSW1hZ2UqKTsKKyAgICAgICAgdmlydHVhbCB+RkVJbWFnZSgpOworCisgICAgICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIHN1cHBvcnQgPHN2Zz4gKFJlbmRlck9iamVjdCopIGFzIHdlbGwgYXMg
aW1hZ2UgZGF0YS4KKworICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOworICAgICAgICAKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7
CisgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMpIGNvbnN0OworICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBGRUltYWdlKENhY2hl
ZEltYWdlKik7CiAKLSAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZTsKLX07CisgICAgICAg
IENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdlOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2Uu
Y3BwCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVNZXJnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDM1ICsyMyw0MyBAQAogCiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFTWVyZ2UuaCIK
LSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFTWVyZ2U6OlNWR0ZFTWVyZ2UoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikgCi0gICAgOiBTVkdGaWx0ZXJFZmZlY3QoZmlsdGVyKSAKK0ZF
TWVyZ2U6OkZFTWVyZ2UoY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBtZXJnZUlucHV0cykg
CisgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9tZXJnZUlucHV0cyhtZXJnZUlucHV0cykK
IHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRU1lcmdlPiBTVkdGRU1lcmdlOjpjcmVhdGUoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bhc3NSZWZQdHI8RkVNZXJnZT4gRkVNZXJnZTo6Y3JlYXRl
KGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTVkdGRU1lcmdlKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRkVNZXJnZShtZXJnZUlucHV0cykpOwogfQogCi1jb25zdCBWZWN0b3I8U3RyaW5nPiYgU1ZH
RkVNZXJnZTo6bWVyZ2VJbnB1dHMoKSBjb25zdAorY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+
JiBGRU1lcmdlOjptZXJnZUlucHV0cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbWVyZ2VJbnB1
dHM7CiB9CiAKLXZvaWQgU1ZHRkVNZXJnZTo6c2V0TWVyZ2VJbnB1dHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG1lcmdlSW5wdXRzKQordm9pZCBGRU1lcmdlOjpzZXRNZXJnZUlucHV0cyhjb25zdCBW
ZWN0b3I8RmlsdGVyRWZmZWN0Kj4mIG1lcmdlSW5wdXRzKQogewogICAgIG1fbWVyZ2VJbnB1dHMg
PSBtZXJnZUlucHV0czsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVNZXJnZTo6ZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKK3ZvaWQgRkVNZXJnZTo6YXBwbHkoKQog
ewotICAgIHRzIDw8ICJbdHlwZT1NRVJHRV0gIjsKLSAgICBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVy
bmFsUmVwcmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICJbbWVyZ2UgaW5wdXRzPVsiOworfQor
Cit2b2lkIEZFTWVyZ2U6OmR1bXAoKQoreworfQorCitUZXh0U3RyZWFtJiBGRU1lcmdlOjpleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJb
dHlwZT1NRVJHRV0gIgorICAgICAgIDw8ICJbbWVyZ2UgaW5wdXRzPVsiOwogICAgIHVuc2lnbmVk
IHggPSAwOwogICAgIHVuc2lnbmVkIHNpemUgPSBtX21lcmdlSW5wdXRzLnNpemUoKTsKICAgICB3
aGlsZSAoeCA8IHNpemUpIHsKQEAgLTYwLDcgKzY4LDcgQEAgVGV4dFN0cmVhbSYgU1ZHRkVNZXJn
ZTo6ZXh0ZXJuYWxSZXByZXNlbgogICAgICAgICBpZiAoeCA8IG1fbWVyZ2VJbnB1dHMuc2l6ZSgp
KQogICAgICAgICAgICAgdHMgPDwgIiwgIjsKICAgICB9Ci0gICAgdHMgPDwgIl1dIjsKKyAgICB0
cyA8PCAiXV0iOyAgICAgICAgCiAgICAgcmV0dXJuIHRzOwogfQogCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsMjggKzIzLDI4IEBACiAjZGVmaW5lIFNWR0ZFTWVyZ2VfaAogCiAjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNW
R0ZFTWVyZ2UgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTVkdGRU1lcmdlPiBjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWVyZ2VJbnB1
dHMoKSBjb25zdDsKLSAgICB2b2lkIHNldE1lcmdlSW5wdXRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBtZXJnZUlucHV0cyk7Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYg
UExBVEZPUk0oQ0kpCi0gICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29uc3QgRmxv
YXRSZWN0JiBiYm94KSBjb25zdDsKLSNlbmRpZgorICAgIGNsYXNzIEZFTWVyZ2UgOiBwdWJsaWMg
RmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZF
TWVyZ2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4mKTsKKworICAgICAgICBj
b25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4mIG1lcmdlSW5wdXRzKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0TWVyZ2VJbnB1dHMoY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBtZXJnZUlu
cHV0cyk7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAgU1ZHRkVNZXJn
ZShTVkdSZXNvdXJjZUZpbHRlciopOworICAgIHByaXZhdGU6CisgICAgICAgIEZFTWVyZ2UoY29u
c3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+Jik7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBtX21lcmdl
SW5wdXRzOwotfTsKKyAgICAgICAgVmVjdG9yPEZpbHRlckVmZmVjdCo+IG1fbWVyZ2VJbnB1dHM7
CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCShyZXZpc2lvbiAzNTAw
NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNjggKzIzLDgyIEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVNb3JwaG9sb2d5LmgiCi0jaW5jbHVk
ZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRU1vcnBob2xvZ3k6OlNWR0ZFTW9ycGhvbG9neShTVkdS
ZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0KGZpbHRlcikKLSAg
ICAsIG1fb3BlcmF0b3IoU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTikKLSAgICAsIG1f
cmFkaXVzWCgwLjBmKQotICAgICwgbV9yYWRpdXNZKDAuMGYpCitGRU1vcnBob2xvZ3k6OkZFTW9y
cGhvbG9neShGaWx0ZXJFZmZlY3QqIGluLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGNv
bnN0IGZsb2F0JiByYWRpdXNYLCBjb25zdCBmbG9hdCYgcmFkaXVzWSkKKyAgICA6IEZpbHRlckVm
ZmVjdCgpCisgICAgLCBtX2luKGluKQorICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX3JhZGl1
c1gocmFkaXVzWCkKKyAgICAsIG1fcmFkaXVzWShyYWRpdXNZKQogewogfQogCi1TVkdNb3JwaG9s
b2d5T3BlcmF0b3JUeXBlIFNWR0ZFTW9ycGhvbG9neTo6bW9ycGhvbG9neU9wZXJhdG9yKCkgY29u
c3QKK1Bhc3NSZWZQdHI8RkVNb3JwaG9sb2d5PiBGRU1vcnBob2xvZ3k6OmNyZWF0ZShGaWx0ZXJF
ZmZlY3QqIGluLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGNvbnN0IGZsb2F0JiByYWRp
dXNYLCBjb25zdCBmbG9hdCYgcmFkaXVzWSkKIHsKLSAgICByZXR1cm4gbV9vcGVyYXRvcjsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZFTW9ycGhvbG9neShpbiwgdHlwZSwgcmFkaXVzWCwgcmFk
aXVzWSkpOwogfQogCi12b2lkIFNWR0ZFTW9ycGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9y
KFNWR01vcnBob2xvZ3lPcGVyYXRvclR5cGUgX29wZXJhdG9yKQorTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSBGRU1vcnBob2xvZ3k6Om1vcnBob2xvZ3lPcGVyYXRvcigpIGNvbnN0CiB7Ci0gICAgbV9v
cGVyYXRvciA9IF9vcGVyYXRvcjsKKyAgICByZXR1cm4gbV90eXBlOwogfQogCi1mbG9hdCBTVkdG
RU1vcnBob2xvZ3k6OnJhZGl1c1goKSBjb25zdAordm9pZCBGRU1vcnBob2xvZ3k6OnNldE1vcnBo
b2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUpCit7CisgICAgbV90eXBl
ID0gdHlwZTsKK30KKworZmxvYXQgRkVNb3JwaG9sb2d5OjpyYWRpdXNYKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9yYWRpdXNYOwogfQogCi12b2lkIFNWR0ZFTW9ycGhvbG9neTo6c2V0UmFkaXVz
WChmbG9hdCByYWRpdXNYKQordm9pZCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1goZmxvYXQgcmFk
aXVzWCkKIHsKICAgICBtX3JhZGl1c1ggPSByYWRpdXNYOwogfQogCi1mbG9hdCBTVkdGRU1vcnBo
b2xvZ3k6OnJhZGl1c1koKSBjb25zdAorZmxvYXQgRkVNb3JwaG9sb2d5OjpyYWRpdXNZKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9yYWRpdXNZOwogfQogCi12b2lkIFNWR0ZFTW9ycGhvbG9neTo6
c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQordm9pZCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1ko
ZmxvYXQgcmFkaXVzWSkKIHsKICAgICBtX3JhZGl1c1kgPSByYWRpdXNZOwogfQogCi1zdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU1ZHTW9ycGhvbG9neU9wZXJh
dG9yVHlwZSB0KQordm9pZCBGRU1vcnBob2xvZ3k6OmFwcGx5KCkKK3sKK30KKwordm9pZCBGRU1v
cnBob2xvZ3k6OmR1bXAoKQoreworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0KQogewogICAgIHN3aXRjaCAo
dCkKICAgICB7Ci0gICAgICAgIGNhc2UgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTjoK
KyAgICAgICAgY2FzZSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTjoKICAgICAgICAgICAg
IHRzIDw8ICJVTktOT1dOIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX01PUlBIT0xPR1lfT1BF
UkFUT1JfRVJPREU6CisgICAgICAgIGNhc2UgRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFOgog
ICAgICAgICAgICAgdHMgPDwgIkVST0RFIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX01PUlBI
T0xPR1lfT1BFUkFUT1JfRElBTEFURToKKyAgICAgICAgY2FzZSBGRU1PUlBIT0xPR1lfT1BFUkFU
T1JfRElBTEFURToKICAgICAgICAgICAgIHRzIDw8ICJESUFMQVRFIjsgYnJlYWs7CiAgICAgfQog
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgU1ZHRkVNb3JwaG9sb2d5OjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYgRkVNb3Jw
aG9sb2d5OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewot
ICAgIHRzIDw8ICJbdHlwZT1NT1JQSE9MT0dZLU9QRVJBVE9SXSAiOwotICAgIFNWR0ZpbHRlckVm
ZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbb3BlcmF0b3Ig
dHlwZT0iIDw8IG1vcnBob2xvZ3lPcGVyYXRvcigpIDw8ICJdIgotICAgICAgICA8PCAiIFtyYWRp
dXMgeD0iIDw8IHJhZGl1c1goKSA8PCAiIHk9IiA8PCByYWRpdXNZKCkgPDwgIl0iOworICAgIHRz
IDw8ICJbdHlwZT1NT1JQSE9MT0dZXSAiCisgICAgICAgIDw8ICIgW2luMT0iIDw8IG1faW4uZ2V0
KCkgPDwgIl0iCisgICAgICAgIDw8ICIgW29wZXJhdG9yIHR5cGU9IiA8PCBtb3JwaG9sb2d5T3Bl
cmF0b3IoKSA8PCAiXSIKKyAgICAgICAgPDwgIiBbcmFkaXVzIHg9IiA8PCByYWRpdXNYKCkgPDwg
IiB5PSIgPDwgcmFkaXVzWSgpIDw8ICJdIjsgICAgICAgIAogICAgIHJldHVybiB0czsKIH0KIApJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5o
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVN
b3JwaG9sb2d5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDM2ICsyMyw0MCBAQAogI2RlZmluZSBT
VkdGRU1vcnBob2xvZ3lfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU1ZHTW9ycGhvbG9neU9wZXJhdG9yVHlw
ZSB7Ci0gICAgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDAsCi0gICAgU1ZHX01P
UlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgICA9IDEsCi0gICAgU1ZHX01PUlBIT0xPR1lfT1BFUkFU
T1JfRElBTEFURSA9IDIKLX07Ci0KLWNsYXNzIFNWR0ZFTW9ycGhvbG9neSA6IHB1YmxpYyBTVkdG
aWx0ZXJFZmZlY3QgewotcHVibGljOgotICAgIFNWR0ZFTW9ycGhvbG9neShTVkdSZXNvdXJjZUZp
bHRlciopOwotCi0gICAgU1ZHTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtb3JwaG9sb2d5T3BlcmF0
b3IoKSBjb25zdDsKLSAgICB2b2lkIHNldE1vcnBob2xvZ3lPcGVyYXRvcihTVkdNb3JwaG9sb2d5
T3BlcmF0b3JUeXBlKTsKLQotICAgIGZsb2F0IHJhZGl1c1goKSBjb25zdDsKLSAgICB2b2lkIHNl
dFJhZGl1c1goZmxvYXQpOwotCi0gICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0OwotICAgIHZvaWQg
c2V0UmFkaXVzWShmbG9hdCk7Ci0KLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFNWR01vcnBo
b2xvZ3lPcGVyYXRvclR5cGUgbV9vcGVyYXRvcjsKLSAgICBmbG9hdCBtX3JhZGl1c1g7Ci0gICAg
ZmxvYXQgbV9yYWRpdXNZOwotfTsKKyAgICBlbnVtIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgewor
ICAgICAgICBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDAsCisgICAgICAgIEZFTU9S
UEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAgID0gMSwKKyAgICAgICAgRkVNT1JQSE9MT0dZX09QRVJB
VE9SX0RJQUxBVEUgPSAyCisgICAgfTsKKworICAgIGNsYXNzIEZFTW9ycGhvbG9neSA6IHB1Ymxp
YyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGFzc1JlZlB0cjxGRU1vcnBo
b2xvZ3k+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBjb25z
dCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7ICAKKyAgICAgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlw
ZSBtb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRNb3JwaG9sb2d5
T3BlcmF0b3IoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSk7CisKKyAgICAgICAgZmxvYXQgcmFkaXVz
WCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFJhZGl1c1goZmxvYXQpOworCisgICAgICAgIGZs
b2F0IHJhZGl1c1koKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRSYWRpdXNZKGZsb2F0KTsKKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAo
KTsKKyAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBGRU1vcnBob2xvZ3koRmlsdGVy
RWZmZWN0KiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9h
dCYpOworICAgICAgICAKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9pbjsKKyAgICAg
ICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtX3R5cGU7CisgICAgICAgIGZsb2F0IG1fcmFkaXVz
WDsKKyAgICAgICAgZmxvYXQgbV9yYWRpdXNZOworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNl
dC5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRU9mZnNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDQ1ICsyMyw1NSBAQAogCiAjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFT2Zmc2V0
LmgiCi0jaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1Rl
eHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRU9mZnNldDo6U1ZHRkVPZmZzZXQo
U1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNWR0ZpbHRlckVmZmVjdChmaWx0ZXIp
Ci0gICAgLCBtX2R4KDAuMGYpCi0gICAgLCBtX2R5KDAuMGYpCitGRU9mZnNldDo6RkVPZmZzZXQo
RmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgZmxvYXQmIGR4LCBjb25zdCBmbG9hdCYgZHkpCisgICAg
OiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikKKyAgICAsIG1fZHgoZHgpCisgICAgLCBt
X2R5KGR5KQogewogfQogCi1QYXNzUmVmUHRyPFNWR0ZFT2Zmc2V0PiBTVkdGRU9mZnNldDo6Y3Jl
YXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZFT2Zmc2V0PiBGRU9m
ZnNldDo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGZsb2F0JiBkeCwgY29uc3QgZmxv
YXQmIGR5KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVPZmZzZXQoZmlsdGVyKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRU9mZnNldChpbiwgZHgsIGR5KSk7CiB9CiAKLWZs
b2F0IFNWR0ZFT2Zmc2V0OjpkeCgpIGNvbnN0CitmbG9hdCBGRU9mZnNldDo6ZHgoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2R4OwogfQogCi12b2lkIFNWR0ZFT2Zmc2V0OjpzZXREeChmbG9hdCBk
eCkKK3ZvaWQgRkVPZmZzZXQ6OnNldER4KGZsb2F0IGR4KQogewogICAgIG1fZHggPSBkeDsKIH0K
IAotZmxvYXQgU1ZHRkVPZmZzZXQ6OmR5KCkgY29uc3QKK2Zsb2F0IEZFT2Zmc2V0OjpkeSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fZHk7CiB9CiAKLXZvaWQgU1ZHRkVPZmZzZXQ6OnNldER5KGZs
b2F0IGR5KQordm9pZCBGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCiB7CiAgICAgbV9keSA9IGR5
OwogfQogCi1UZXh0U3RyZWFtJiBTVkdGRU9mZnNldDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cykgY29uc3QKK3ZvaWQgRkVPZmZzZXQ6OmFwcGx5KCkKIHsKLSAgICB0cyA8
PCAiW3R5cGU9T0ZGU0VUXSAiOyBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24odHMpCit9CisKK3ZvaWQgRkVPZmZzZXQ6OmR1bXAoKQoreworfQorCitUZXh0U3RyZWFtJiBG
RU9mZnNldDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sK
KyAgICB0cyA8PCAiW3R5cGU9T0ZGU0VUXSAiCisgICAgICAgIDw8ICIgW2luMT0iIDw8IG1faW4u
Z2V0KCkgPDwgIl0iCiAgICAgICAgIDw8ICIgW2R4PSIgPDwgZHgoKSA8PCAiIGR5PSIgPDwgZHko
KSA8PCAiXSI7CiAgICAgcmV0dXJuIHRzOwogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMyICsy
MywzMSBAQAogI2RlZmluZSBTVkdGRU9mZnNldF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRkVPZmZz
ZXQgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdGRU9mZnNldD4gY3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKik7Ci0KLSAgICBmbG9h
dCBkeCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RHgoZmxvYXQpOwotCi0gICAgZmxvYXQgZHkoKSBj
b25zdDsKLSAgICB2b2lkIHNldER5KGZsb2F0KTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9S
TShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3Qm
IGJib3gpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgU1ZHRkVPZmZzZXQoU1ZHUmVz
b3VyY2VGaWx0ZXIqKTsKLQotICAgIGZsb2F0IG1fZHg7Ci0gICAgZmxvYXQgbV9keTsKLX07Cisg
ICAgY2xhc3MgRkVPZmZzZXQgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFT2Zmc2V0PiBjcmVhdGUoRmlsdGVyRWZmZWN0Kiwg
Y29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOworCisgICAgICAgIGZsb2F0IGR4KCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0RHgoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGR5KCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0RHkoZmxvYXQpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICBUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKKworICAgIHByaXZh
dGU6CisgICAgICAgIEZFT2Zmc2V0KEZpbHRlckVmZmVjdCosIGNvbnN0IGZsb2F0JiwgY29uc3Qg
ZmxvYXQmKTsKKworICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOworICAgICAgICBm
bG9hdCBtX2R4OworICAgICAgICBmbG9hdCBtX2R5OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDEwOCArMjMsMTIyIEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgiCi0jaW5jbHVk
ZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRVNwZWN1bGFyTGlnaHRpbmc6OlNWR0ZFU3BlY3VsYXJM
aWdodGluZyhTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotICAgIDogU1ZHRmlsdGVyRWZmZWN0
KGZpbHRlcikKLSAgICAsIG1fbGlnaHRpbmdDb2xvcigpCi0gICAgLCBtX3N1cmZhY2VTY2FsZSgw
LjBmKQotICAgICwgbV9zcGVjdWxhckNvbnN0YW50KDAuMGYpCi0gICAgLCBtX3NwZWN1bGFyRXhw
b25lbnQoMC4wZikKLSAgICAsIG1fa2VybmVsVW5pdExlbmd0aFgoMC4wZikKLSAgICAsIG1fa2Vy
bmVsVW5pdExlbmd0aFkoMC4wZikKLSAgICAsIG1fbGlnaHRTb3VyY2UoMCkKK0ZFU3BlY3VsYXJM
aWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IENvbG9y
JiBsaWdodGluZ0NvbG9yLCBjb25zdCBmbG9hdCYgc3VyZmFjZVNjYWxlLAorICAgIGNvbnN0IGZs
b2F0JiBzcGVjdWxhckNvbnN0YW50LCBjb25zdCBmbG9hdCYgc3BlY3VsYXJFeHBvbmVudCwgY29u
c3QgZmxvYXQmIGtlcm5lbFVuaXRMZW5ndGhYLAorICAgIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0
TGVuZ3RoWSwgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQorICAgIDogRmlsdGVyRWZmZWN0KCkK
KyAgICAsIG1faW4oaW4pCisgICAgLCBtX2xpZ2h0aW5nQ29sb3IobGlnaHRpbmdDb2xvcikKKyAg
ICAsIG1fc3VyZmFjZVNjYWxlKHN1cmZhY2VTY2FsZSkKKyAgICAsIG1fc3BlY3VsYXJDb25zdGFu
dChzcGVjdWxhckNvbnN0YW50KQorICAgICwgbV9zcGVjdWxhckV4cG9uZW50KHNwZWN1bGFyRXhw
b25lbnQpCisgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKGtlcm5lbFVuaXRMZW5ndGhYKQorICAg
ICwgbV9rZXJuZWxVbml0TGVuZ3RoWShrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAsIG1fbGlnaHRT
b3VyY2UobGlnaHRTb3VyY2UpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHRkVTcGVjdWxhckxpZ2h0
aW5nPiBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciogZmls
dGVyKQorUGFzc1JlZlB0cjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6
Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLAorICAg
IGNvbnN0IGZsb2F0JiBzdXJmYWNlU2NhbGUsIGNvbnN0IGZsb2F0JiBzcGVjdWxhckNvbnN0YW50
LCBjb25zdCBmbG9hdCYgc3BlY3VsYXJFeHBvbmVudCwKKyAgICBjb25zdCBmbG9hdCYga2VybmVs
VW5pdExlbmd0aFgsIGNvbnN0IGZsb2F0JiBrZXJuZWxVbml0TGVuZ3RoWSwgTGlnaHRTb3VyY2Uq
IGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVTcGVjdWxhckxpZ2h0
aW5nKGluLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3RhbnQsIHNw
ZWN1bGFyRXhwb25lbnQsCisgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVu
Z3RoWSwgbGlnaHRTb3VyY2UpKTsKIH0KIAotU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjp+U1ZHRkVT
cGVjdWxhckxpZ2h0aW5nKCkKK0ZFU3BlY3VsYXJMaWdodGluZzo6fkZFU3BlY3VsYXJMaWdodGlu
ZygpCiB7CiB9CiAKLUNvbG9yIFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRpbmdDb2xvcigp
IGNvbnN0CitDb2xvciBGRVNwZWN1bGFyTGlnaHRpbmc6OmxpZ2h0aW5nQ29sb3IoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2xpZ2h0aW5nQ29sb3I7CiB9CiAKLXZvaWQgU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nOjpzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKQordm9p
ZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImIGxpZ2h0
aW5nQ29sb3IpCiB7CiAgICAgbV9saWdodGluZ0NvbG9yID0gbGlnaHRpbmdDb2xvcjsKIH0KIAot
ZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzdXJmYWNlU2NhbGUoKSBjb25zdAorZmxvYXQg
RkVTcGVjdWxhckxpZ2h0aW5nOjpzdXJmYWNlU2NhbGUoKSBjb25zdAogewogICAgIHJldHVybiBt
X3N1cmZhY2VTY2FsZTsKIH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFN1cmZh
Y2VTY2FsZShmbG9hdCBzdXJmYWNlU2NhbGUpCit2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0
U3VyZmFjZVNjYWxlKGZsb2F0IHN1cmZhY2VTY2FsZSkKIHsKICAgICBtX3N1cmZhY2VTY2FsZSA9
IHN1cmZhY2VTY2FsZTsKIH0KIAotZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzcGVjdWxh
ckNvbnN0YW50KCkgY29uc3QKK2Zsb2F0IEZFU3BlY3VsYXJMaWdodGluZzo6c3BlY3VsYXJDb25z
dGFudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3BlY3VsYXJDb25zdGFudDsKIH0KIAotdm9p
ZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFyQ29uc3RhbnQoZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCkKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckNvbnN0YW50
KGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQpCiB7CiAgICAgbV9zcGVjdWxhckNvbnN0YW50ID0gc3Bl
Y3VsYXJDb25zdGFudDsKIH0KIAotZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjpzcGVjdWxh
ckV4cG9uZW50KCkgY29uc3QKK2Zsb2F0IEZFU3BlY3VsYXJMaWdodGluZzo6c3BlY3VsYXJFeHBv
bmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVudDsKIH0KIAotdm9p
ZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFyRXhwb25lbnQoZmxvYXQgc3BlY3Vs
YXJFeHBvbmVudCkKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckV4cG9uZW50
KGZsb2F0IHNwZWN1bGFyRXhwb25lbnQpCiB7CiAgICAgbV9zcGVjdWxhckV4cG9uZW50ID0gc3Bl
Y3VsYXJFeHBvbmVudDsKIH0KIAotZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nOjprZXJuZWxV
bml0TGVuZ3RoWCgpIGNvbnN0CitmbG9hdCBGRVNwZWN1bGFyTGlnaHRpbmc6Omtlcm5lbFVuaXRM
ZW5ndGhYKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsKIH0KIAot
dm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhYKQordm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRM
ZW5ndGhYKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKQogewogICAgIG1fa2VybmVsVW5pdExlbmd0
aFggPSBrZXJuZWxVbml0TGVuZ3RoWDsKIH0KIAotZmxvYXQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
OjprZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0CitmbG9hdCBGRVNwZWN1bGFyTGlnaHRpbmc6Omtl
cm5lbFVuaXRMZW5ndGhZKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3Ro
WTsKIH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZ
KGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKQordm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtl
cm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKQogewogICAgIG1fa2VybmVs
VW5pdExlbmd0aFkgPSBrZXJuZWxVbml0TGVuZ3RoWTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2Uq
IFNWR0ZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRT
b3VyY2UqIEZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2xpZ2h0U291cmNlLmdldCgpOwogfQogCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGlu
Zzo6c2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKQordm9pZCBGRVNwZWN1
bGFyTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSkKIHsK
ICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLVRleHRTdHJlYW0mIFNWR0ZF
U3BlY3VsYXJMaWdodGluZzo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykg
Y29uc3QKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjphcHBseSgpCiB7Ci0gICAgdHMgPDwgIlt0
eXBlPVNQRUNVTEFSLUxJR0hUSU5HXSAiOwotICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBbc3VyZmFjZSBzY2FsZT0iIDw8IG1fc3Vy
ZmFjZVNjYWxlIDw8ICJdIgotICAgICAgICA8PCAiIFtzcGVjdWFsIGNvbnN0YW50PSIgPDwgbV9z
cGVjdWxhckNvbnN0YW50IDw8ICJdIgotICAgICAgICA8PCAiIFtzcGVjdWxhciBleHBvbmVudD0i
IDw8IG1fc3BlY3VsYXJFeHBvbmVudCA8PCAiXSI7Cit9CisKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0
aW5nOjpkdW1wKCkKK3sKK30KKworVGV4dFN0cmVhbSYgRkVTcGVjdWxhckxpZ2h0aW5nOjpleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJb
dHlwZT1TUEVDVUxBUi1MSUdIVElOR10gIgorICAgICAgICA8PCAiIFtpbjE9IiA8PCBtX2luLmdl
dCgpIDw8ICJdIgorICAgICAgICA8PCAiIFtzdXJmYWNlIHNjYWxlPSIgPDwgc3VyZmFjZVNjYWxl
KCkgPDwgIl0iCisgICAgICAgIDw8ICIgW3NwZWN1bGFyIGNvbnN0YW50PSIgPDwgc3BlY3VsYXJD
b25zdGFudCgpIDw8ICJdIgorICAgICAgICA8PCAiIFtzcGVjdWxhciBleHBvbmVudD0iIDw8IHNw
ZWN1bGFyRXhwb25lbnQoKSA8PCAiXSI7CiAgICAgcmV0dXJuIHRzOwogfQogCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
LmgJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNTMgKzI1LDU0IEBACiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9yLmgi
CiAjaW5jbHVkZSAiU1ZHTGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3Qu
aCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTVkdGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0
ZShTVkdSZXNvdXJjZUZpbHRlciopOwotICAgIHZpcnR1YWwgflNWR0ZFU3BlY3VsYXJMaWdodGlu
ZygpOwotCi0gICAgQ29sb3IgbGlnaHRpbmdDb2xvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0TGln
aHRpbmdDb2xvcihjb25zdCBDb2xvciYpOwotCi0gICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRTdXJmYWNlU2NhbGUoZmxvYXQpOwotCi0gICAgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3BlY3VsYXJDb25zdGFudChmbG9hdCk7
Ci0KLSAgICBmbG9hdCBzcGVjdWxhckV4cG9uZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTcGVj
dWxhckV4cG9uZW50KGZsb2F0KTsKLQotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCk7Ci0KLSAgICBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFko
ZmxvYXQpOwotCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwotCi0gICAgdmlydHVhbCBUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKLQotI2lm
IFBMQVRGT1JNKENJKQotICAgIHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKGNvbnN0IEZs
b2F0UmVjdCYgYmJveCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTVkdGRVNwZWN1
bGFyTGlnaHRpbmcoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIENvbG9yIG1fbGlnaHRpbmdD
b2xvcjsKLSAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKLSAgICBmbG9hdCBtX3NwZWN1bGFyQ29u
c3RhbnQ7Ci0gICAgZmxvYXQgbV9zcGVjdWxhckV4cG9uZW50OwotICAgIGZsb2F0IG1fa2VybmVs
VW5pdExlbmd0aFg7Ci0gICAgZmxvYXQgbV9rZXJuZWxVbml0TGVuZ3RoWTsKLSAgICBSZWZQdHI8
TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7Ci19OworICAgIGNsYXNzIEZFU3BlY3VsYXJMaWdo
dGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgY29u
c3QgQ29sb3ImLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwKKyAgICAgICAgICAgIGNvbnN0
IGZsb2F0JiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0U291cmNlKik7CisgICAg
ICAgIHZpcnR1YWwgfkZFU3BlY3VsYXJMaWdodGluZygpOworCisgICAgICAgIENvbG9yIGxpZ2h0
aW5nQ29sb3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENv
bG9yJik7CisKKyAgICAgICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKKworICAgICAgICBmbG9hdCBzcGVjdWxhckNvbnN0
YW50KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3BlY3VsYXJDb25zdGFudChmbG9hdCk7CisK
KyAgICAgICAgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCgpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dFNwZWN1bGFyRXhwb25lbnQoZmxvYXQpOworCisgICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhYKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQpOwor
CisgICAgICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7CisgICAgICAgIHZvaWQg
c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOworCisgICAgICAgIGNvbnN0IExpZ2h0U291cmNl
KiBsaWdodFNvdXJjZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0
U291cmNlKik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgRkVTcGVj
dWxhckxpZ2h0aW5nKEZpbHRlckVmZmVjdCosIGNvbnN0IENvbG9yJiwgY29uc3QgZmxvYXQmLCBj
b25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0JiwgY29u
c3QgZmxvYXQmLCBMaWdodFNvdXJjZSopOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IG1faW47CisgICAgICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKKyAgICAgICAgZmxvYXQgbV9z
dXJmYWNlU2NhbGU7CisgICAgICAgIGZsb2F0IG1fc3BlY3VsYXJDb25zdGFudDsKKyAgICAgICAg
ZmxvYXQgbV9zcGVjdWxhckV4cG9uZW50OworICAgICAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5n
dGhYOworICAgICAgICBmbG9hdCBtX2tlcm5lbFVuaXRMZW5ndGhZOworICAgICAgICBSZWZQdHI8
TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3Bw
CShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVU
aWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTcgKzIxLDM0IEBACiAKICNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVUaWxlLmgiCisjaW5j
bHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNW
R0ZFVGlsZTo6U1ZHRkVUaWxlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCi0gICAgOiBTVkdG
aWx0ZXJFZmZlY3QoZmlsdGVyKQorRkVUaWxlOjpGRVRpbGUoRmlsdGVyRWZmZWN0KiBpbikKKyAg
ICA6IEZpbHRlckVmZmVjdCgpCisgICAgLCBtX2luKGluKQogewogfQogCi1QYXNzUmVmUHRyPFNW
R0ZFVGlsZT4gU1ZHRkVUaWxlOjpjcmVhdGUoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK1Bh
c3NSZWZQdHI8RkVUaWxlPiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXJFZmZlY3QqIGluKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRkVUaWxlKGZpbHRlcikpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRkVUaWxlKGluKSk7Cit9CisKK3ZvaWQgRkVUaWxlOjphcHBseSgpCit7Cit9CisK
K3ZvaWQgRkVUaWxlOjpkdW1wKCkKK3sKK30KKworVGV4dFN0cmVhbSYgRkVUaWxlOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJbdHlw
ZT1USUxFXSAiCisgICAgICAgIDw8ICIgW2luMT0iIDw8IG1faW4uZ2V0KCkgPDwgIl0iOworICAg
IHJldHVybiB0czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDIwICsyMywyMiBAQAogI2RlZmluZSBTVkdGRVRpbGVfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi0gICAgY2xh
c3MgU1ZHRkVUaWxlIDogcHVibGljIFNWR0ZpbHRlckVmZmVjdCB7CisgICAgY2xhc3MgRkVUaWxl
IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRVRpbGU+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqKTsKIAotICAgICNp
ZiBQTEFURk9STShDSSkKLSAgICAgICAgdmlydHVhbCBDSUZpbHRlciogZ2V0Q0lGaWx0ZXIoY29u
c3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdDsKLSAgICAjZW5kaWYKKyAgICAgICAgdmlydHVhbCB2
b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OworICAg
ICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBTVkdGRVRpbGUoU1ZHUmVzb3VyY2VGaWx0ZXIq
KTsKLQorICAgICAgICBGRVRpbGUoRmlsdGVyRWZmZWN0Kik7CisgICAgICAgIAorICAgICAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2luOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVs
ZW5jZS5jcHAJKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVR1cmJ1bGVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMTEgKzIzLDEyMCBA
QAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNW
R0ZFVHVyYnVsZW5jZS5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlICJTVkdS
ZW5kZXJUcmVlQXNUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVUdXJidWxl
bmNlOjpTVkdGRVR1cmJ1bGVuY2UoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKLSAgICA6IFNW
R0ZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAgLCBtX2Jhc2VGcmVxdWVuY3lYKDAuMGYpCi0gICAg
LCBtX2Jhc2VGcmVxdWVuY3lZKDAuMGYpCi0gICAgLCBtX251bU9jdGF2ZXMoMCkKLSAgICAsIG1f
c2VlZCgwKQotICAgICwgbV9zdGl0Y2hUaWxlcyhmYWxzZSkKLSAgICAsIG1fdHlwZShTVkdfVFVS
QlVMRU5DRV9UWVBFX1VOS05PV04pCitGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShUdXJidWxh
bmNlVHlwZSB0eXBlLCBjb25zdCBmbG9hdCYgYmFzZUZyZXF1ZW5jeVgsIGNvbnN0IGZsb2F0JiBi
YXNlRnJlcXVlbmN5WSwKKyAgICBjb25zdCBpbnQmIG51bU9jdGF2ZXMsIGNvbnN0IGZsb2F0JiBz
ZWVkLCBib29sIHN0aXRjaFRpbGVzKQorICAgIDogRmlsdGVyRWZmZWN0KCkKKyAgICAsIG1fdHlw
ZSh0eXBlKQorICAgICwgbV9iYXNlRnJlcXVlbmN5WChiYXNlRnJlcXVlbmN5WCkKKyAgICAsIG1f
YmFzZUZyZXF1ZW5jeVkoYmFzZUZyZXF1ZW5jeVkpCisgICAgLCBtX251bU9jdGF2ZXMobnVtT2N0
YXZlcykKKyAgICAsIG1fc2VlZChzZWVkKQorICAgICwgbV9zdGl0Y2hUaWxlcyhzdGl0Y2hUaWxl
cykKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdGRVR1cmJ1bGVuY2U+IFNWR0ZFVHVyYnVsZW5jZTo6
Y3JlYXRlKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCitQYXNzUmVmUHRyPEZFVHVyYnVsZW5j
ZT4gRkVUdXJidWxlbmNlOjpjcmVhdGUoVHVyYnVsYW5jZVR5cGUgdHlwZSwgY29uc3QgZmxvYXQm
IGJhc2VGcmVxdWVuY3lYLCBjb25zdCBmbG9hdCYgYmFzZUZyZXF1ZW5jeVksCisgICAgY29uc3Qg
aW50JiBudW1PY3RhdmVzLCBjb25zdCBmbG9hdCYgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcykKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZFVHVyYnVsZW5jZShmaWx0ZXIpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEZFVHVyYnVsZW5jZSh0eXBlLCBiYXNlRnJlcXVlbmN5WCwgYmFz
ZUZyZXF1ZW5jeVksIG51bU9jdGF2ZXMsIHNlZWQsIHN0aXRjaFRpbGVzKSk7CiB9CiAKLVNWR1R1
cmJ1bGFuY2VUeXBlIFNWR0ZFVHVyYnVsZW5jZTo6dHlwZSgpIGNvbnN0CitUdXJidWxhbmNlVHlw
ZSBGRVR1cmJ1bGVuY2U6OnR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3R5cGU7CiB9CiAK
LXZvaWQgU1ZHRkVUdXJidWxlbmNlOjpzZXRUeXBlKFNWR1R1cmJ1bGFuY2VUeXBlIHR5cGUpCit2
b2lkIEZFVHVyYnVsZW5jZTo6c2V0VHlwZShUdXJidWxhbmNlVHlwZSB0eXBlKQogewogICAgIG1f
dHlwZSA9IHR5cGU7CiB9CiAKLWZsb2F0IFNWR0ZFVHVyYnVsZW5jZTo6YmFzZUZyZXF1ZW5jeVko
KSBjb25zdAorZmxvYXQgRkVUdXJidWxlbmNlOjpiYXNlRnJlcXVlbmN5WSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fYmFzZUZyZXF1ZW5jeVk7CiB9CiAKLXZvaWQgU1ZHRkVUdXJidWxlbmNlOjpz
ZXRCYXNlRnJlcXVlbmN5WShmbG9hdCBiYXNlRnJlcXVlbmN5WSkKK3ZvaWQgRkVUdXJidWxlbmNl
OjpzZXRCYXNlRnJlcXVlbmN5WShmbG9hdCBiYXNlRnJlcXVlbmN5WSkKIHsKICAgICBtX2Jhc2VG
cmVxdWVuY3lZID0gYmFzZUZyZXF1ZW5jeVk7CiB9CiAKLWZsb2F0IFNWR0ZFVHVyYnVsZW5jZTo6
YmFzZUZyZXF1ZW5jeVgoKSBjb25zdAorZmxvYXQgRkVUdXJidWxlbmNlOjpiYXNlRnJlcXVlbmN5
WCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmFzZUZyZXF1ZW5jeVg7CiB9CiAKLXZvaWQgU1ZH
RkVUdXJidWxlbmNlOjpzZXRCYXNlRnJlcXVlbmN5WChmbG9hdCBiYXNlRnJlcXVlbmN5WCkKK3Zv
aWQgRkVUdXJidWxlbmNlOjpzZXRCYXNlRnJlcXVlbmN5WChmbG9hdCBiYXNlRnJlcXVlbmN5WCkK
IHsKICAgICAgICBtX2Jhc2VGcmVxdWVuY3lYID0gYmFzZUZyZXF1ZW5jeVg7CiB9CiAKLWZsb2F0
IFNWR0ZFVHVyYnVsZW5jZTo6c2VlZCgpIGNvbnN0CitmbG9hdCBGRVR1cmJ1bGVuY2U6OnNlZWQo
KSBjb25zdAogewogICAgIHJldHVybiBtX3NlZWQ7IAogfQogCi12b2lkIFNWR0ZFVHVyYnVsZW5j
ZTo6c2V0U2VlZChmbG9hdCBzZWVkKQordm9pZCBGRVR1cmJ1bGVuY2U6OnNldFNlZWQoZmxvYXQg
c2VlZCkKIHsKICAgICBtX3NlZWQgPSBzZWVkOwogfQogCi1pbnQgU1ZHRkVUdXJidWxlbmNlOjpu
dW1PY3RhdmVzKCkgY29uc3QKK2ludCBGRVR1cmJ1bGVuY2U6Om51bU9jdGF2ZXMoKSBjb25zdAog
ewogICAgIHJldHVybiBtX251bU9jdGF2ZXM7CiB9CiAKLXZvaWQgU1ZHRkVUdXJidWxlbmNlOjpz
ZXROdW1PY3RhdmVzKGJvb2wgbnVtT2N0YXZlcykKK3ZvaWQgRkVUdXJidWxlbmNlOjpzZXROdW1P
Y3RhdmVzKGJvb2wgbnVtT2N0YXZlcykKIHsKICAgICBtX251bU9jdGF2ZXMgPSBudW1PY3RhdmVz
OwogfQogCi1ib29sIFNWR0ZFVHVyYnVsZW5jZTo6c3RpdGNoVGlsZXMoKSBjb25zdAorYm9vbCBG
RVR1cmJ1bGVuY2U6OnN0aXRjaFRpbGVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdGl0Y2hU
aWxlczsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2U6OnNldFN0aXRjaFRpbGVzKGJvb2wgc3Rp
dGNoKQordm9pZCBGRVR1cmJ1bGVuY2U6OnNldFN0aXRjaFRpbGVzKGJvb2wgc3RpdGNoKQogewog
ICAgIG1fc3RpdGNoVGlsZXMgPSBzdGl0Y2g7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTVkdUdXJidWxhbmNlVHlwZSB0KQordm9pZCBGRVR1cmJ1
bGVuY2U6OmFwcGx5KCkKK3sKK30KKwordm9pZCBGRVR1cmJ1bGVuY2U6OmR1bXAoKQoreworfQor
CitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVHVyYnVsYW5j
ZVR5cGUgdCkKIHsKICAgICBzd2l0Y2ggKHQpCiAgICAgewotICAgICAgICBjYXNlIFNWR19UVVJC
VUxFTkNFX1RZUEVfVU5LTk9XTjoKKyAgICAgICAgY2FzZSBGRVRVUkJVTEVOQ0VfVFlQRV9VTktO
T1dOOgogICAgICAgICAgICAgdHMgPDwgIlVOS05PV04iOyBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0U6CisgICAgICAgIGNhc2UgRkVUVVJCVUxFTkNF
X1RZUEVfVFVSQlVMRU5DRToKICAgICAgICAgICAgIHRzIDw8ICJUVVJCVUxBTkNFIjsgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0U6CisgICAgICAg
IGNhc2UgRkVUVVJCVUxFTkNFX1RZUEVfRlJBQ1RBTE5PSVNFOgogICAgICAgICAgICAgdHMgPDwg
Ik5PSVNFIjsgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
U1ZHRkVUdXJidWxlbmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBj
b25zdAorVGV4dFN0cmVhbSYgRkVUdXJidWxlbmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAogewotICAgIHRzIDw8ICJbdHlwZT1UVVJCVUxFTkNFXSAiOwot
ICAgIFNWR0ZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMg
PDwgIiBbdHVyYnVsZW5jZSB0eXBlPSIgPDwgdHlwZSgpIDw8ICJdIgorICAgIHRzIDw8ICJbdHlw
ZT1UVVJCVUxFTkNFXSAiCisgICAgICAgIDw8ICIgW3R1cmJ1bGVuY2UgdHlwZT0iIDw8IHR5cGUo
KSA8PCAiXSIKICAgICAgICAgPDwgIiBbYmFzZSBmcmVxdWVuY3kgeD0iIDw8IGJhc2VGcmVxdWVu
Y3lYKCkgPDwgIiB5PSIgPDwgYmFzZUZyZXF1ZW5jeVkoKSA8PCAiXSIKICAgICAgICAgPDwgIiBb
c2VlZD0iIDw8IHNlZWQoKSA8PCAiXSIKICAgICAgICAgPDwgIiBbbnVtIG9jdGF2ZXM9IiA8PCBu
dW1PY3RhdmVzKCkgPDwgIl0iCiAgICAgICAgIDw8ICIgW3N0aXRjaCB0aWxlcz0iIDw8IHN0aXRj
aFRpbGVzKCkgPDwgIl0iOwotICAgIHJldHVybiB0czsKIAorICAgIHJldHVybiB0czsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVR1cmJ1bGVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDUwICsyMyw1NCBAQAogI2RlZmluZSBTVkdGRVR1cmJ1bGVuY2VfaAogCiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgor
I2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0g
U1ZHVHVyYnVsYW5jZVR5cGUgewotICAgIFNWR19UVVJCVUxFTkNFX1RZUEVfVU5LTk9XTiAgICAg
ID0gMCwKLSAgICBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDEsCi0gICAgU1ZH
X1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFICAgPSAyCi19OwotCi1jbGFzcyBTVkdGRVR1cmJ1
bGVuY2UgOiBwdWJsaWMgU1ZHRmlsdGVyRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRVR1cmJ1bGVuY2U+IGNyZWF0ZShTVkdSZXNvdXJjZUZpbHRlciopOwotCi0g
ICAgU1ZHVHVyYnVsYW5jZVR5cGUgdHlwZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VHlwZShTVkdU
dXJidWxhbmNlVHlwZSk7Ci0KLSAgICBmbG9hdCBiYXNlRnJlcXVlbmN5WSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0QmFzZUZyZXF1ZW5jeVkoZmxvYXQpOwotCi0gICAgZmxvYXQgYmFzZUZyZXF1ZW5j
eVgoKSBjb25zdDsKLSAgICB2b2lkIHNldEJhc2VGcmVxdWVuY3lYKGZsb2F0KTsKLQotICAgIGZs
b2F0IHNlZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFNlZWQoZmxvYXQpOwotCi0gICAgaW50IG51
bU9jdGF2ZXMoKSBjb25zdDsKLSAgICB2b2lkIHNldE51bU9jdGF2ZXMoYm9vbCk7Ci0KLSAgICBi
b29sIHN0aXRjaFRpbGVzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdGl0Y2hUaWxlcyhib29sKTsK
LQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVUdXJidWxlbmNlKFNWR1Jlc291cmNl
RmlsdGVyKik7Ci0KLSAgICBmbG9hdCBtX2Jhc2VGcmVxdWVuY3lYOwotICAgIGZsb2F0IG1fYmFz
ZUZyZXF1ZW5jeVk7Ci0gICAgaW50IG1fbnVtT2N0YXZlczsKLSAgICBmbG9hdCBtX3NlZWQ7Ci0g
ICAgYm9vbCBtX3N0aXRjaFRpbGVzOwotICAgIFNWR1R1cmJ1bGFuY2VUeXBlIG1fdHlwZTsKLX07
CisgICAgZW51bSBUdXJidWxhbmNlVHlwZSB7CisgICAgICAgIEZFVFVSQlVMRU5DRV9UWVBFX1VO
S05PV04gICAgICA9IDAsCisgICAgICAgIEZFVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9
IDEsCisgICAgICAgIEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgICA9IDIKKyAgICB9Owor
CisgICAgY2xhc3MgRkVUdXJidWxlbmNlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVR1cmJ1bGVuY2U+IGNyZWF0ZShUdXJi
dWxhbmNlVHlwZSwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIGNvbnN0IGludCYsIGNvbnN0
IGZsb2F0JiwKKyAgICAgICAgICAgICAgICBib29sKTsKKworICAgICAgICBUdXJidWxhbmNlVHlw
ZSB0eXBlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VHlwZShUdXJidWxhbmNlVHlwZSk7CisK
KyAgICAgICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRC
YXNlRnJlcXVlbmN5WShmbG9hdCk7CisKKyAgICAgICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVgoKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRCYXNlRnJlcXVlbmN5WChmbG9hdCk7CisKKyAgICAgICAg
ZmxvYXQgc2VlZCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlZWQoZmxvYXQpOworCisgICAg
ICAgIGludCBudW1PY3RhdmVzKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0TnVtT2N0YXZlcyhi
b29sKTsKKworICAgICAgICBib29sIHN0aXRjaFRpbGVzKCkgY29uc3Q7CisgICAgICAgIHZvaWQg
c2V0U3RpdGNoVGlsZXMoYm9vbCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgRkVUdXJidWxlbmNlKFR1cmJ1bGFuY2VUeXBlLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZs
b2F0JiwgY29uc3QgaW50JiwgY29uc3QgZmxvYXQmLAorICAgICAgICAgICAgICAgIGJvb2wpOwor
CisgICAgICAgIFR1cmJ1bGFuY2VUeXBlIG1fdHlwZTsKKyAgICAgICAgZmxvYXQgbV9iYXNlRnJl
cXVlbmN5WDsKKyAgICAgICAgZmxvYXQgbV9iYXNlRnJlcXVlbmN5WTsKKyAgICAgICAgaW50IG1f
bnVtT2N0YXZlczsKKyAgICAgICAgZmxvYXQgbV9zZWVkOworICAgICAgICBib29sIG1fc3RpdGNo
VGlsZXM7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nQ2cubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0NnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVEaWZmdXNlTGlnaHRpbmdDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw3NCAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJv
amVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFp
bnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCi0jaW5jbHVk
ZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQotI2ltcG9ydCAiV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVEaWZmdXNlTGlnaHRp
bmc6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBjb25z
dCBMaWdodFNvdXJjZSogbGlnaHQgPSBsaWdodFNvdXJjZSgpOwotICAgIGlmICghbGlnaHQpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIgY2xhc3Nd
OwotCi0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIFNW
R1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0
aWNfY2FzdDxTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxh
dGZvcm1EYXRhKCkpOwotCi0gICAgQ0lGaWx0ZXIqIGZpbHRlcjsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAi
V0tEaWZmdXNlTGlnaHRpbmciXTsKLSAgICBpZiAoIWZpbHRlcikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotICAgIENJSW1hZ2UqIGlucHV0SW1hZ2Ug
PSBmaWx0ZXJQbGF0Zm9ybURhdGEtPmlucHV0SW1hZ2UodGhpcyk7Ci0gICAgRkVfUVVBUlRaX0NI
RUNLX0lOUFVUKGlucHV0SW1hZ2UpOwotICAgIENJRmlsdGVyKiBub3JtYWxzID0gZ2V0Tm9ybWFs
TWFwKGlucHV0SW1hZ2UsIHN1cmZhY2VTY2FsZSgpKTsKLSAgICBpZiAoIW5vcm1hbHMpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBDSUZpbHRlciogbGlnaHRWZWN0b3JzID0gZ2V0TGlnaHRW
ZWN0b3JzKG5vcm1hbHMsIGxpZ2h0LCBzdXJmYWNlU2NhbGUoKSk7Ci0gICAgaWYgKCFsaWdodFZl
Y3RvcnMpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbZmlsdGVyIHNldFZhbHVlOltub3Jt
YWxzIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dE5vcm1hbE1hcCJd
OwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2xpZ2h0VmVjdG9ycyB2YWx1ZUZvcktleTpAIm91dHB1
dEltYWdlIl0gZm9yS2V5OkAiaW5wdXRMaWdodFZlY3RvcnMiXTsKLSAgICBbZmlsdGVyIHNldFZh
bHVlOmNpQ29sb3IobGlnaHRpbmdDb2xvcigpKSBmb3JLZXk6QCJpbnB1dExpZ2h0aW5nQ29sb3Ii
XTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3VyZmFj
ZVNjYWxlKCldIGZvcktleTpAImlucHV0U3VyZmFjZVNjYWxlIl07Ci0gICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmRpZmZ1c2VDb25zdGFudCgpXSBmb3JLZXk6
QCJpbnB1dERpZmZ1c2VDb25zdGFudCJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDprZXJuZWxVbml0TGVuZ3RoWCgpXSBmb3JLZXk6QCJpbnB1dEtlcm5l
bFVuaXRMZW5ndGhYIl07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0Omtlcm5lbFVuaXRMZW5ndGhZKCldIGZvcktleTpAImlucHV0S2VybmVsVW5pdExlbmd0
aFkiXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FV
QVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9TVkdGRURpc3BsYWNlbWVudE1hcENnLm1tCShyZXZpc2lvbiAzNTAw
NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVEaXNwbGFjZW1lbnRN
YXBDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUg
IlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLQot
I2ltcG9ydCAiV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1DSUZpbHRlciogU1ZHRkVEaXNwbGFjZW1lbnRNYXA6OmdldENJRmlsdGVyKGNvbnN0IEZs
b2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBTVkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVy
ID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRl
clBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRh
TWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEoKSk7Ci0KLSAgICBDSUZpbHRlciogZmlsdGVy
ID0gbmlsOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBbV0tEaXNwbGFj
ZW1lbnRNYXBGaWx0ZXIgY2xhc3NdOwotICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRo
TmFtZTpAIldLRGlzcGxhY2VtZW50TWFwRmlsdGVyIl07Ci0gICAgW2ZpbHRlciBzZXREZWZhdWx0
c107Ci0gICAgQ0lJbWFnZSogaW5wdXRJbWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW5wdXRJ
bWFnZSh0aGlzKTsKLSAgICBDSUltYWdlKiBkaXNwbGFjZW1lbnRNYXAgPSBmaWx0ZXJQbGF0Zm9y
bURhdGEtPmltYWdlRm9yTmFtZShpbjIoKSk7Ci0gICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlu
cHV0SW1hZ2UpOwotICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChkaXNwbGFjZW1lbnRNYXApOwot
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0g
ICAgW2ZpbHRlciBzZXRWYWx1ZTpkaXNwbGFjZW1lbnRNYXAgZm9yS2V5OkAiaW5wdXREaXNwbGFj
ZW1lbnRNYXAiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmdldFZlY3RvckZvckNoYW5uZWwoeENo
YW5uZWxTZWxlY3RvcigpKSBmb3JLZXk6QCJpbnB1dFhDaGFubmVsU2VsZWN0b3IiXTsKLSAgICBb
ZmlsdGVyIHNldFZhbHVlOmdldFZlY3RvckZvckNoYW5uZWwoeUNoYW5uZWxTZWxlY3RvcigpKSBm
b3JLZXk6QCJpbnB1dFlDaGFubmVsU2VsZWN0b3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6c2NhbGUoKV0gZm9yS2V5OkAiaW5wdXRTY2FsZSJdOwot
Ci0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09V
VFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVG
bG9vZENnLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVGbG9vZENnLm1tCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvU1ZHRkVGbG9vZENnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU0ICswLDAg
QEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVGbG9vZC5oIgotCi0jaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiU1ZHRkVIZWxwZXJzQ2cuaCIKLSNpbmNsdWRlICJD
Z1N1cHBvcnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVGbG9v
ZDo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jl
c291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZvcm1EYXRhID0gc3RhdGljX2Nhc3Q8U1ZHUmVz
b3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihzdmdGaWx0ZXItPnBsYXRmb3JtRGF0YSgpKTsK
LSAgICBDSUZpbHRlciogZmlsdGVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
LSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbnN0YW50Q29sb3JH
ZW5lcmF0b3IiXTsKLSAgICBbZmlsdGVyIHNldERlZmF1bHRzXTsKLSAgICBDR0NvbG9yUmVmIGNv
bG9yID0gY2dDb2xvcihmbG9vZENvbG9yKCkpOwotICAgIENHQ29sb3JSZWYgd2l0aEFscGhhID0g
Q0dDb2xvckNyZWF0ZUNvcHlXaXRoQWxwaGEoY29sb3IsIENHQ29sb3JHZXRBbHBoYShjb2xvcikg
KiBmbG9vZE9wYWNpdHkoKSk7Ci0gICAgQ0lDb2xvciogaW5wdXRDb2xvciA9IFtDSUNvbG9yIGNv
bG9yV2l0aENHQ29sb3I6d2l0aEFscGhhXTsKLSAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Ci0g
ICAgQ0dDb2xvclJlbGVhc2Uod2l0aEFscGhhKTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0
Q29sb3IgZm9yS2V5OkAiaW5wdXRDb2xvciJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJS
RUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVHYXVzc2lhbkJsdXJDZy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFR2F1c3NpYW5CbHVyQ2cu
bW0JKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9T
VkdGRUdhdXNzaWFuQmx1ckNnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBl
cnNDZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRUdhdXNzaWFu
Qmx1cjo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNW
R1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBGRV9RVUFSVFpfU0VU
VVBfSU5QVVQoQCJDSUdhdXNzaWFuUHlyYW1pZCIpOwotCi0gICAgZmxvYXQgaW5wdXRSYWRpdXMg
PSBzdGREZXZpYXRpb25YKCk7Ci0gICAgaWYgKGlucHV0UmFkaXVzICE9IHN0ZERldmlhdGlvblko
KSkgewotICAgICAgICBmbG9hdCBpbnB1dEFzcGVjdFJhdGlvID0gc3RkRGV2aWF0aW9uWCgpL3N0
ZERldmlhdGlvblkoKTsKLSAgICAgICAgLy8gRklYTUU6IGlucHV0QXNwZWN0UmF0aW8gb25seSBz
dXBwb3J0IHRoZSByYW5nZSAuNSB0byAyLjAhCi0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDppbnB1dEFzcGVjdFJhdGlvXSBmb3JLZXk6QCJpbnB1dEFz
cGVjdFJhdGlvIl07Ci0gICAgfQotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDppbnB1dFJhZGl1c10gZm9yS2V5OkAiaW5wdXRSYWRpdXMiXTsKLQotICAgIEZF
X1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OKGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVU
VVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0Nn
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhl
bHBlcnNDZy5oCShyZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBj
bGFzcyBMaWdodFNvdXJjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DSVZlY3RvciogZ2V0
VmVjdG9yRm9yQ2hhbm5lbChTVkdDaGFubmVsU2VsZWN0b3JUeXBlIGNoYW5uZWwpOworQ0lWZWN0
b3IqIGdldFZlY3RvckZvckNoYW5uZWwoQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVsKTsKIENJ
Q29sb3IqIGNpQ29sb3IoY29uc3QgQ29sb3ImIGMpOwogCiAvLyBMaWdodGluZwpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLm1tCShy
ZXZpc2lvbiAzNTAwNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVI
ZWxwZXJzQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNJVmVjdG9yKiBnZXRWZWN0b3JGb3JDaGFubmVsKFNWR0NoYW5uZWxT
ZWxlY3RvclR5cGUgY2hhbm5lbCkKK0NJVmVjdG9yKiBnZXRWZWN0b3JGb3JDaGFubmVsKENoYW5u
ZWxTZWxlY3RvclR5cGUgY2hhbm5lbCkKIHsKICAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKLSAgICBj
YXNlIFNWR19DSEFOTkVMX1VOS05PV046CisgICAgY2FzZSBDSEFOTkVMX1VOS05PV046CiAgICAg
ICAgIHJldHVybiBuaWw7ICAgIAotICAgIGNhc2UgU1ZHX0NIQU5ORUxfUjoKKyAgICBjYXNlIENI
QU5ORUxfUjoKICAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjBmIFk6MC4w
ZiBaOjAuMGYgVzowLjBmXTsKLSAgICBjYXNlIFNWR19DSEFOTkVMX0c6CisgICAgY2FzZSBDSEFO
TkVMX0c6CiAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjEuMGYg
WjowLjBmIFc6MC4wZl07Ci0gICAgY2FzZSBTVkdfQ0hBTk5FTF9COgorICAgIGNhc2UgQ0hBTk5F
TF9COgogICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMGYgWTowLjBmIFo6
MS4wZiBXOjAuMGZdOwotICAgIGNhc2UgU1ZHX0NIQU5ORUxfQToKKyAgICBjYXNlIENIQU5ORUxf
QToKICAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6MC4wZiBaOjAu
MGYgVzoxLjBmXTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3Rv
cldpdGhYOjAuMGYgWTowLjBmIFo6MC4wZiBXOjAuMGZdOwpJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9TVkdGRUltYWdlQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUltYWdlQ2cubW0JKHJldmlzaW9uIDM1MDA2KQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUltYWdlQ2cubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdGRUlt
YWdlLmgiCi0KLSNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNWR0ZFSGVscGVyc0NnLmgi
Ci0jaW5jbHVkZSAiQ2dTdXBwb3J0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0
ZXIqIFNWR0ZFSW1hZ2U6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QK
LXsKLSAgICBpZiAoIWNhY2hlZEltYWdlKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBT
VkdSZXNvdXJjZUZpbHRlciogc3ZnRmlsdGVyID0gZmlsdGVyKCk7Ci0gICAgU1ZHUmVzb3VyY2VG
aWx0ZXJQbGF0Zm9ybURhdGFNYWMqIGZpbHRlclBsYXRmb3JtRGF0YSA9IHN0YXRpY19jYXN0PFNW
R1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKj4oc3ZnRmlsdGVyLT5wbGF0Zm9ybURhdGEo
KSk7Ci0KLSAgICBDSUZpbHRlciogZmlsdGVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKLSAgICBDSUltYWdlKiBjaUltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTpj
YWNoZWRJbWFnZSgpLT5pbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCldOwotCi0gICAgZmlsdGVyID0g
W0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lBZmZpbmVUcmFuc2Zvcm0iXTsKLSAgICBbZmls
dGVyIHNldERlZmF1bHRzXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOmNpSW1hZ2UgZm9yS2V5OkAi
aW5wdXRJbWFnZSJdOwotCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IGNhY2hlZEltYWdlKCkt
PmltYWdlKCktPnJlY3QoKTsKLQotICAgIC8vIEZsaXAgaW1hZ2UgaW50byByaWdodCBvcmlnaW4K
LSAgICBDR0FmZmluZVRyYW5zZm9ybSBjZ1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFr
ZSgxLjBmLCAwLjBmLCAwLjBmLCAtMS4wZiwgMC4wZiwgaW1hZ2VSZWN0LmJvdHRvbSgpKTsKLSAg
ICBOU0FmZmluZVRyYW5zZm9ybSogbnNUcmFuc2Zvcm0gPSBbTlNBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtXTsKLSAgICBbbnNUcmFuc2Zvcm0gc2V0VHJhbnNmb3JtU3RydWN0OiooKE5TQWZmaW5l
VHJhbnNmb3JtU3RydWN0ICopJmNnVHJhbnNmb3JtKV07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpu
c1RyYW5zZm9ybSBmb3JLZXk6QCJpbnB1dFRyYW5zZm9ybSJdOwotCi0gICAgLy8gQ2FsY3VsYXRl
IGNyb3AgcmVjdAotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OX1BSRVBBUkUoYmJveCk7
Ci0KLSAgICAvLyBNYXAgYmV0d2VlbiB0aGUgaW1hZ2UgcmVjdGFuZ2xlIGFuZCB0aGUgY3JvcCBy
ZWN0Ci0gICAgaWYgKCFjcm9wUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgQ0lGaWx0ZXIqIHNj
YWxlSW1hZ2UgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUFmZmluZVRyYW5zZm9ybSJd
OwotICAgICAgICBbc2NhbGVJbWFnZSBzZXREZWZhdWx0c107Ci0gICAgICAgIFtzY2FsZUltYWdl
IHNldFZhbHVlOltmaWx0ZXIgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdIGZvcktleTpAImlu
cHV0SW1hZ2UiXTsKLQotICAgICAgICBjZ1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFr
ZU1hcEJldHdlZW5SZWN0cyhDR1JlY3QoaW1hZ2VSZWN0KSwgQ0dSZWN0KGNyb3BSZWN0KSk7Ci0g
ICAgICAgIFtuc1RyYW5zZm9ybSBzZXRUcmFuc2Zvcm1TdHJ1Y3Q6KigoTlNBZmZpbmVUcmFuc2Zv
cm1TdHJ1Y3QgKikmY2dUcmFuc2Zvcm0pXTsKLSAgICAgICAgW3NjYWxlSW1hZ2Ugc2V0VmFsdWU6
bnNUcmFuc2Zvcm0gZm9yS2V5OkAiaW5wdXRUcmFuc2Zvcm0iXTsKLQotICAgICAgICBmaWx0ZXIg
PSBzY2FsZUltYWdlOwotICAgIH0KLQotICAgIC8vIEFjdHVhbGx5IGFwcGx5IGNyb3BwaW5nCi0g
ICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT05fQVBQTFkoY3JvcFJlY3QpOwotICAgIEZFX1FV
QVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1NWR0ZFTWVyZ2VDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1NWR0ZFTWVyZ2VDZy5tbQkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFTWVyZ2VDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1
NyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFTWVyZ2UuaCIKLSNpbmNsdWRlICJTVkdG
RUhlbHBlcnNDZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRU1l
cmdlOjpnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0Ci17Ci0gICAgU1ZH
UmVzb3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIFNWR1Jlc291cmNlRmls
dGVyUGxhdGZvcm1EYXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0aWNfY2FzdDxTVkdS
ZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxhdGZvcm1EYXRhKCkp
OwotCi0gICAgQ0lGaWx0ZXIqIGZpbHRlciA9IG5pbDsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGlucHV0cyA9IG1lcmdlSW5wdXRz
KCk7Ci0KLSAgICBDSUltYWdlKiBwcmV2aW91c091dHB1dCA9IGZpbHRlclBsYXRmb3JtRGF0YS0+
aW5wdXRJbWFnZSh0aGlzKTsKLSAgICBmb3IgKHVuc2lnbmVkIHggPSAwOyB4IDwgaW5wdXRzLnNp
emUoKTsgeCsrKSB7Ci0gICAgICAgIENJSW1hZ2UqIGlucHV0SW1hZ2UgPSBmaWx0ZXJQbGF0Zm9y
bURhdGEtPmltYWdlRm9yTmFtZShpbnB1dHNbeF0pOwotICAgICAgICBGRV9RVUFSVFpfQ0hFQ0tf
SU5QVVQoaW5wdXRJbWFnZSk7Ci0gICAgICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChwcmV2aW91
c091dHB1dCk7Ci0gICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJ
U291cmNlT3ZlckNvbXBvc2l0aW5nIl07Ci0gICAgICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwot
ICAgICAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJbWFnZSJd
OwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOnByZXZpb3VzT3V0cHV0IGZvcktleTpAImlucHV0
QmFja2dyb3VuZEltYWdlIl07Ci0gICAgICAgIHByZXZpb3VzT3V0cHV0ID0gW2ZpbHRlciB2YWx1
ZUZvcktleTpAIm91dHB1dEltYWdlIl07Ci0gICAgfQotCi0gICAgRkVfUVVBUlRaX01BUF9UT19T
VUJSRUdJT04oYmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVPZmZzZXRDZy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFT2Zmc2V0Q2cubW0JKHJldmlz
aW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRU9mZnNl
dENnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAi
U1ZHRkVPZmZzZXQuaCIKLSNpbmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRU9mZnNldDo6Z2V0Q0lGaWx0ZXIoY29uc3QgRmxv
YXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIg
PSBmaWx0ZXIoKTsKLSAgICBGRV9RVUFSVFpfU0VUVVBfSU5QVVQoQCJDSUFmZmluZVRyYW5zZm9y
bSIpOwotICAgIE5TQWZmaW5lVHJhbnNmb3JtKiBvZmZzZXRUcmFuc2Zvcm0gPSBbTlNBZmZpbmVU
cmFuc2Zvcm0gdHJhbnNmb3JtXTsKLSAgICBbb2Zmc2V0VHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTpk
eCgpIHlCeTpkeSgpXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOm9mZnNldFRyYW5zZm9ybSAgZm9y
S2V5OkAiaW5wdXRUcmFuc2Zvcm0iXTsKLQotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9O
KGJib3gpOwotICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
Q2cubW0JKHJldmlzaW9uIDM1MDA2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw2OSArMCww
IEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVj
dAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQotI2luY2x1ZGUgIlNWR0ZFU3BlY3VsYXJMaWdodGluZy5oIgotI2luY2x1ZGUg
IlNWR0ZFSGVscGVyc0NnLmgiCi0KLSNpbXBvcnQgIldLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJRmlsdGVyKiBTVkdGRVNwZWN1bGFyTGlnaHRp
bmc6OmdldENJRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgYmJveCkgY29uc3QKLXsKLSAgICBjb25z
dCBMaWdodFNvdXJjZSogbGlnaHQgPSBsaWdodFNvdXJjZSgpOwotICAgIGlmICghbGlnaHQpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyIGNsYXNz
XTsKLQotICAgIFNWR1Jlc291cmNlRmlsdGVyKiBzdmdGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICBT
VkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyogZmlsdGVyUGxhdGZvcm1EYXRhID0gc3Rh
dGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihzdmdGaWx0ZXItPnBs
YXRmb3JtRGF0YSgpKTsKLSAgICBDSUZpbHRlciogZmlsdGVyOwotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJX
S1NwZWN1bGFyTGlnaHRpbmciXTsKLSAgICBbZmlsdGVyIHNldERlZmF1bHRzXTsKLSAgICBDSUlt
YWdlKiBpbnB1dEltYWdlID0gZmlsdGVyUGxhdGZvcm1EYXRhLT5pbnB1dEltYWdlKHRoaXMpOwot
ICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dEltYWdlKTsKLSAgICBDSUZpbHRlciogbm9y
bWFscyA9IGdldE5vcm1hbE1hcChpbnB1dEltYWdlLCBzdXJmYWNlU2NhbGUoKSk7Ci0gICAgaWYg
KCFub3JtYWxzKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIENJRmlsdGVyKiBsaWdodFZlY3Rv
cnMgPSBnZXRMaWdodFZlY3RvcnMobm9ybWFscywgbGlnaHQsIHN1cmZhY2VTY2FsZSgpKTsKLSAg
ICBpZiAoIWxpZ2h0VmVjdG9ycykKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBbZmlsdGVyIHNl
dFZhbHVlOltub3JtYWxzIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1
dE5vcm1hbE1hcCJdOwotICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2xpZ2h0VmVjdG9ycyB2YWx1ZUZv
cktleTpAIm91dHB1dEltYWdlIl0gZm9yS2V5OkAiaW5wdXRMaWdodFZlY3RvcnMiXTsKLSAgICBb
ZmlsdGVyIHNldFZhbHVlOmNpQ29sb3IobGlnaHRpbmdDb2xvcigpKSBmb3JLZXk6QCJpbnB1dExp
Z2h0aW5nQ29sb3IiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRo
RmxvYXQ6c3VyZmFjZVNjYWxlKCldIGZvcktleTpAImlucHV0U3VyZmFjZVNjYWxlIl07Ci0gICAg
W2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnNwZWN1bGFyQ29uc3Rh
bnQoKV0gZm9yS2V5OkAiaW5wdXRTcGVjdWxhckNvbnN0YW50Il07Ci0gICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnNwZWN1bGFyRXhwb25lbnQoKV0gZm9yS2V5
OkAiaW5wdXRTcGVjdWxhckV4cG9uZW50Il07Ci0gICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEZsb2F0Omtlcm5lbFVuaXRMZW5ndGhYKCldIGZvcktleTpAImlucHV0S2Vy
bmVsVW5pdExlbmd0aFgiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJX
aXRoRmxvYXQ6a2VybmVsVW5pdExlbmd0aFkoKV0gZm9yS2V5OkAiaW5wdXRLZXJuZWxVbml0TGVu
Z3RoWSJdOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04oYmJveCk7Ci0gICAgRkVf
UVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
Y2cvU1ZHRkVUaWxlQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9jZy9TVkdGRVRpbGVDZy5tbQkocmV2aXNpb24gMzUwMDYpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFVGlsZUNnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQx
ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiU1ZHRkVUaWxlLmgiCi0jaW5jbHVkZSAiU1ZHRkVI
ZWxwZXJzQ2cuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DSUZpbHRlciogU1ZHRkVUaWxl
OjpnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGJib3gpIGNvbnN0Ci17Ci0gICAgU1ZHUmVz
b3VyY2VGaWx0ZXIqIHN2Z0ZpbHRlciA9IGZpbHRlcigpOwotICAgIEZFX1FVQVJUWl9TRVRVUF9J
TlBVVChAIkNJQWZmaW5lVGlsZSIpOwotCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT04o
YmJveCk7Ci0gICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
</data>

          </attachment>
      

    </bug>

</bugzilla>