<?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>33703</bug_id>
          
          <creation_ts>2010-01-14 20:15:14 -0800</creation_ts>
          <short_desc>MathML Support</short_desc>
          <delta_ts>2010-08-09 06:37:09 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>42472</dependson>
          <blocked>3251</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Alex Milowski">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>martin.sourada</cc>
    
    <cc>vsvabe</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>181084</commentid>
    <comment_count>0</comment_count>
      <attachid>46637</attachid>
    <who name="Alex Milowski">alex</who>
    <bug_when>2010-01-14 20:15:14 -0800</bug_when>
    <thetext>Created attachment 46637
MathML Monster Patch

This patch contains all the current code for MathML.  While this implementation is not complete, it will be updated as much as possible.  As smaller portions of this code are committed, the patch will be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188879</commentid>
    <comment_count>1</comment_count>
      <attachid>48388</attachid>
    <who name="Alex Milowski">alex</who>
    <bug_when>2010-02-08 20:52:17 -0800</bug_when>
    <thetext>Created attachment 48388
Updated monster patch with the latest trunk and MathML code

The latest patch gets rid of anonymous blocks and seems to work quite a bit better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189407</commentid>
    <comment_count>2</comment_count>
      <attachid>48509</attachid>
    <who name="Alex Milowski">alex</who>
    <bug_when>2010-02-10 10:36:04 -0800</bug_when>
    <thetext>Created attachment 48509
Updated patch to fix conflict in xcode project</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248472</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-07-08 13:05:50 -0700</bug_when>
    <thetext>There hasn&apos;t been any activity on this bug in a while even though there has been lots of other MathML work. Alex, is this bug still relevant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248877</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Milowski">alex</who>
    <bug_when>2010-07-09 03:09:56 -0700</bug_when>
    <thetext>Yes.  This patch still contains the mfenced code.  That needs to extracted from this patch and submitted separately.  After that, this bug can be closed out without using the patch.

There is a similar need in bug 15302 where the parsing changes for XHTML need to be extracted and submitted separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249107</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-07-09 10:49:58 -0700</bug_when>
    <thetext>I see. Thanks Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262125</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Milowski">alex</who>
    <bug_when>2010-08-09 06:37:09 -0700</bug_when>
    <thetext>All the code contained in this patch has now been applied via separate patches.  As such, this patch is no longer valid.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46637</attachid>
            <date>2010-01-14 20:15:14 -0800</date>
            <delta_ts>2010-02-08 20:52:17 -0800</delta_ts>
            <desc>MathML Monster Patch</desc>
            <filename>WebKit-mathml-monster.patch</filename>
            <type>text/plain</type>
            <size>141003</size>
            <attacher name="Alex Milowski">alex</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzI5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE5IEBACisyMDEwLTAxLTE0ICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3Nr
aS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q3VycmVudCBNYXRoTUwgaW1wbGVtZW50YXRpb24gKGFsbCB0aGUgY29kZSkKKworICAgICAgICBU
ZXN0czogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwKKyAgICAgICAgICAgICAgIG1h
dGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwv
cHJlc2VudGF0aW9uL21vLWludGVncmFsLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwvcHJl
c2VudGF0aW9uL292ZXIueGh0bWwKKyAgICAgICAgICAgICAgIG1hdGhtbC9wcmVzZW50YXRpb24v
cm9vdHMueGh0bWwKKyAgICAgICAgICAgICAgIG1hdGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1s
CisgICAgICAgICAgICAgICBtYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRtbAorICAgICAg
ICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlci54aHRtbAorICAgICAgICAgICAgICAg
bWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWwKKworICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGNzcy9tYXRobWwuY3NzOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVt
ZW50OjpNYXRoTUxUZXh0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmlzQ2hpbGRBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEJsb2NrOjptYWtlQmxvY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxCbG9jazo6bm9uT3BlcmF0b3JIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OnN0cmV0Y2hUb0hlaWdodCk6CisgICAgICAgICogbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6OmlzUmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTEJsb2NrOjppc1JlbmRlck1hdGhNTE1hdGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6Omhhc0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJN
YXRoTUxCbG9jayk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxG
ZW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVGcm9t
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6Om1ha2VPcGVy
YXRvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZUZl
bmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OmFkZENoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6bGF5b3V0KToKKyAgICAgICAg
KiBtYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAgICAqIG1hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MTWF0aDo6
UmVuZGVyTWF0aE1MTWF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRoOjpz
ZXRTdHlsZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRoOjppc1JlbmRlck1hdGhNTE1hdGgpOgor
ICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpzZXRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c3R5bGVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmlzQ2hpbGRBbGxvd2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpzdHJldGNoVG9IZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVw
ZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9y
OjptYWtlU3RhY2thYmxlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6Om1ha2VHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6Omlz
UmVuZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJNYXRoTUxP
cGVyYXRvcik6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6YWRkQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIG1hdGhtbC9SZW5k
ZXJNYXRoTUxSb290Lmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0
aE1MUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6c2V0U3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93Ojpub25PcGVyYXRvckhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb3c6OmxheW91dCk6CisgICAgICAgICogbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTFJvdzo6aXNSZW5kZXJNYXRoTUxSb3cpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRo
TUxTcXVhcmVSb290LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxT
cXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFNxdWFyZVJvb3Q6OnBhaW50KToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MU3F1YXJlUm9vdC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0aE1MU3Vi
U3VwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTdWJTdXA6OlJl
bmRlck1hdGhNTFN1YlN1cCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTdWJTdXA6
OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6c3RyZXRj
aFRvSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6bm9uT3Bl
cmF0b3JIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpsYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpiYXNlbGluZVBvc2l0
aW9uKToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpoYXNCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6KToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxV
bmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxVbmRlck92ZXI6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE9mZnNl
dEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmJhc2VsaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpub25PcGVy
YXRvckhlaWdodCk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6aGFzQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6Oik6CisgICAgICAgICog
bWF0aG1sL21hdGhhdHRycy5pbjogQWRkZWQuCisgICAgICAgICogbWF0aG1sL21hdGh0YWdzLmlu
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNSZW5kZXJNYXRoT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0Ojppc1JlbmRlck1hdGhNTEJsb2NrKToKKwogMjAxMC0wMS0xNCAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB0aGUgV2ViIElu
c3BlY3RvcidzIEphdmFTY3JpcHQgZGVidWdnZXIgd29yayB3aXRoIGlzb2xhdGVkIHdvcmxkcy4K
SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDUzMTY2KQorKysgV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03NDIsOCArNzQyLDggQEAgZW5kaWYKIAog
aWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9NQVRITUwsJChGRUFUVVJFX0RFRklORVMpKSwgRU5B
QkxFX01BVEhNTCkKIAotTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIE1hdGhNTE5hbWVzLmNwcCA6
IGRvbS9tYWtlX25hbWVzLnBsIG1hdGhtbC9tYXRodGFncy5pbgotCXBlcmwgLUkgJChXZWJDb3Jl
KS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tdGFncyAkKFdlYkNvcmUpL21hdGhtbC9tYXRodGFncy5p
biAtLWZhY3RvcnkgLS13cmFwcGVyRmFjdG9yeQorTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIE1h
dGhNTE5hbWVzLmNwcCA6IGRvbS9tYWtlX25hbWVzLnBsIG1hdGhtbC9tYXRodGFncy5pbiBtYXRo
bWwvbWF0aGF0dHJzLmluCisJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwg
LS10YWdzICQoV2ViQ29yZSkvbWF0aG1sL21hdGh0YWdzLmluIC0tYXR0cnMgJChXZWJDb3JlKS9t
YXRobWwvbWF0aGF0dHJzLmluIC0tZmFjdG9yeSAtLXdyYXBwZXJGYWN0b3J5CiAKIGVsc2UKIApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDUzMTY2KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTQ3ODcsNiArNDc4NywyNiBAQAogCQlGOTE2QzQ4RDBEQjUxMEY4MDA3
NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEIwREI1MTBGODAwNzZDRDgz
IC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLzsgfTsKIAkJRjkxNkM0OEUw
REI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QzBEQjUxMEY4
MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJRjlG
MEVEN0EwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjlGMEVENzcwREI1
MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OworCQlG
QTk5NEQ5MTEwRDk4M0MyMDA4MkMwQTYgLyogbWF0aG1sLmNzcyBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5OTREOTAxMEQ5ODNDMjAwODJDMEE2IC8q
IG1hdGhtbC5jc3MgKi87IH07CisJCUZBOTk0RDk0MTBEOTgzRTAwMDgyQzBBNiAvKiBNYXRoTUxU
ZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQTk5NEQ5MjEwRDk4M0UwMDA4MkMwQTYgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICov
OyB9OworCQlGQTk5NEQ5NTEwRDk4M0UwMDA4MkMwQTYgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBOTk0RDkzMTBE
OTgzRTAwMDgyQzBBNiAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovOyB9OworCQlGQTk5NEQ5RTEw
RDk4M0YyMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5OTREOTgxMEQ5ODNGMjAwODJDMEE2
IC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkE5OTREOUYxMEQ5ODNGMjAw
ODJDMEE2IC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTk5NEQ5OTEwRDk4M0YyMDA4MkMwQTYgLyogUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaCAqLzsgfTsKKwkJRkE5OTREQTAxMEQ5ODNGMjAwODJDMEE2IC8qIFJl
bmRlck1hdGhNTFJvdy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQTk5NEQ5QTEwRDk4M0YyMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MUm93LmNwcCAq
LzsgfTsKKwkJRkE5OTREQTExMEQ5ODNGMjAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFJvdy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5OTREOUIxMEQ5
ODNGMjAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFJvdy5oICovOyB9OworCQlGQTk5NEZBNjEwREFG
QjQwMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBOTk0RkE0MTBEQUZCNDAwMDgyQzBBNiAvKiBS
ZW5kZXJNYXRoTUxGZW5jZWQuY3BwICovOyB9OworCQlGQTk5NEZBNzEwREFGQjQwMDA4MkMwQTYg
LyogUmVuZGVyTWF0aE1MRmVuY2VkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQTk5NEZBNTEwREFGQjQwMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MRmVu
Y2VkLmggKi87IH07CisJCUZBOTk0RkRDMTBEQUZDNTIwMDgyQzBBNiAvKiBtYXRoYXR0cnMuaW4g
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBOTk0RkRC
MTBEQUZDNTIwMDgyQzBBNiAvKiBtYXRoYXR0cnMuaW4gKi87IH07CisJCUZBOTk1MTNFMTBEQjU5
RkEwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTk5NTEzQzEwREI1OUZBMDA4MkMwQTYgLyog
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwICovOyB9OworCQlGQTk5NTEzRjEwREI1OUZBMDA4MkMw
QTYgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBOTk1MTNEMTBEQjU5RkEwMDgyQzBBNiAvKiBSZW5kZXJNYXRo
TUxGcmFjdGlvbi5oICovOyB9OworCQlGQTk5NTIwQjEwREI2NjEzMDA4MkMwQTYgLyogUmVuZGVy
TWF0aE1MU3ViU3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZBOTk1MjA3MTBEQjY2MTMwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxTdWJTdXAuY3Bw
ICovOyB9OworCQlGQTk5NTIwQzEwREI2NjEzMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MU3ViU3Vw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTk5NTIw
ODEwREI2NjEzMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MU3ViU3VwLmggKi87IH07CisJCUZBOTk1
MjBEMTBEQjY2MTMwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5OTUyMDkxMERCNjYxMzAw
ODJDMEE2IC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAgKi87IH07CisJCUZBOTk1MjBFMTBE
QjY2MTMwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBOTk1MjBBMTBEQjY2MTMwMDgyQzBBNiAv
KiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaCAqLzsgfTsKKwkJRkE5OTUyN0YxMERCN0MxQTAwODJD
MEE2IC8qIFJlbmRlck1hdGhNTFJvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkE5OTUyN0QxMERCN0MxQTAwODJDMEE2IC8qIFJlbmRlck1hdGhN
TFJvb3QuY3BwICovOyB9OworCQlGQTk5NTI4MDEwREI3QzFBMDA4MkMwQTYgLyogUmVuZGVyTWF0
aE1MUm9vdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkE5OTUyN0UxMERCN0MxQTAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFJvb3QuaCAqLzsgfTsKKwkJ
RkE5OTUyOEMxMERCN0NBRjAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5OTUyOEExMERC
N0NBRjAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwICovOyB9OworCQlGQTk5
NTI4RDEwREI3Q0FGMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5OTUyOEIxMERCN0NBRjAw
ODJDMEE2IC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCAqLzsgfTsKIAkJRkFCRTcyRjQxMDU5
QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TEVsZW1lbnQuY3BwICovOyB9OwogCQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1M
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkFCRTcyRUUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCAqLzsgfTsKIAkJRkFC
RTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUYx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICovOyB9
OwpAQCAtNDc5NSw2ICs0ODE1LDEwIEBACiAJCUZBQkU3MkY5MTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxNYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkFCRTcyRjIxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50Lmgg
Ki87IH07CiAJCUZBQkU3MkZEMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50RmFjdG9y
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJF
NzJGQjEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9Owog
CQlGQUJFNzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRkMxMDU5QzIxMTAwRDk5
OUREIC8qIE1hdGhNTE5hbWVzLmNwcCAqLzsgfTsKKwkJRkFDRUNCNjUxMEYxODBBOTAwRjgzQTcx
IC8qIFJlbmRlck1hdGhNTEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQUNFQ0I2MzEwRjE4MEE5MDBGODNBNzEgLyogUmVuZGVyTWF0aE1MQmxv
Y2suaCAqLzsgfTsKKwkJRkFDRUNCNjYxMEYxODBBOTAwRjgzQTcxIC8qIFJlbmRlck1hdGhNTEJs
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZB
Q0VDQjY0MTBGMTgwQTkwMEY4M0E3MSAvKiBSZW5kZXJNYXRoTUxCbG9jay5jcHAgKi87IH07CisJ
CUZBQ0VDQjY5MTBGMTgzOTMwMEY4M0E3MSAvKiBSZW5kZXJNYXRoTUxNYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUNFQ0I2NzEwRjE4MzkzMDBG
ODNBNzEgLyogUmVuZGVyTWF0aE1MTWF0aC5oICovOyB9OworCQlGQUNFQ0I2QTEwRjE4MzkzMDBG
ODNBNzEgLyogUmVuZGVyTWF0aE1MTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQUNFQ0I2ODEwRjE4MzkzMDBGODNBNzEgLyogUmVuZGVyTWF0
aE1MTWF0aC5jcHAgKi87IH07CiAJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2
RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODcz
IC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3Bw
ICovOyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3
NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsKQEAgLTEwMDUyLDYgKzEwMDc2
LDI2IEBACiAJCUY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlG
MEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY5RjBFRDc4MERCNTBDQTIwMEQx
NkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQTk5NEQ5MDEwRDk4M0MyMDA4MkMwQTYgLyogbWF0aG1sLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkE5OTREOTIxMEQ5ODNFMDAwODJDMEE2IC8qIE1hdGhNTFRleHRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE5OTREOTMxMEQ5ODNFMDAwODJD
MEE2IC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZB
OTk0RDk4MTBEOTgzRjIwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxPcGVyYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOTk0RDk5MTBEOTgzRjIwMDgyQzBBNiAv
KiBSZW5kZXJNYXRoTUxPcGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJNYXRoTUxPcGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
QTk5NEQ5QTEwRDk4M0YyMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MUm93LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvdy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOTk0RDlCMTBEOTgzRjIwMDgyQzBBNiAvKiBSZW5kZXJN
YXRoTUxSb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1M
Um93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOTk0RkE0MTBEQUZCNDAwMDgy
QzBBNiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkE5OTRGQTUxMERBRkI0MDAwODJDMEE2IC8qIFJlbmRlck1hdGhNTEZlbmNlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxGZW5jZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE5OTRGREIxMERBRkM1MjAwODJDMEE2IC8q
IG1hdGhhdHRycy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtYXRoYXR0cnMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOTk1MTNDMTBEQjU5RkEwMDgyQzBBNiAvKiBSZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZBOTk1MTNEMTBEQjU5RkEwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxGcmFjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQTk5NTIwNzEwREI2NjEzMDA4MkMwQTYgLyogUmVu
ZGVyTWF0aE1MU3ViU3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlck1hdGhNTFN1YlN1cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZB
OTk1MjA4MTBEQjY2MTMwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxTdWJTdXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MU3ViU3VwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZBOTk1MjA5MTBEQjY2MTMwMDgyQzBBNiAvKiBSZW5kZXJNYXRo
TUxVbmRlck92ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE5
OTUyMEExMERCNjYxMzAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE5OTUyN0QxMERCN0MxQTAwODJDMEE2IC8qIFJlbmRl
ck1hdGhNTFJvb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVu
ZGVyTWF0aE1MUm9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOTk1MjdF
MTBEQjdDMUEwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxSb290LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkE5OTUyOEExMERCN0NBRjAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFNxdWFyZVJv
b3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1M
U3F1YXJlUm9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOTk1MjhCMTBE
QjdDQUYwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hdGhNTEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUYx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDA2MSw2ICsxMDEwNSwx
MCBAQAogCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gbWF0aHRhZ3MuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkZCMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlE
RCAvKiBNYXRoTUxOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNYXRoTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBQ0VDQjYz
MTBGMTgwQTkwMEY4M0E3MSAvKiBSZW5kZXJNYXRoTUxCbG9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGQUNFQ0I2NDEwRjE4MEE5MDBGODNBNzEgLyogUmVuZGVyTWF0aE1MQmxvY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MQmxv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUNFQ0I2NzEwRjE4MzkzMDBG
ODNBNzEgLyogUmVuZGVyTWF0aE1MTWF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNYXRoTUxNYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZB
Q0VDQjY4MTBGMTgzOTMwMEY4M0E3MSAvKiBSZW5kZXJNYXRoTUxNYXRoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTE1hdGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEzNkFFNzEwNjQzQkU1MDA3OENGNkQgLyogV2ViQ29y
ZS5PcmllbnRhdGlvbkV2ZW50cy5leHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmV4cG9ydHM7IHBh
dGggPSBXZWJDb3JlLk9yaWVudGF0aW9uRXZlbnRzLmV4cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU0OUJEMzAxMDYxNzE5MTAwRDBFMUFFIC8qIFdlYkNvcmUuSW5zcGVjdG9yLmV4
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuZXhwb3J0czsgcGF0aCA9IFdlYkNvcmUuSW5zcGVjdG9y
LmV4cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OUVGOTcwREM1MTQ2MjAwNDI2
NkUxIC8qIERhc2hib2FyZFN1cHBvcnRDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERhc2hib2FyZFN1cHBvcnRDU1NQcm9wZXJ0eU5hbWVzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTUzNDgsNiArMTUzOTYsNyBAQAogCQkJCTkzQ0E0QzlBMDlE
RjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5
QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AucGwgKi8sCiAJCQkJOTNDQTRDOUQwOURGOTNG
QTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8sCisJCQkJRkE5OTREOTAxMEQ5ODNDMjAwODJD
MEE2IC8qIG1hdGhtbC5jc3MgKi8sCiAJCQkJMEZGNTAyNkUxMDJCQTk2NjAwNjZGMzlBIC8qIE1l
ZGlhLmNwcCAqLywKIAkJCQkwRkY1MDI2RjEwMkJBOTZBMDA2NkYzOUEgLyogTWVkaWEuaCAqLywK
IAkJCQkwRkY1MDI3MDEwMkJBOTZBMDA2NkYzOUEgLyogTWVkaWEuaWRsICovLApAQCAtMTU4NzQs
MTMgKzE1OTIzLDM2IEBACiAJCUZBQkU3MkVDMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRobWwgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZBOTk0RkRCMTBE
QUZDNTIwMDgyQzBBNiAvKiBtYXRoYXR0cnMuaW4gKi8sCiAJCQkJRkFCRTcyRUQxMDU5QzFFQjAw
RDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovLAogCQkJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi8sCiAJCQkJRkFCRTcyRUYxMDU5QzFFQjAwRDk5OURE
IC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICovLAogCQkJCUZBQkU3MkYwMTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggKi8sCiAJCQkJ
RkFCRTcyRjExMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50LmNwcCAqLywKIAkJ
CQlGQUJFNzJGMjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCAqLywKKwkJ
CQlGQTk5NEQ5MjEwRDk4M0UwMDA4MkMwQTYgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICovLAor
CQkJCUZBOTk0RDkzMTBEOTgzRTAwMDgyQzBBNiAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovLAog
CQkJCUZBQkU3MkYzMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRodGFncy5pbiAqLywKKwkJCQlGQTk5
NEZBNDEwREFGQjQwMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCAqLywKKwkJCQlG
QTk5NEZBNTEwREFGQjQwMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmggKi8sCisJCQkJ
RkE5OTUxM0MxMERCNTlGQTAwODJDMEE2IC8qIFJlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCAqLywK
KwkJCQlGQTk5NTEzRDEwREI1OUZBMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCAq
LywKKwkJCQlGQUNFQ0I2NDEwRjE4MEE5MDBGODNBNzEgLyogUmVuZGVyTWF0aE1MQmxvY2suY3Bw
ICovLAorCQkJCUZBQ0VDQjYzMTBGMTgwQTkwMEY4M0E3MSAvKiBSZW5kZXJNYXRoTUxCbG9jay5o
ICovLAorCQkJCUZBQ0VDQjY4MTBGMTgzOTMwMEY4M0E3MSAvKiBSZW5kZXJNYXRoTUxNYXRoLmNw
cCAqLywKKwkJCQlGQUNFQ0I2NzEwRjE4MzkzMDBGODNBNzEgLyogUmVuZGVyTWF0aE1MTWF0aC5o
ICovLAorCQkJCUZBOTk0RDk4MTBEOTgzRjIwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRv
ci5jcHAgKi8sCisJCQkJRkE5OTREOTkxMEQ5ODNGMjAwODJDMEE2IC8qIFJlbmRlck1hdGhNTE9w
ZXJhdG9yLmggKi8sCisJCQkJRkE5OTUyN0QxMERCN0MxQTAwODJDMEE2IC8qIFJlbmRlck1hdGhN
TFJvb3QuY3BwICovLAorCQkJCUZBOTk1MjdFMTBEQjdDMUEwMDgyQzBBNiAvKiBSZW5kZXJNYXRo
TUxSb290LmggKi8sCisJCQkJRkE5OTREOUExMEQ5ODNGMjAwODJDMEE2IC8qIFJlbmRlck1hdGhN
TFJvdy5jcHAgKi8sCisJCQkJRkE5OTREOUIxMEQ5ODNGMjAwODJDMEE2IC8qIFJlbmRlck1hdGhN
TFJvdy5oICovLAorCQkJCUZBOTk1MjhBMTBEQjdDQUYwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxT
cXVhcmVSb290LmNwcCAqLywKKwkJCQlGQTk5NTI4QjEwREI3Q0FGMDA4MkMwQTYgLyogUmVuZGVy
TWF0aE1MU3F1YXJlUm9vdC5oICovLAorCQkJCUZBOTk1MjA3MTBEQjY2MTMwMDgyQzBBNiAvKiBS
ZW5kZXJNYXRoTUxTdWJTdXAuY3BwICovLAorCQkJCUZBOTk1MjA4MTBEQjY2MTMwMDgyQzBBNiAv
KiBSZW5kZXJNYXRoTUxTdWJTdXAuaCAqLywKKwkJCQlGQTk5NTIwOTEwREI2NjEzMDA4MkMwQTYg
LyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCAqLywKKwkJCQlGQTk5NTIwQTEwREI2NjEzMDA4
MkMwQTYgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1h
dGhtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xODMxNSw2ICsxODM4NywxNyBA
QAogCQkJCUJDNTZDQjIzMTBENUFDODAwMEE3N0M2NCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTZDQjI0MTBENUFDODAwMEE3N0M2NCAvKiBH
ZW9sb2NhdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU2Q0IyNTEwRDVBQzgwMDBB
NzdDNjQgLyogR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkE5OTRE
OTUxMEQ5ODNFMDAwODJDMEE2IC8qIE1hdGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGQTk5NEQ5RjEwRDk4M0YyMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCUZBOTk0REExMTBEOTgzRjIwMDgyQzBBNiAvKiBSZW5kZXJNYXRo
TUxSb3cuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBOTk0RkE3MTBEQUZCNDAwMDgyQzBBNiAvKiBS
ZW5kZXJNYXRoTUxGZW5jZWQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBOTk1MTNGMTBEQjU5RkEw
MDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkE5
OTUyMEMxMERCNjYxMzAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFN1YlN1cC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkE5OTUyMEUxMERCNjYxMzAwODJDMEE2IC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkE5OTUyODAxMERCN0MxQTAwODJDMEE2IC8qIFJlbmRl
ck1hdGhNTFJvb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBOTk1MjhEMTBEQjdDQUYwMDgyQzBB
NiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290LmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUNFQ0I2
NTEwRjE4MEE5MDBGODNBNzEgLyogUmVuZGVyTWF0aE1MQmxvY2suaCBpbiBIZWFkZXJzICovLAor
CQkJCUZBQ0VDQjY5MTBGMTgzOTMwMEY4M0E3MSAvKiBSZW5kZXJNYXRoTUxNYXRoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODczNUZCOTEwRTkxMjMyMDA2RDZGQUQgLyogU1ZHTWFya2VyTGF5b3V0
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgzODVGRjYxMEYwMTg2MDAwQkZFMDdCIC8qIFNW
R01hcmtlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNE
MiAvKiBQbHVnaW5XaWRnZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTgzNjQsNiArMTg0NDcsOSBA
QAogLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCiAJCTA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlh
dHRyaWJ1dGVzID0geworCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IE5P
OworCQkJfTsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4
QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3Jl
IiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7CiAJCQloYXNTY2Fu
bmVkRm9yRW5jb2RpbmdzID0gMTsKQEAgLTE4NDI1LDYgKzE4NTExLDggQEAKIAkJCQk4NTEzNkNB
ODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
LAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJl
c291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUZBOTk0RDkxMTBEOTgzQzIwMDgyQzBBNiAvKiBt
YXRobWwuY3NzIGluIFJlc291cmNlcyAqLywKKwkJCQlGQTk5NEZEQzEwREFGQzUyMDA4MkMwQTYg
LyogbWF0aGF0dHJzLmluIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwNDc5LDYgKzIwNTY3LDE3IEBA
CiAJCQkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBDNDUzNDI3MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdM
VW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTZDQjIxMTBENUFDODAw
MEE3N0M2NCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RkE5OTREOTQxMEQ5ODNFMDAwODJDMEE2IC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZBOTk0RDlFMTBEOTgzRjIwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQTk5NERBMDEwRDk4M0YyMDA4MkMwQTYgLyog
UmVuZGVyTWF0aE1MUm93LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZBOTk0RkE2MTBEQUZCNDAw
MDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkE5
OTUxM0UxMERCNTlGQTAwODJDMEE2IC8qIFJlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZBOTk1MjBCMTBEQjY2MTMwMDgyQzBBNiAvKiBSZW5kZXJNYXRoTUxTdWJT
dXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkE5OTUyMEQxMERCNjYxMzAwODJDMEE2IC8qIFJl
bmRlck1hdGhNTFVuZGVyT3Zlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQTk5NTI3RjEwREI3
QzFBMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MUm9vdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlG
QTk5NTI4QzEwREI3Q0FGMDA4MkMwQTYgLyogUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGQUNFQ0I2NjEwRjE4MEE5MDBGODNBNzEgLyogUmVuZGVyTWF0aE1M
QmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFDRUNCNkExMEYxODM5MzAwRjgzQTcxIC8q
IFJlbmRlck1hdGhNTE1hdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg3MzVGQjgxMEU5MTIz
MjAwNkQ2RkFEIC8qIFNWR01hcmtlckxheW91dEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEFGREFDM0IxMEY1NDQ4MzAwRTFGM0QyIC8qIFBsdWdpbldpZGdldE1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxMTIyNDcyMTBDRkI4QzYwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvY3NzL21hdGhtbC5jc3MK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvbWF0aG1sLmNzcwkocmV2aXNpb24gNTMxNjYpCisr
KyBXZWJDb3JlL2Nzcy9tYXRobWwuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIwICsxLDQ2IEBA
CiBAbmFtZXNwYWNlICJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjsKIAogLyog
YXBwcm92ZWQgKi8KKwogbWF0aCB7CiAgICAgZm9udC1mYW1pbHk6IFN5bWJvbCwgU1RJWEdlbmVy
YWwsICJUaW1lcyBOZXcgUm9tYW4iOwogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICBw
YWRkaW5nOiAwcHg7CiAgICAgbWFyZ2luOiAwcHg7Ci0gICAgdGV4dC1pbmRlbnQ6IDA7Ci0gICAg
Zm9udC1zaXplOiAxLjFlbTsKICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiB9CisKIG1h
dGhbZGlzcGxheT0iYmxvY2siXSB7Ci0gICAgZm9udC1mYW1pbHk6ICJOZXcgVGltZXMgUm9tYW4i
CiAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgIHBhZ2Ut
YnJlYWstaW5zaWRlOiBhdm9pZDsKKyAgICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKK21hdGgg
PiAqIHsKKyAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKK30KKworbXJvdywgbWZlbmNlZCB7
CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwor
fQorCittcm93ID4gbW8sIG1mZW5jZWQgPiBtbywgbWF0aCA+IG1vLAorbXJvdyA+IG1pLCBtZmVu
Y2VkID4gbWksIG1hdGggPiBtaSwKK21yb3cgPiBtbiwgbWZlbmNlZCA+IG1uLCBtYXRoID4gbW4s
Cittcm93ID4gbXRleHQsIG1mZW5jZWQgPiBtdGV4dCwgbWF0aCA+IG10ZXh0Cit7CisgICB2ZXJ0
aWNhbC1hbGlnbjogbWlkZGxlOworfQorCittaSwgbXRleHQgeworICAgIGZvbnQtc3R5bGU6IGl0
YWxpYzsKKyAgICBwYWRkaW5nLXJpZ2h0OiAwLjFlbTsKK30KKworbWkgKyBtcm93IHsKKyAgIG1h
cmdpbi1sZWZ0OiAwLjFlbTsKIH0KIAogbWZyYWMgewpAQCAtMjIsNyArNDgsOCBAQCBtZnJhYyB7
CiB9CiAKIG1zdWIsIG1zdXAgewotICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiB9CiAKIG1z
dWIgPiAqICsgKiB7CkBAIC0zNywxMCArNjQsMTMgQEAgbXN1cCA+ICogKyAqIHsKICAgIGxpbmUt
aGVpZ2h0OiAwLjc1ZW07CiB9CiAKK21zdWJzdXAgeworICAgIHZlcnRpY2FsLWFsaWduOiBiYXNl
bGluZTsKK30KKwogbXN1YnN1cCA+ICogewogICAgIG1hcmdpbjogMHB4OwogICAgIHBhZGRpbmc6
IDBweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogfQogCiBtc3Vic3VwID4gKiArICog
ewpAQCAtNDgsOCArNzgsOCBAQCBtc3Vic3VwID4gKiArICogewogICAgbGluZS1oZWlnaHQ6IDAu
NzVlbTsKIH0KIAotbXVuZGVyb3ZlciB7Ci0gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK211
bmRlciwgbW92ZXIsIG11bmRlcm92ZXIgeworICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsK
IH0KIAogbXVuZGVyb3ZlciA+ICogKyAqLCBtb3ZlciA+ICogKyAqLCBtdW5kZXIgPiAqICsgKiB7
CkBAIC01NywyMCArODcsMjAgQEAgbXVuZGVyb3ZlciA+ICogKyAqLCBtb3ZlciA+ICogKyAqLCBt
dW5kZQogICAgbGluZS1oZWlnaHQ6IDAuNTYyNWVtOwogfQogCi1tcm93IHsKLSAgICBsaW5lLWhl
aWdodDogMWVtOwotICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gICAgdmVydGljYWwtYWxpZ246
IG1pZGRsZTsKK21vLCBtbiwgbWksIG10ZXh0IHsKKyAgIGxpbmUtaGVpZ2h0OiAwLjc1ZW07Cisg
ICBwYWRkaW5nOiAwcHg7CisgICBtYXJnaW46IDBweDsKIH0KIAotbWZlbmNlZCA+ICogewotICAg
IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CittbyB7CisgICBoZWlnaHQ6IDEwMCU7CisgICAvKnZl
cnRpY2FsLWFsaWduOiB0b3A7Ki8KIH0KIAotbW8sIG1uLCBtaSB7Ci0gICBsaW5lLWhlaWdodDog
MC43NWVtOwotICAgcGFkZGluZzogMHB4OwotICAgbWFyZ2luOiAwcHg7CittbyB7CisgICBwYWRk
aW5nLWxlZnQ6IDAuMDVlbTsKKyAgIHBhZGRpbmctcmlnaHQ6IDAuMDVlbTsKIH0KIAogbW9bbWF0
aHNpemU9InNtYWxsIl0sIG1uW21hdGhzaXplPSJzbWFsbCJdLCBtaVttYXRoc2l6ZT0ic21hbGwi
XSB7CkBAIC0xNjgsMyArMTk4LDYgQEAgbXRhYmxlW2NvbHVtbmxpbmVzPSJkYXNoZWQiXSA+IG10
ciA+IG10ZAogICAgIGJvcmRlci1sZWZ0OiBkYXNoZWQgdGhpbjsKIH0KIAorbXNwYWNlW2xpbmVi
cmVhaz0ibmV3bGluZSJdIHsKKyAgIGRpc3BsYXk6IGJsb2NrOworfQpJbmRleDogV2ViQ29yZS9t
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDUz
MTY2KQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDE0IEBACiAjaW5jbHVkZSAiTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxGZW5jZWQuaCIKKyNpbmNs
dWRlICJSZW5kZXJNYXRoTUxGcmFjdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTE1hdGgu
aCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxSb290LmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1M
Um93LmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oIgorI2luY2x1ZGUgIlJl
bmRlck1hdGhNTFN1YlN1cC5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTFVuZGVyT3Zlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC00NiwxMCArNTMsMzcgQEAgUGFzc1JlZlB0
cjxNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50PgogICAgIHJldHVybiBuZXcgTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVJlbmRlck9iamVj
dCogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEgKiwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBNYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0
eWxlKiBzdHlsZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgd2lsbCBjb250YWluIHRo
ZSBzcGVjaWFsaXplZCByZW5kZXJlcnMgYmFzZWQgb24gZWxlbWVudCBuYW1lCi0gICAgcmV0dXJu
IFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKKyAgICBSZW5kZXJPYmpl
Y3QqIG9iamVjdCA9IDA7CisgICAgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bXJvd1Rh
ZykpCisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTFJvdyh0aGlzKTsK
KyAgICBlbHNlIGlmIChoYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1mZW5jZWRUYWcpKQorICAg
ICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxGZW5jZWQodGhpcyk7CisgICAg
ZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptZnJhY1RhZykpCisgICAgICAgIG9i
amVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTEZyYWN0aW9uKHRoaXMpOworICAgIGVsc2Ug
aWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bXN1YlRhZykpCisgICAgICAgIG9iamVjdCA9
IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTFN1YlN1cCh0aGlzKTsKKyAgICBlbHNlIGlmIChoYXNM
b2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1zdXBUYWcpKQorICAgICAgICBvYmplY3QgPSBuZXcgKGFy
ZW5hKSBSZW5kZXJNYXRoTUxTdWJTdXAodGhpcyk7CisgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1l
KE1hdGhNTE5hbWVzOjptc3Vic3VwVGFnKSkKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkg
UmVuZGVyTWF0aE1MU3ViU3VwKHRoaXMpOworICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFtZShNYXRo
TUxOYW1lczo6bW92ZXJUYWcpKQorICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJN
YXRoTUxVbmRlck92ZXIodGhpcyk7CisgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5h
bWVzOjptdW5kZXJUYWcpKQorICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRo
TUxVbmRlck92ZXIodGhpcyk7CisgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVz
OjptdW5kZXJvdmVyVGFnKSkKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0
aE1MVW5kZXJPdmVyKHRoaXMpOworICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1l
czo6bXNxcnRUYWcpKQorICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxT
cXVhcmVSb290KHRoaXMpOworICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6
bXJvb3RUYWcpKQorICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxSb290
KHRoaXMpOworICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bWF0aFRhZykp
CisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTE1hdGgodGhpcyk7Cisg
ICAgZWxzZQorICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxCbG9jayh0
aGlzKTsKKyAgICBvYmplY3QtPnNldFN0eWxlKHN0eWxlKTsKKyAgICByZXR1cm4gb2JqZWN0Owog
fQogICAgIAogICAgIApJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1p
bG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQor
CisjaW5jbHVkZSAiTWF0aE1MVGV4dEVsZW1lbnQuaCIKKworI2luY2x1ZGUgIk1hdGhNTE5hbWVz
LmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitNYXRoTUxUZXh0RWxl
bWVudDo6TWF0aE1MVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWF0aE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
K3sKK30KKworUGFzc1JlZlB0cjxNYXRoTUxUZXh0RWxlbWVudD4gTWF0aE1MVGV4dEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
Cit7CisgICAgcmV0dXJuIG5ldyBNYXRoTUxUZXh0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7
Cit9CisKK1JlbmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQoreworICAgIGlmIChoYXNMb2Nh
bE5hbWUoTWF0aE1MTmFtZXM6Om1vVGFnKSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVj
dCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTE9wZXJhdG9yKHRoaXMpOworICAgICAgICBvYmpl
Y3QtPnNldFN0eWxlKHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKK30K
KworICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKwpJbmRleDogV2ViQ29yZS9t
YXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9N
YXRoTUxUZXh0RWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hdGhNTFRleHRFbGVt
ZW50X2gKKyNkZWZpbmUgTWF0aE1MVGV4dEVsZW1lbnRfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkK
KyNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
K2NsYXNzIE1hdGhNTFRleHRFbGVtZW50IDogcHVibGljIE1hdGhNTEVsZW1lbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hdGhNTFRleHRFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAg
Citwcm90ZWN0ZWQ6CisgICAgTWF0aE1MVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqKTsKKyAgICAKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoTUFUSE1MKQorI2VuZGlmIC8vIE1hdGhNTFRleHRFbGVtZW50X2gKSW5kZXg6IFdlYkNvcmUv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGht
bC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9j
ay5oIgorCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsK
KyAgICAKK1JlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhOb2RlKiBjb250YWlu
ZXIpIAorICAgIDogUmVuZGVyQmxvY2soY29udGFpbmVyKSAKK3sKK30KKwordm9pZCBSZW5kZXJN
YXRoTUxCbG9jazo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSkKK3sKKyAgICBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2Uo
ZGlmZiwgb2xkU3R5bGUpOworICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygp
OworfQorCisKK3ZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQoreworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdXNlU3R5bGUgPSBz
dHlsZTsKKyAgICAvLyBNYWtlIHN1cmUgd2UgYWx3YXlzIGhhdmUgaW5saW5lLWJsb2NrCisgICAg
aWYgKHVzZVN0eWxlLT5kaXNwbGF5KCkgIT0gSU5MSU5FX0JMT0NLKSB7CisgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUodXNlU3R5bGUuZ2V0
KCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgICAg
ICB1c2VTdHlsZSA9IG5ld1N0eWxlLnJlbGVhc2UoKTsKKyAgICB9CisgICAgUmVuZGVyQmxvY2s6
OnNldFN0eWxlKHVzZVN0eWxlKTsKK30KKworYm9vbCBSZW5kZXJNYXRoTUxCbG9jazo6aXNDaGls
ZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyU3R5bGUqKSBjb25zdAoreworICAg
IHJldHVybiAoY2hpbGQtPm5vZGUoKSAmJiBjaGlsZC0+bm9kZSgpLT5ub2RlVHlwZSgpID09IE5v
ZGU6OkVMRU1FTlRfTk9ERSkgPyB0cnVlIDogZmFsc2U7Cit9CisKK1JlZlB0cjxSZW5kZXJTdHls
ZT4gUmVuZGVyTWF0aE1MQmxvY2s6Om1ha2VCbG9ja1N0eWxlKCkKK3sKKyAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIG5ld1N0eWxl
LT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShCTE9DSyk7
CisgICAgcmV0dXJuIG5ld1N0eWxlOworfQorCitpbnQgUmVuZGVyTWF0aE1MQmxvY2s6Om5vbk9w
ZXJhdG9ySGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAoIWlzUmVuZGVyTWF0aE1MT3BlcmF0b3Io
KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEhlaWdodCgpOworICAgICAgICAKKyAgICByZXR1cm4g
MDsKK30KKwordm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6c3RyZXRjaFRvSGVpZ2h0KGludCBoZWln
aHQpIAoreworICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsKKyAgICB3
aGlsZSAoY3VycmVudCkgeworICAgICAgIGlmIChjdXJyZW50LT5pc1JlbmRlck1hdGhNTEJsb2Nr
KCkpIHsKKyAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayogYmxvY2sgPSB0b1JlbmRlck1hdGhN
TEJsb2NrKGN1cnJlbnQpOworICAgICAgICAgIGJsb2NrLT5zdHJldGNoVG9IZWlnaHQoaGVpZ2h0
KTsKKyAgICAgICB9CisgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCk7Cisg
ICAgfQorfQorCisKK30gICAgCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxC
bG9jay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlck1hdGhNTEJsb2NrX2gKKyNkZWZp
bmUgUmVuZGVyTWF0aE1MQmxvY2tfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUg
IlJlbmRlckJsb2NrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFJlbmRl
ck1hdGhNTEJsb2NrIDogcHVibGljIFJlbmRlckJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJN
YXRoTUxCbG9jayhOb2RlKiBjb250YWluZXIpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPik7ICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxs
b3dlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0OworICAgIAorICAgIHZpcnR1
YWwgYm9vbCBpc1JlbmRlck1hdGhNTEJsb2NrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb3coKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTE1hdGgoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNCYXNlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGludCBub25PcGVyYXRvckhlaWdodCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBzdHJldGNoVG9IZWlnaHQoaW50IGhlaWdodCk7CisgICAgCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5bGU+IG1ha2VCbG9ja1N0eWxlKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICAKK307CisKK2lubGluZSBSZW5kZXJNYXRoTUxC
bG9jayogdG9SZW5kZXJNYXRoTUxCbG9jayhSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sgCisgICAg
QVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxSZW5kZXJNYXRoTUxCbG9jayo+KG9iamVjdCk7Cit9CisKK2lubGlu
ZSBjb25zdCBSZW5kZXJNYXRoTUxCbG9jayogdG9SZW5kZXJNYXRoTUxCbG9jayhjb25zdCBSZW5k
ZXJPYmplY3QqIG9iamVjdCkKK3sgCisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1Jl
bmRlck1hdGhNTEJsb2NrKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJN
YXRoTUxCbG9jayo+KG9iamVjdCk7Cit9CisgICAgCit9CisKKworI2VuZGlmIC8vIEVOQUJMRShN
QVRITUwpCisjZW5kaWYgLy8gUmVuZGVyTWF0aE1MQmxvY2tfaApJbmRleDogV2ViQ29yZS9tYXRo
bWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9S
ZW5kZXJNYXRoTUxGZW5jZWQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVu
ZGVyTWF0aE1MRmVuY2VkLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEZlbmNl
ZC5oIgorCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxPcGVy
YXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitSZW5kZXJNYXRoTUxGZW5jZWQ6
OlJlbmRlck1hdGhNTEZlbmNlZChOb2RlKiBmZW5jZWQpIAorICAgIDogUmVuZGVyTWF0aE1MUm93
KGZlbmNlZCksIAorICAgIG1fb3BlbigweDI4KSwgCisgICAgbV9jbG9zZSgweDI5KQoreworfQor
Cit2b2lkIFJlbmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQoKQoreworICAgIEVs
ZW1lbnQqIGZlbmNlZCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOworIAorICAgIC8v
IEZJWE1FOiBIYW5kbGUgb3Blbi9jbG9zZSB2YWx1ZXMgd2l0aCBtb3JlIHRoYW4gb25lIGNoYXJh
Y3RlciAodGhleSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIHRleHQpICAgCisgICAgQXRvbWljU3Ry
aW5nIG9wZW5WYWx1ZSA9IGZlbmNlZC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpvcGVuQXR0
cik7CisgICAgaWYgKG9wZW5WYWx1ZS5sZW5ndGgoKSA+IDApCisgICAgICAgIG1fb3BlbiA9IG9w
ZW5WYWx1ZVswXTsKKyAgICBBdG9taWNTdHJpbmcgY2xvc2VWYWx1ZSA9IGZlbmNlZC0+Z2V0QXR0
cmlidXRlKE1hdGhNTE5hbWVzOjpjbG9zZUF0dHIpOworICAgIGlmIChjbG9zZVZhbHVlLmxlbmd0
aCgpID4gMCkKKyAgICAgICAgbV9jbG9zZSA9IGNsb3NlVmFsdWVbMF07CisgICAgCisgICAgQXRv
bWljU3RyaW5nIHNlcGFyYXRvcnMgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZmVuY2VkKS0+Z2V0
QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpzZXBhcmF0b3JzQXR0cik7CisgICAgaWYgKCFzZXBhcmF0
b3JzLmlzTnVsbCgpKSB7CisgICAgICAgIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyczsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzZXBhcmF0b3JzLmxlbmd0aCgpOyBpKysp
IHsKKyAgICAgICAgICAgIGlmICghaXNTcGFjZU9yTmV3bGluZShzZXBhcmF0b3JzW2ldKSkKKyAg
ICAgICAgICAgICAgICBjaGFyYWN0ZXJzLmFwcGVuZChzZXBhcmF0b3JzW2ldKTsKKyAgICAgICAg
fQorICAgICAgICBtX3NlcGFyYXRvcnMgPSAhc2VwYXJhdG9ycy5sZW5ndGgoKSA/IDAgOiBTdHJp
bmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycy5kYXRhKCkgLCBjaGFyYWN0ZXJzLnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIHNlcGFyYXRvciBkZWZhdWx0cyB0byBhIHNpbmds
ZSBjb21tYQorICAgICAgICBtX3NlcGFyYXRvcnMgPSBTdHJpbmdJbXBsOjpjcmVhdGUoIiwiKTsK
KyAgICB9CisgICAgCisgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgbWFrZUZlbmNlcygpOwor
fQorCitSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZU9wZXJhdG9y
U3R5bGUoKSAKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpOworICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICBu
ZXdTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgIG5ld1N0eWxlLT5zZXRIZWln
aHQoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUtPnNldFZlcnRpY2FsQWxp
Z24oTUlERExFKTsKKyAgICByZXR1cm4gbmV3U3R5bGU7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1M
RmVuY2VkOjptYWtlRmVuY2VzKCkKK3sKKyAgICBSZW5kZXJPYmplY3QqIG9wZW5GZW5jZSA9IG5l
dyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MT3BlcmF0b3IoZG9jdW1lbnQoKSwgbV9vcGVu
KTsKKyAgICBvcGVuRmVuY2UtPnNldFN0eWxlKG1ha2VPcGVyYXRvclN0eWxlKCkucmVsZWFzZSgp
KTsKKyAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQob3BlbkZlbmNlLCBmaXJzdENoaWxkKCkpOwor
ICAgIFJlbmRlck9iamVjdCogY2xvc2VGZW5jZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVy
TWF0aE1MT3BlcmF0b3IoZG9jdW1lbnQoKSwgbV9jbG9zZSk7CisgICAgY2xvc2VGZW5jZS0+c2V0
U3R5bGUobWFrZU9wZXJhdG9yU3R5bGUoKS5yZWxlYXNlKCkpOworICAgIFJlbmRlckJsb2NrOjph
ZGRDaGlsZChjbG9zZUZlbmNlKTsKK30KKwordm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6OmFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogKQoreworICAgIC8vIG1ha2Ug
dGhlIGZlbmNlcyBpZiB0aGUgcmVuZGVyIG9iamVjdCBpcyBlbXB0eQorICAgIGlmIChpc0VtcHR5
KCkpCisgICAgICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgCisgICAgaWYgKG1fc2VwYXJh
dG9ycy5nZXQoKSkgeworICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOworICAgICAgICBO
b2RlKiBwb3NpdGlvbiA9IGNoaWxkLT5ub2RlKCk7CisgICAgICAgIHdoaWxlIChwb3NpdGlvbikg
eworICAgICAgICAgICAgaWYgKHBvc2l0aW9uLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRf
Tk9ERSkKKyAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgcG9zaXRpb24gPSBw
b3NpdGlvbi0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50
PjEpIHsKKyAgICAgICAgICAgIFVDaGFyIHNlcGFyYXRvcjsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gdXNlIHRoZSBsYXN0IHNlcGFyYXRvciBpZiB3ZSd2ZSBydW4gb3V0IG9mIHNwZWNp
ZmllZCBzZXBhcmF0b3JzCisgICAgICAgICAgICBpZiAoKGNvdW50IC0gMSkgPj0gbV9zZXBhcmF0
b3JzLmdldCgpLT5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBzZXBhcmF0b3IgPSAoKm1fc2Vw
YXJhdG9ycy5nZXQoKSlbbV9zZXBhcmF0b3JzLmdldCgpLT5sZW5ndGgoKSAtIDFdOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9ICgqbV9zZXBhcmF0b3JzLmdl
dCgpKVtjb3VudCAtIDFdOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBzZXBhcmF0b3JPYmogPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJh
dG9yKGRvY3VtZW50KCksIHNlcGFyYXRvcik7CisgICAgICAgICAgICBzZXBhcmF0b3JPYmotPnNl
dFN0eWxlKG1ha2VPcGVyYXRvclN0eWxlKCkucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIFJlbmRl
ckJsb2NrOjphZGRDaGlsZChzZXBhcmF0b3JPYmosIGxhc3RDaGlsZCgpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICAvLyBpZiB3ZSBoYXZlIGEgYmxvY2ssIHdlJ2xsIHdyYXAgaXQgaW4g
YW4gaW5saW5lLWJsb2NrCisgICAgaWYgKGNoaWxkLT5pc0Jsb2NrRmxvdygpICYmIGNoaWxkLT5z
dHlsZSgpLT5kaXNwbGF5KCkgIT0gSU5MSU5FX0JMT0NLKSB7CisKKyAgICAgICAgLy8gYmxvY2sg
b2JqZWN0cyB3cmFwcGVyCisKKyAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgbmV3U3R5
bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShJ
TkxJTkVfQkxPQ0spOworICAgICAgICBibG9jay0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgp
KTsKKyAgICAgICAgCisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChibG9jaywgbGFzdENo
aWxkKCkpOworICAgICAgICBibG9jay0+YWRkQ2hpbGQoY2hpbGQpOyAgICAKKyAgICAgICAgCisg
ICAgfSBlbHNlCisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChjaGlsZCwgbGFzdENoaWxk
KCkpOworfQorCit2b2lkIFJlbmRlck1hdGhNTEZlbmNlZDo6bGF5b3V0KCkgCit7CisKKyAgICBS
ZW5kZXJNYXRoTUxSb3c6OmxheW91dCgpOworICAgIAorICAgIGludCB3aWR0aCA9IDA7CisgICAg
UmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChjdXJyZW50
KSB7CisgICAgICAgIGlmIChjdXJyZW50LT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKworICAgICAg
ICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
Y3VycmVudCk7CisgICAgICAgICAgICB3aWR0aCArPSBib3gtPm9mZnNldFdpZHRoKCk7CisgICAg
ICAgIH0KKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCk7CisgICAgfQor
ICAgIHdpZHRoKys7CisgICAgc3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkp
OworCisgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAgbWFya0Nv
bnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7Cisg
ICAgCit9CisKK30gICAgCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0
aE1MRmVuY2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MRmVu
Y2VkLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlck1hdGhNTEZlbmNlZF9oCisjZGVm
aW5lIFJlbmRlck1hdGhNTEZlbmNlZF9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVk
ZSAiUmVuZGVyTWF0aE1MUm93LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNz
IFJlbmRlck1hdGhNTEZlbmNlZCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgeworcHVibGljOgor
ICAgIFJlbmRlck1hdGhNTEZlbmNlZChOb2RlICpmcmFjdGlvbik7CisgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Citwcml2YXRlOgorICAgIHZvaWQgbWFrZUZlbmNl
cygpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbWFrZU9wZXJhdG9yU3R5bGUoKTsKKyAgICBV
Q2hhciBtX29wZW47CisgICAgVUNoYXIgbV9jbG9zZTsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4g
bV9zZXBhcmF0b3JzOworfTsKKyAgICAKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisK
KyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxGZW5jZWRfaApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEZyYWN0
aW9uLmgiCisKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKyAgICAKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgaG9yaXpvbnRhbFBhZCA9IDAuMjsKK3N0YXRpYyBjb25zdCBpbnQgYm9yZGVyVGhpbiA9IDE7
CitzdGF0aWMgY29uc3QgaW50IGJvcmRlck1lZGl1bSA9IDM7CitzdGF0aWMgY29uc3QgaW50IGJv
cmRlclRoaWNrID0gNTsKKyAgICAKK1JlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxG
cmFjdGlvbihOb2RlKiBmcmFjdGlvbikgCisgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhmcmFjdGlv
bikgCit7CisgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOworfQorCit2b2lkIFJlbmRlck1h
dGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCgpCit7CisgICAgLy8gRklYTUU6IG1mcmFj
IHdoZXJlIGJldmVsbGVkPXRydWUgd2lsbCBuZWVkIHRvIHJlb3JnYW5pemUgdGhlIGRlc2NlbmRh
bnRzCisgICAgCisgICAgaWYgKGlzRW1wdHkoKSkgCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBFbGVtZW50KiBmcmFjdGlvbiA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOworICAg
IAorICAgIFJlbmRlck9iamVjdCogbnVtZXJhdG9yID0gZmlyc3RDaGlsZCgpOworICAgIFN0cmlu
ZyBuYWxpZ24gPSBmcmFjdGlvbi0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpudW1hbGlnbkF0
dHIpOworICAgIC8vIEZJWE1FOiB0aGVzZSBjb25zdGFudHMgc2hvdWxkIGJlIGRlZmluZWQgc29t
ZXdoZXJlCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbGlnbiwgImxlZnQiKSkKKyAgICAg
ICAgbnVtZXJhdG9yLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oTEVGVCk7CisgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobmFsaWduLCAicmlnaHQiKSkKKyAgICAgICAgbnVtZXJhdG9yLT5z
dHlsZSgpLT5zZXRUZXh0QWxpZ24oUklHSFQpOworICAgIGVsc2UKKyAgICAgICAgbnVtZXJhdG9y
LT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsKKworICAgIFJlbmRlck9iamVjdCogZGVu
b21pbmF0b3IgPSBudW1lcmF0b3ItPm5leHRTaWJsaW5nKCk7CisgICAgaWYgKCFkZW5vbWluYXRv
cikKKyAgICAgICByZXR1cm47CisgICAgCisgICAgU3RyaW5nIGRhbGlnbiA9IGZyYWN0aW9uLT5n
ZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmRlbm9tYWxpZ25BdHRyKTsKKyAgICAvLyBGSVhNRTog
dGhlc2UgY29uc3RhbnRzIHNob3VsZCBiZSBkZWZpbmVkIHNvbWV3aGVyZQorICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShkYWxpZ24sICJsZWZ0IikpCisgICAgICAgIGRlbm9taW5hdG9yLT5zdHls
ZSgpLT5zZXRUZXh0QWxpZ24oTEVGVCk7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZGFsaWduLCAicmlnaHQiKSkKKyAgICAgICAgZGVub21pbmF0b3ItPnN0eWxlKCktPnNldFRleHRB
bGlnbihSSUdIVCk7CisgICAgZWxzZQorICAgICAgICBkZW5vbWluYXRvci0+c3R5bGUoKS0+c2V0
VGV4dEFsaWduKENFTlRFUik7CisgICAgICAgIAorICAgIC8vIEZJWE1FOiBwYXJzZSB1bml0cwor
ICAgIC8vIEZJWE1FOiB0aGVzZSBjb25zdGFudHMgc2hvdWxkIGJlIGRlZmluZWQgc29tZXdoZXJl
CisgICAgU3RyaW5nIHRoaWNrbmVzcyA9IGZyYWN0aW9uLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFt
ZXM6OmxpbmV0aGlja25lc3NBdHRyKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodGhpY2tu
ZXNzLCAidGhpbiIpKQorICAgICAgICBkZW5vbWluYXRvci0+c3R5bGUoKS0+c2V0Qm9yZGVyVG9w
V2lkdGgoYm9yZGVyVGhpbik7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodGhpY2tu
ZXNzLCAibWVkaXVtIikpCisgICAgICAgIGRlbm9taW5hdG9yLT5zdHlsZSgpLT5zZXRCb3JkZXJU
b3BXaWR0aChib3JkZXJNZWRpdW0pOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHRo
aWNrbmVzcywgInRoaWNrIikpCisgICAgICAgIGRlbm9taW5hdG9yLT5zdHlsZSgpLT5zZXRCb3Jk
ZXJUb3BXaWR0aChib3JkZXJUaGljayk7ICAgIAorfQorCit2b2lkIFJlbmRlck1hdGhNTEZyYWN0
aW9uOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkKQoreworICAgIFJlbmRlckJsb2NrKiByb3cgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRl
ckJsb2NrKGRvY3VtZW50KCkpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcm93U3R5bGUgPSBt
YWtlQmxvY2tTdHlsZSgpOworCisgICAgcm93U3R5bGUtPnNldFRleHRBbGlnbihDRU5URVIpOwor
ICAgIExlbmd0aCBwYWQoc3RhdGljX2Nhc3Q8aW50Pihyb3dTdHlsZS0+Zm9udFNpemUoKSAqIGhv
cml6b250YWxQYWQpLCBGaXhlZCk7CisgICAgcm93U3R5bGUtPnNldFBhZGRpbmdMZWZ0KHBhZCk7
CisgICAgcm93U3R5bGUtPnNldFBhZGRpbmdSaWdodChwYWQpOworICAgIAorICAgIC8vIEFkZCBh
IGJvcmRlciB0b3AgaWYgdGhpcyBpcyB0aGUgZGVub21pbmF0b3IuCisgICAgYm9vbCBpc051bWVy
YXRvciA9IGlzRW1wdHkoKTsKKyAgICBpZiAoIWlzTnVtZXJhdG9yKSB7CisgICAgICAgIC8vIGRl
bm9taW5hdG9yLCBzbyBhZGQgYSBib3JkZXIKKyAgICAgICAgcm93U3R5bGUtPnNldEJvcmRlclRv
cFdpZHRoKGJvcmRlclRoaW4pOworICAgICAgICByb3dTdHlsZS0+c2V0Qm9yZGVyVG9wU3R5bGUo
U09MSUQpOworICAgICAgICByb3dTdHlsZS0+c2V0Qm9yZGVyVG9wQ29sb3IoQ29sb3IoMCwgMCwg
MCkpOworICAgICAgICByb3dTdHlsZS0+c2V0UGFkZGluZ1RvcChMZW5ndGgoMywgRml4ZWQpKTsK
KyAgICB9CisgICAgCisgICAgcm93LT5zZXRTdHlsZShyb3dTdHlsZS5yZWxlYXNlKCkpOworICAg
IFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGJlZm9yZUNoaWxkKTsKKyAgICByb3ctPmFkZENo
aWxkKGNoaWxkKTsgICAgCisgICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKyAgICAKK30KKwor
CisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJNYXRoTUxGcmFjdGlv
bl9oCisjZGVmaW5lIFJlbmRlck1hdGhNTEZyYWN0aW9uX2gKKworI2lmIEVOQUJMRShNQVRITUwp
CisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFJlbmRlck1hdGhNTEZyYWN0aW9uIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2Nr
IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNYXRoTUxGcmFjdGlvbihOb2RlKiBmcmFjdGlvbik7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQo
KTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisKKyNlbmRpZiAvLyBSZW5k
ZXJNYXRoTUxGcmFjdGlvbl9oCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRo
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFsZXgg
TWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwp
CisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxNYXRoLmgiCisKKyNpbmNsdWRlICJNYXRoTUxOYW1l
cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1l
czsKKworUmVuZGVyTWF0aE1MTWF0aDo6UmVuZGVyTWF0aE1MTWF0aChOb2RlKiBtYXRoKQorICAg
IDogUmVuZGVyTWF0aE1MUm93KG1hdGgpCit7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1MTWF0aDo6
c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCit7CisgICAgLy8gU2tpcCB0
aGUgc2V0dGluZyBvZiBpbmxpbmUtYmxvY2sKKyAgICBSZW5kZXJCbG9jazo6c2V0U3R5bGUoc3R5
bGUpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorCkluZGV4OiBXZWJDb3Jl
L21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwv
UmVuZGVyTWF0aE1MTWF0aC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVy
TWF0aE1MTWF0aC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyTWF0aE1MTWF0
aF9oCisjZGVmaW5lIFJlbmRlck1hdGhNTE1hdGhfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKwor
I2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvdy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAg
CitjbGFzcyBSZW5kZXJNYXRoTUxNYXRoIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CitwdWJs
aWM6CisgICAgUmVuZGVyTWF0aE1MTWF0aChOb2RlKiBjb250YWluZXIpOworICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlck1hdGhNTE1hdGgoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsgICAgCit9OworICAg
IAorfQorCisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorI2VuZGlmIC8vIFJlbmRlck1hdGhN
TE1hdGhfaApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxl
eCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhN
TCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9yLmgiCisKKyNpbmNsdWRlICJGb250
U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlclRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhN
TE5hbWVzOworCitSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTm9k
ZSogY29udGFpbmVyKQorICAgIDogUmVuZGVyTWF0aE1MQmxvY2soY29udGFpbmVyKSwKKyAgICAg
IG1fc3RyZXRjaEhlaWdodCgwKSwKKyAgICAgIG1fb3BlcmF0b3IoMCkKK3sKK30KKyAgICAKK1Jl
bmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihOb2RlKiBjb250YWluZXIs
IFVDaGFyIG9wZXJhdG9yQ2hhcikKKyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGNvbnRhaW5lciks
CisgICAgICBtX3N0cmV0Y2hIZWlnaHQoMCksCisgICAgICBtX29wZXJhdG9yKG9wZXJhdG9yQ2hh
cikKK3sKK30KKyAgICAKKyAgICAKK3ZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNldFN0eWxl
KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQoreworICAgIC8vIGNsb25lIHRoZSBzdHls
ZSBzbyB0aGF0IHdlIGNhbiBhZGp1c3QgdGhlIGhlaWdodCBsYXRlcgorICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gdXNlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUuZ2V0KCkpOworICAg
IAorICAgIC8vIG1ha2Ugc3VyZSB3ZSBhbHdheXMgaGF2ZSBhbiBpbmxpbmUtYmxvY2sKKyAgICB1
c2VTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgIAorICAgIC8vIHBhc3MgdGhl
IG5ldyBzdHlsZSB0byB0aGUgYmxvY2sKKyAgICBSZW5kZXJCbG9jazo6c2V0U3R5bGUodXNlU3R5
bGUpOworfQorCit2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQoreworICAgIFJl
bmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CisgICAgc2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Cit9CisKK2Jvb2wgUmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmlzQ2hpbGRBbGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpzdHJl
dGNoVG9IZWlnaHQoaW50IGhlaWdodCkKK3sKKyAgICBpZiAoaGVpZ2h0ID09IG1fc3RyZXRjaEhl
aWdodCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RyZXRjaEhlaWdodCA9IGhlaWdodDsKKyAg
ICAKKyAgICAvLyB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHVwZGF0ZUJveE1vZGVsSW5mb0Zy
b21TdHlsZSgpOworICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAg
IG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OmxheW91dCgpIAoreworICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3Vs
ZG4ndCBiZSBjYWxsZWQgaGVyZSBidXQgd2hlbiB0aGUgb3BlcmF0b3IKKyAgICAvLyBpc24ndCBz
dHJldGNoZWQgKGUuZy4gb3V0c2lkZSBvZiBhIG1yb3cpLCBpdCBuZWVkcyB0byBiZSBjYWxsZWQg
c29tZWhvdworICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgUmVuZGVyQmxvY2s6OmxheW91
dCgpOworfQorCisvLyBUaGlzIGlzIGEgdGFibGUgb2Ygc3RyZXRjaHkgY2hhcmFjdGVycy4KKy8v
IEZJWE1FOiBTaG91bGQgdGhpcyBiZSByZWFkIGZyb20gdGhlIHVuaWNvZGUgY2hhcmFjdGVyaXN0
aWNzIHNvbWVob3c/CisvLyB0YWJsZTogIHN0cmV0Y2h5IG9wZXJhdG9yLCB0b3AgY2hhciwgZXh0
ZW5zaW9uIGNoYXIsIGJvdHRvbSBjaGFyLCBtaWRkbGUgY2hhcgorc3RhdGljIGNvbnN0IFVDaGFy
IHN0cmV0Y2h5WzldWzVdID0geworeyAweDI4ICAsIDB4MjM5YiwgMHgyMzljLCAweDIzOWQsIDB4
MCAgICB9LCAvLyBsZWZ0IHBhcmVudGhlc2lzCit7IDB4MjkgICwgMHgyMzllLCAweDIzOWYsIDB4
MjNhMCwgMHgwICAgIH0sIC8vIHJpZ2h0IHBhcmVudGhlc2lzCit7IDB4NWIgICwgMHgyM2ExLCAw
eDIzYTIsIDB4MjNhMywgMHgwICAgIH0sIC8vIGxlZnQgc3F1YXJlIGJyYWNrZXQKK3sgMHg1ZCAg
LCAweDIzYTQsIDB4MjNhNSwgMHgyM2E2LCAweDAgICAgfSwgLy8gcmlnaHQgc3F1YXJlIGJyYWNr
ZXQKK3sgMHg3YiAgLCAweDIzYTcsIDB4MjNhYSwgMHgyM2E5LCAweDIzYTggfSwgLy8gbGVmdCBj
dXJseSBicmFja2V0Cit7IDB4N2MgICwgMHgyM2QwLCAweDIzZDAsIDB4MjNkMCwgMHgwICAgIH0s
IC8vIHZlcnRpY2FsIGJhcgoreyAweDdkICAsIDB4MjNhYiwgMHgyM2FhLCAweDIzYWQsIDB4MjNh
YyB9LCAvLyByaWdodCBjdXJseSBicmFja2V0Cit7IDB4MjIyYiwgMHgyMzIwLCAweDIzYWUsIDB4
MjMyMSwgMHgwICAgIH0sIC8vIGludGVncmFsIHNpZ24KK3sgMHgwICAgLCAweDAsICAgIDB4MCwg
ICAgMHgwLCAgICAweDAgICAgfQorfTsKKwordm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBk
YXRlRnJvbUVsZW1lbnQoKQoreworICAgIHdoaWxlIChmaXJzdENoaWxkKCkpIHsKKyAgICAgICBS
ZW5kZXJPYmplY3QqIG9iaiA9IGZpcnN0Q2hpbGQoKTsKKyAgICAgICByZW1vdmVDaGlsZChvYmop
OworICAgIH0KKyAgICAKKyAgICBVQ2hhciBmaXJzdENoYXIgPSBtX29wZXJhdG9yOworICAgICAg
ICAKKyAgICBFbGVtZW50KiBtbyA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOworICAg
IGlmICghZmlyc3RDaGFyICYmIG1vKSB7CisgICAgICAgIC8vIEZpbmQgdGhlIG9wZXJhdG9yIGNo
YXJhY3RlciBpbiB0aGUgdGV4dCBjb250ZW50CisgICAgICAgIAorICAgICAgICBTdHJpbmcgb3BU
ZXh0ID0gbW8tPnRleHRDb250ZW50KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyAhZmlyc3RDaGFyICYmIGkgPCBvcFRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAg
aWYgKCFpc1NwYWNlT3JOZXdsaW5lKG9wVGV4dFtpXSkpCisgICAgICAgICAgICAgICBmaXJzdENo
YXIgPSBvcFRleHRbaV07CisgICAgICAgIH0KKyAgICB9CisgICAgaW50IGluZGV4ID0gLTE7Cisg
ICAgaWYgKGZpcnN0Q2hhcikgeworICAgICAgICBmb3IgKGluZGV4Kys7IHN0cmV0Y2h5W2luZGV4
XVswXTsgaW5kZXgrKykgeworICAgICAgICAgICAgaWYgKHN0cmV0Y2h5W2luZGV4XVswXSA9PSBm
aXJzdENoYXIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgYm9vbCBub1N0cmV0Y2ggPSBmYWxzZTsKKyAgICBpZiAobW8pIHsKKyAgICAgICAgQXRv
bWljU3RyaW5nIHN0cmV0Y2h5QXR0ciA9IG1vLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnN0
cmV0Y2h5QXR0cik7CisgICAgICAgIG5vU3RyZXRjaCA9IGVxdWFsSWdub3JpbmdDYXNlKHN0cmV0
Y2h5QXR0ciwgImZhbHNlIik7CisgICAgfQorICAgIAorICAgIC8vIGVpdGhlciB3ZSBoYXZlIG5v
IGNoYXJhY3RlcnMsIHRoZSBzdHJldGNoIGhlaWdodCBpcyBzbWFsbCwgb3Igd2UgaGF2ZSBhIG5v
bi1zdHJldGNoYWJsZSBjaGFyYWN0ZXIKKyAgICAvLyBJZiBzbywgdGhlbiB3ZSBqdXN0IHNldCB0
aGUgZm9udCBzaXplIGFuZCB3cmFwIHRoZSB0ZXh0CisgICAgYm9vbCBjYW5TdHJldGNoID0gaW5k
ZXggPj0gMCAmJiBzdHJldGNoeVtpbmRleF1bMF07CisgICAgaWYgKG5vU3RyZXRjaCB8fCAhZmly
c3RDaGFyIHx8IG1fc3RyZXRjaEhlaWdodCA8PSAyNCB8fCAhY2FuU3RyZXRjaCkgeworICAgIAor
ICAgICAgICBSZW5kZXJCbG9jayogY29udGFpbmVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5k
ZXJCbG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAgCisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIG5ld1N0eWxlLT5p
bmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0sp
OworCisgICAgICAgIGludCBjdXJyZW50Rm9udFNpemUgPSBzdHlsZSgpLT5mb250U2l6ZSgpOwor
ICAgICAgICBpZiAoIW5vU3RyZXRjaCAmJiBtX3N0cmV0Y2hIZWlnaHQgPiAwICYmIG1fc3RyZXRj
aEhlaWdodCA8PSAyNCAgJiYgbV9zdHJldGNoSGVpZ2h0ID4gY3VycmVudEZvbnRTaXplICYmIGNh
blN0cmV0Y2gpIHsKKyAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiogZGVzYyA9IG5ldyBGb250
RGVzY3JpcHRpb24oKTsKKyAgICAgICAgICAgIGRlc2MtPnNldElzQWJzb2x1dGVTaXplKHRydWUp
OworICAgICAgICAgICAgZGVzYy0+c2V0U3BlY2lmaWVkU2l6ZShtX3N0cmV0Y2hIZWlnaHQpOwor
ICAgICAgICAgICAgZGVzYy0+c2V0Q29tcHV0ZWRTaXplKG1fc3RyZXRjaEhlaWdodCk7CisgICAg
ICAgICAgICBuZXdTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKCpkZXNjKTsKKyAgICAgICAgICAg
IG5ld1N0eWxlLT5mb250KCkudXBkYXRlKG5ld1N0eWxlLT5mb250KCkuZm9udFNlbGVjdG9yKCkp
OworICAgICAgICAgICAgc3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aCgxMDAuMCwgUGVyY2VudCkp
OworICAgICAgICAgICAgc3R5bGUoKS0+c2V0TGluZUhlaWdodChMZW5ndGgobV9zdHJldGNoSGVp
Z2h0LCBGaXhlZCkpOworICAgICAgICB9IGVsc2UgaWYgKG1fc3RyZXRjaEhlaWdodCA+IDApIHsK
KyAgICAgICAgICAgIC8vIHdlJ3JlIG5vdCBzdHJldGNoaW5nIHRoZSBvcGVyYXRvcgorICAgICAg
ICAgICAgc3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChBdXRvKSk7CisgICAgICAgICAgICBzdHls
ZSgpLT5zZXRMaW5lSGVpZ2h0KExlbmd0aCgwLjc1LCBQZXJjZW50KSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIG5ld1N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKEJBU0VMSU5FKTsKKyAg
ICAgICAgY29udGFpbmVyLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOworICAgICAgICBh
ZGRDaGlsZChjb250YWluZXIpOworICAgICAKKyAgICAgICAgUmVuZGVyVGV4dCogdGV4dCA9IG5l
dyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dChkb2N1bWVudCgpLCBtX29wZXJhdG9yID8gU3Ry
aW5nSW1wbDo6Y3JlYXRlKCZtX29wZXJhdG9yLCAxKSA6IFN0cmluZ0ltcGw6OmNyZWF0ZShtby0+
dGV4dENvbnRlbnQoKSkpOworICAgICAgICB0ZXh0LT5zZXRTdHlsZShjb250YWluZXItPnN0eWxl
KCkpOworICAgICAgICBjb250YWluZXItPmFkZENoaWxkKHRleHQpOworICAgIAorICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIGJ1aWxkIHN0cmV0Y2hhYmxlIGNoYXJhY3RlcnMKKyAgICAgICAgCisg
ICAgICAgIHN0eWxlKCktPnNldEhlaWdodChMZW5ndGgoQXV0bykpOworICAgICAgICBpZiAobV9z
dHJldGNoSGVpZ2h0ID4gMCkKKyAgICAgICAgICAgIHN0eWxlKCktPnNldExpbmVIZWlnaHQoTGVu
Z3RoKG1fc3RyZXRjaEhlaWdodCwgRml4ZWQpKTsKKyAgICAgICAgaWYgKHN0cmV0Y2h5W2luZGV4
XVs0XSkgeworICAgICAgICAKKyAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBtaWRkbGUgZ2x5cGgg
KGUuZy4gYSBjdXJseSBicmFja2V0KQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgaGFs
ZiA9IChtX3N0cmV0Y2hIZWlnaHQgLSAxMCkgLyAyOworICAgICAgICAgICAgaWYgKGhhbGYgPD0g
MTApIHsKKyAgICAgICAgICAgICAgICAvLyB3ZSBvbmx5IGhhdmUgZW5vdWdoIHNwYWNlIGZvciB0
aGUgdG9wICYgYm90dG9tIGdseXBoCisgICAgICAgICAgICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5
W2luZGV4XVsxXSwgaGFsZik7CisgICAgICAgICAgICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5W2lu
ZGV4XVs0XSwgMTAsIC0yKTsKKyAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5k
ZXhdWzNdLCAwLCAtNCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8v
IHdlIGhhdmUgdG8gZXh0ZW5kIGJvdGggdGhlIHRvcCBhbmQgYm90dG9tIHRvIHRoZSBtaWRkbGUK
KyAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzFdLCAxMCk7CisgICAg
ICAgICAgICAgICAgaW50IHJlbWFpbmluZyA9IGhhbGYtMTA7CisgICAgICAgICAgICAgICAgd2hp
bGUgKHJlbWFpbmluZyA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8
IDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhd
WzJdLCByZW1haW5pbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
a2VHbHlwaChzdHJldGNoeVtpbmRleF1bMl0sIDEwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlbWFpbmluZyAtPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUaGUgbWlkZGxlIGdseXBo
CisgICAgICAgICAgICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVs0XSwgMTAsIC0yKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBoYWxmLTEwOwor
ICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBmdWxsIGhlaWdodCBpbiBj
YXNlIHRoZSBoZWlnaHQgaXMgb2RkCisgICAgICAgICAgICAgICAgaWYgKG1fc3RyZXRjaEhlaWdo
dCAlIDIgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nKys7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIHdoaWxlIChyZW1haW5pbmcgPiAwKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPCAxMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVsyXSwgcmVtYWluaW5nKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzJd
LCAxMCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgLT0gMTA7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWFrZUds
eXBoKHN0cmV0Y2h5W2luZGV4XVszXSwgMCwgLTQpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAKKyAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBoYXZlIGEgbWlkZGxl
IGdseXBoCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCByZW1haW5pbmcgPSBtX3N0cmV0
Y2hIZWlnaHQgLSAyMDsKKyAgICAgICAgICAgIG1ha2VHbHlwaChzdHJldGNoeVtpbmRleF1bMV0s
IDEwKTsKKyAgICAgICAgICAgIHdoaWxlIChyZW1haW5pbmcgPiAwKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHJlbWFpbmluZyA8IDEwKSB7CisgICAgICAgICAgICAgICAgICAgIG1ha2VHbHlwaChz
dHJldGNoeVtpbmRleF1bMl0sIHJlbWFpbmluZyk7CisgICAgICAgICAgICAgICAgICAgIHJlbWFp
bmluZyA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
bWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVsyXSwgMTApOworICAgICAgICAgICAgICAgICAgICBy
ZW1haW5pbmcgLT0gMTA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVszXSwgMCwgLTQpOworICAgICAgICB9Cisg
ICAgfQorICAgICAgIAorfQorCitSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck1hdGhNTE9wZXJh
dG9yOjptYWtlU3RhY2thYmxlU3R5bGUoaW50IHNpemUsIGludCB0b3BSZWxhdGl2ZSkKK3sKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwor
ICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICBuZXdTdHlsZS0+c2V0RGlz
cGxheShCTE9DSyk7CisKKyAgICAvLyAxNHB4IGlzIHRoZSBzaXplIHdlJ2xsIHVzZSBmb3IgYWxs
IGNoYXJhY3RlcnMKKyAgICBGb250RGVzY3JpcHRpb24qIGRlc2MgPSBuZXcgRm9udERlc2NyaXB0
aW9uKCk7CisgICAgZGVzYy0+c2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7CisgICAgZGVzYy0+c2V0
U3BlY2lmaWVkU2l6ZSgxNCk7CisgICAgZGVzYy0+c2V0Q29tcHV0ZWRTaXplKDE0KTsKKyAgICBu
ZXdTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKCpkZXNjKTsKKyAgICBuZXdTdHlsZS0+Zm9udCgp
LnVwZGF0ZShuZXdTdHlsZS0+Zm9udCgpLmZvbnRTZWxlY3RvcigpKTsKKyAgICBuZXdTdHlsZS0+
c2V0TGluZUhlaWdodChMZW5ndGgoMTIsIEZpeGVkKSk7CisgICAgbmV3U3R5bGUtPnNldFZlcnRp
Y2FsQWxpZ24oVE9QKTsKKyAgICAKKyAgICBpZiAoc2l6ZSA+IDApCisgICAgICAgIG5ld1N0eWxl
LT5zZXRNYXhIZWlnaHQoTGVuZ3RoKHNpemUsIEZpeGVkKSk7CisgICAgICAgIAorICAgIG5ld1N0
eWxlLT5zZXRPdmVyZmxvd1koT0hJRERFTik7CisgICAgbmV3U3R5bGUtPnNldE92ZXJmbG93WChP
SElEREVOKTsKKyAgICBpZiAodG9wUmVsYXRpdmUpIHsKKyAgICAgICAgbmV3U3R5bGUtPnNldFRv
cChMZW5ndGgodG9wUmVsYXRpdmUsIEZpeGVkKSk7CisgICAgICAgIG5ld1N0eWxlLT5zZXRQb3Np
dGlvbihSZWxhdGl2ZVBvc2l0aW9uKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG5ld1N0eWxl
OworfQorCitSZW5kZXJCbG9jayogUmVuZGVyTWF0aE1MT3BlcmF0b3I6Om1ha2VHbHlwaChVQ2hh
ciBnbHlwaCwgaW50IHNpemUsIGludCBjaGFyUmVsYXRpdmUsIGludCB0b3BSZWxhdGl2ZSkKK3sK
KyAgICBSZW5kZXJCbG9jayogY29udGFpbmVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJC
bG9jayhkb2N1bWVudCgpKTsKKyAgICBjb250YWluZXItPnNldFN0eWxlKG1ha2VTdGFja2FibGVT
dHlsZShzaXplLCB0b3BSZWxhdGl2ZSkucmVsZWFzZSgpKTsKKyAgICBhZGRDaGlsZChjb250YWlu
ZXIpOworICAgIFJlbmRlckJsb2NrKiBwYXJlbnQgPSBjb250YWluZXI7CisgICAgaWYgKGNoYXJS
ZWxhdGl2ZSkgeworICAgICAgICBSZW5kZXJCbG9jayogY2hhckJsb2NrID0gbmV3IChyZW5kZXJB
cmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFJlbmRlclN0
eWxlPiBjaGFyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGNoYXJTdHls
ZS0+aW5oZXJpdEZyb20oY29udGFpbmVyLT5zdHlsZSgpKTsKKyAgICAgICAgY2hhclN0eWxlLT5z
ZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAgIGNoYXJTdHlsZS0+c2V0VG9wKExlbmd0
aChjaGFyUmVsYXRpdmUsIEZpeGVkKSk7CisgICAgICAgIGNoYXJTdHlsZS0+c2V0UG9zaXRpb24o
UmVsYXRpdmVQb3NpdGlvbik7CisgICAgICAgIGNoYXJCbG9jay0+c2V0U3R5bGUoY2hhclN0eWxl
KTsKKyAgICAgICAgcGFyZW50LT5hZGRDaGlsZChjaGFyQmxvY2spOworICAgICAgICBwYXJlbnQg
PSBjaGFyQmxvY2s7CisgICAgfQorICAgICAKKyAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gbmV3IChy
ZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0KGRvY3VtZW50KCksIFN0cmluZ0ltcGw6OmNyZWF0ZSgm
Z2x5cGgsIDEpKTsKKyAgICB0ZXh0LT5zZXRTdHlsZShjb250YWluZXItPnN0eWxlKCkpOworICAg
IHBhcmVudC0+YWRkQ2hpbGQodGV4dCk7CisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKworaW50
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpiYXNlbGluZVBvc2l0aW9uKGJvb2wgLCBib29sKSBjb25z
dAoreworICAgIHJldHVybiBvZmZzZXRIZWlnaHQoKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6
IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxv
d3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBSZW5kZXJNYXRoTUxPcGVyYXRvcl9oCisjZGVmaW5lIFJlbmRlck1hdGhNTE9wZXJhdG9y
X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBSZW5kZXJNYXRoTUxPcGVyYXRv
ciA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyTWF0aE1M
T3BlcmF0b3IoTm9kZSogY29udGFpbmVyKTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihOb2Rl
KiBjb250YWluZXIsIFVDaGFyIG9wZXJhdG9yQ2hhcik7CisgICAgdmlydHVhbCB2b2lkIHNldFN0
eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJN
YXRoTUxPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3RyZXRjaFRvSGVpZ2h0KGludCBwaXhlbEhlaWdodCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7IAorICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChSZW5kZXJP
YmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9z
aXRpb24oYm9vbCAsIGJvb2wpIGNvbnN0OyAgICAKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gbWFrZVN0YWNrYWJsZVN0eWxlKGludCBzaXplLCBpbnQgdG9wUmVs
YXRpdmUpOworICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIG1ha2VHbHlwaChVQ2hhciBnbHlwaCwg
aW50IHNpemUgPSAwLCBpbnQgY2hhclJlbGF0aXZlID0gMCwgaW50IHRvcFJlbGF0aXZlID0gMCk7
CisgICAgCitwcml2YXRlOgorICAgIGludCBtX3N0cmV0Y2hIZWlnaHQ7CisgICAgVUNoYXIgbV9v
cGVyYXRvcjsKK307CisKK2lubGluZSBSZW5kZXJNYXRoTUxPcGVyYXRvciogdG9SZW5kZXJNYXRo
TUxPcGVyYXRvcihSZW5kZXJNYXRoTUxCbG9jayogYmxvY2spCit7IAorICAgIEFTU0VSVCghYmxv
Y2sgfHwgYmxvY2stPmlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFJlbmRlck1hdGhNTE9wZXJhdG9yKj4oYmxvY2spOworfQorCitpbmxpbmUgY29uc3Qg
UmVuZGVyTWF0aE1MT3BlcmF0b3IqIHRvUmVuZGVyTWF0aE1MT3BlcmF0b3IoY29uc3QgUmVuZGVy
TWF0aE1MQmxvY2sqIGJsb2NrKQoreyAKKyAgICBBU1NFUlQoIWJsb2NrIHx8IGJsb2NrLT5pc1Jl
bmRlck1hdGhNTE9wZXJhdG9yKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5k
ZXJNYXRoTUxPcGVyYXRvcio+KGJsb2NrKTsKK30KKyAgICAKK30KKworCisjZW5kaWYgLy8gRU5B
QkxFKE1BVEhNTCkKKyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxPcGVyYXRvcl9oCkluZGV4OiBXZWJD
b3JlL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1s
L1JlbmRlck1hdGhNTFJvb3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSku
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MUm9v
dC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTWF0aE1MTmFt
ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhN
TE5hbWVzOworCitjb25zdCBpbnQgcmFkaWNhbEJhc2VQYWQgPSAzOworCitSZW5kZXJNYXRoTUxS
b290OjpSZW5kZXJNYXRoTUxSb290KE5vZGUgKmV4cHJlc3Npb24pIAorOiBSZW5kZXJNYXRoTUxC
bG9jayhleHByZXNzaW9uKSAKK3sKK30KKwordm9pZCBSZW5kZXJNYXRoTUxSb290OjphZGRDaGls
ZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqICkKK3sKKyAgICBpZiAoaXNFbXB0
eSgpKSB7CisgICAgICAgIC8vIEFkZCBhIGJsb2NrIGZvciB0aGUgaW5kZXgKKyAgICAgICAgUmVu
ZGVyQmxvY2sqIGJsb2NrID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVu
dCgpKTsKKyAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBpbmRleFN0eWxlID0gbWFrZUJsb2Nr
U3R5bGUoKTsKKyAgICAgICAgaW5kZXhTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOwor
ICAgICAgICBpbmRleFN0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKFRPUCk7CisgICAgICAgIGJsb2Nr
LT5zZXRTdHlsZShpbmRleFN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlbmRlckJsb2NrOjph
ZGRDaGlsZChibG9jayk7CisgICAgICAgIAorICAgICAgICAvLyB0aGlzIGlzIHRoZSBiYXNlLCBz
byB3cmFwIGl0IHNvIHdlIGNhbiBwYWQgaXQKKyAgICAgICAgYmxvY2sgPSBuZXcgKHJlbmRlckFy
ZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IGJhc2VTdHlsZSA9IG1ha2VCbG9ja1N0eWxlKCk7CisgICAgICAgIGJhc2VTdHlsZS0+c2V0
RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgICAgICBiYXNlU3R5bGUtPnNldFBhZGRpbmdMZWZ0
KExlbmd0aCgwLjUgKiAwLjc1ICwgUGVyY2VudCkpOworICAgICAgICBibG9jay0+c2V0U3R5bGUo
YmFzZVN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChibG9j
ayk7CisgICAgICAgIGJsb2NrLT5hZGRDaGlsZChjaGlsZCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgLy8gYWx3YXlzIGFkZCB0byB0aGUgaW5kZXgKKyAgICAgICAgZmlyc3RDaGlsZCgpLT5hZGRD
aGlsZChjaGlsZCk7CisgICAgfQorfQordm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWludChQYWlu
dEluZm8mIGluZm8sIGludCB0eCwgaW50IHR5KQoreworICAgIFJlbmRlck1hdGhNTEJsb2NrOjpw
YWludChpbmZvICwgdHggLCB0eSk7CisgICAgCisgICAgaW50IG1heEhlaWdodCA9IHRvUmVuZGVy
Qm94TW9kZWxPYmplY3QobGFzdENoaWxkKCkpLT5vZmZzZXRIZWlnaHQoKTsKKyAgICBpZiAoIW1h
eEhlaWdodCkgeworICAgICAgICAvLyBkZWZhdWx0IHRvIHRoZSBmb250IHNpemUgaW4gcGl4ZWxz
IGlmIHdlJ3JlIGVtcHR5CisgICAgICAgIG1heEhlaWdodCA9IHN0eWxlKCktPmZvbnRTaXplKCk7
CisgICAgfQorICAgIGludCB3aWR0aCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobGFzdENoaWxk
KCkpLT5vZmZzZXRXaWR0aCgpOworICAgIAorICAgIGludCBpbmRleFdpZHRoID0gMDsKKyAgICBS
ZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7CisgICAgd2hpbGUgKGN1cnJlbnQg
IT0gbGFzdENoaWxkKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3Qo
KSkgeworICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3QoY3VycmVudCk7CisgICAgICAgICAgICBpbmRleFdpZHRoICs9IGJveC0+b2Zm
c2V0V2lkdGgoKTsKKyAgICAgICAgfQorICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNp
YmxpbmcoKTsKKyAgICB9CisgICAgCisgICAgaW50IHN0YXJ0ID0gdHggKyBpbmRleFdpZHRoK3Jh
ZGljYWxCYXNlUGFkOworICAgIEludFBvaW50IHRvcFN0YXJ0KHN0YXJ0ICwgdHkpOworICAgIElu
dFBvaW50IGJvdHRvbUxlZnQoc3RhdGljX2Nhc3Q8aW50PihzdGFydCAtIDAuNSAqIDAuNzUgKiBz
dHlsZSgpLT5mb250U2l6ZSgpKSAsIHR5ICsgbWF4SGVpZ2h0ICsgcmFkaWNhbEJhc2VQYWQpOwor
ICAgIEludFBvaW50IHRvcExlZnQoc3RhdGljX2Nhc3Q8aW50PihzdGFydCAtIDAuOCAqIDAuNzUg
KiBzdHlsZSgpLT5mb250U2l6ZSgpKSAsIHN0YXRpY19jYXN0PGludD4odHkgKyBtYXhIZWlnaHQg
LyAxLjYpKTsKKyAgICBJbnRQb2ludCBsZWZ0RW5kKHN0YXRpY19jYXN0PGludD4oc3RhcnQgLSAw
Ljc1ICogc3R5bGUoKS0+Zm9udFNpemUoKSkgLCBzdGF0aWNfY2FzdDxpbnQ+KHR5ICsgbWF4SGVp
Z2h0IC8gMS42KSk7CisgICAgCisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Mo
MS4wZik7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Cisg
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZSgpLT5jb2xvcigpLCBzUkdCQ29s
b3JTcGFjZSk7CisgICAgCisgICAgLy8gZHJhdyB0b3AKKyAgICBpbmZvLmNvbnRleHQtPmRyYXdM
aW5lKHRvcFN0YXJ0ICwgSW50UG9pbnQodG9wU3RhcnQueCgpICsgd2lkdGggLCB0eSkpOworICAg
IC8vIGRyYXcgZnJvbSB0b3AgbGVmdCBjb3JuZXIgdG8gYm90dG9tIHBvaW50IG9mIHJhZGljYWwK
KyAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKHRvcFN0YXJ0ICwgYm90dG9tTGVmdCk7CisgICAg
Ly8gZHJhdyBmcm9tIGJvdHRvbSBwb2ludCB0byB0b3Agb2YgbGVmdCBwYXJ0IG9mIHJhZGljYWwg
YmFzZSAicG9ja2V0IgorICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYm90dG9tTGVmdCAsIHRv
cExlZnQpOworICAgIC8vIGRyYXcgdG8gZW5kCisgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZSh0
b3BMZWZ0ICwgbGVmdEVuZCk7CisgICAgCit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRI
TUwpCisKKwpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1p
bG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFJlbmRlck1hdGhNTFJvb3RfaAorI2RlZmluZSBSZW5kZXJNYXRoTUxSb290X2gKKwor
I2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBSZW5kZXJNYXRoTUxSb290IDogcHVibGlj
IFJlbmRlck1hdGhNTEJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNYXRoTUxSb290KE5vZGUq
IGZyYWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8g
RU5BQkxFKE1BVEhNTCkKKworI2VuZGlmIC8vIFJlbmRlck1hdGhNTFJvb3RfaApJbmRleDogV2Vi
Q29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwv
UmVuZGVyTWF0aE1MUm93LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvdy5o
IgorCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxPcGVy
YXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxO
YW1lczsKKworUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coTm9kZSogcm93KQorICAg
IDogUmVuZGVyTWF0aE1MQmxvY2socm93KQoreworfQorCit2b2lkIFJlbmRlck1hdGhNTFJvdzo6
c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCit7CisgICAgLy8gY2xvbmUg
dGhlIHN0eWxlIHNvIHRoYXQgd2UgY2FuIGFkanVzdCB0aGUgaGVpZ2h0IGxhdGVyCisgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiB1c2VTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZS5nZXQo
KSk7CisgICAgCisgICAgLy8gbWFrZSBzdXJlIHdlIGFsd2F5cyBoYXZlIGFuIGlubGluZS1ibG9j
aworICAgIHVzZVN0eWxlLT5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgCisgICAgLy8g
cGFzcyB0aGUgbmV3IHN0eWxlIHRvIHRoZSBibG9jaworICAgIFJlbmRlckJsb2NrOjpzZXRTdHls
ZSh1c2VTdHlsZSk7Cit9CisKK2ludCBSZW5kZXJNYXRoTUxSb3c6Om5vbk9wZXJhdG9ySGVpZ2h0
KCkgY29uc3QKK3sKKyAgICBpbnQgbWF4SGVpZ2h0ID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIGN1
cnJlbnQgPSBmaXJzdENoaWxkKCk7CisgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgaWYg
KGN1cnJlbnQtPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkgeworICAgICAgICAgICAgUmVuZGVyTWF0
aE1MQmxvY2sqIGJsb2NrID0gdG9SZW5kZXJNYXRoTUxCbG9jayhjdXJyZW50KTsKKyAgICAgICAg
ICAgIGludCBibG9ja0hlaWdodCA9IGJsb2NrLT5ub25PcGVyYXRvckhlaWdodCgpOworICAgICAg
ICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgYm94IGhhcyBhIGxhcmdlciBoZWlnaHQKKyAg
ICAgICAgICAgIGlmIChibG9ja0hlaWdodCA+IG1heEhlaWdodCkKKyAgICAgICAgICAgICAgICBt
YXhIZWlnaHQgPSBibG9ja0hlaWdodDsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50LT5pc0Jv
eE1vZGVsT2JqZWN0KCkpIHsKKworICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJv
eCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3VycmVudCk7CisKKyAgICAgICAgICAgIC8vIENo
ZWNrIHRvIHNlZSBpZiB0aGlzIGJveCBoYXMgYSBsYXJnZXIgaGVpZ2h0CisgICAgICAgICAgICBp
ZiAoYm94LT5vZmZzZXRIZWlnaHQoKSA+IG1heEhlaWdodCkKKyAgICAgICAgICAgICAgICBtYXhI
ZWlnaHQgPSBib3gtPm9mZnNldEhlaWdodCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICB9
CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpOworICAgIH0KKyAgICBy
ZXR1cm4gbWF4SGVpZ2h0OworfQorCisKKwordm9pZCBSZW5kZXJNYXRoTUxSb3c6OmxheW91dCgp
IAoreworICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKyAgICAKKyAgICAvLyBjYWxjdWxhdGUg
dGhlIG1heGltdW0gaGVpZ2h0CisgICAgaW50IG1heEhlaWdodCA9IG5vbk9wZXJhdG9ySGVpZ2h0
KCk7CisgICAgc3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChtYXhIZWlnaHQsIEZpeGVkKSk7CisK
KyAgICBpbnQgd2lkdGggPSAwOworICAgIAorICAgIC8vIG5vdGlmeSBjb250YWluZWQgb3BlcmF0
b3JzIHRoZXkgbWF5IG5lZWQgdG8gcmVsYXlvdXQgdGhlaXIgc3RyZXRjaGVkIG9wZXJhdG9ycwor
ICAgIC8vIGFuZCBjYWxjdWFsdGUgdGhlIHdpZHRoCisgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50
ID0gZmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIGlmIChjdXJy
ZW50LT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpIHsKKyAgICAgICAgICAgIFJlbmRlck1hdGhNTEJs
b2NrKiBibG9jayA9IHRvUmVuZGVyTWF0aE1MQmxvY2soY3VycmVudCk7CisgICAgICAgICAgICBi
bG9jay0+c3RyZXRjaFRvSGVpZ2h0KG1heEhlaWdodCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkgeworCisgICAgICAgICAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyZW50KTsKKyAgICAg
ICAgICAgIHdpZHRoICs9IGJveC0+b2Zmc2V0V2lkdGgoKTsKKyAgICAgICAgfQorICAgICAgICBj
dXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAgCisgICAgLy8gaW5j
cmVtZW50IHRoZSB3aWR0aCBzbGlnaHQgc28gYWxsIGZsb3dzIG5pY2VseQorICAgIHdpZHRoKys7
CisgICAgc3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOworICAgIHNldE5l
ZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgIG1hcmtDb250YWluaW5nQmxvY2tz
Rm9yTGF5b3V0KCk7CisgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworCisgICAgLy8gbWFrZSBh
IHNlY29uZCBwYXNzIHdpdGggdGhlIHJlYWwgaGVpZ2h0IG9mIHRoZSBvcGVyYXRvcnMKKyAgICBj
dXJyZW50ID0gZmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIGlm
IChjdXJyZW50LT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpIHsKKyAgICAgICAgICAgIFJlbmRlck1h
dGhNTEJsb2NrKiBibG9jayA9IHRvUmVuZGVyTWF0aE1MQmxvY2soY3VycmVudCk7CisgICAgICAg
ICAgICBpZiAoIWJsb2NrLT5oYXNCYXNlKCkgJiYgIWJsb2NrLT5pc1JlbmRlck1hdGhNTE9wZXJh
dG9yKCkgJiYgY3VycmVudC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CisKKyAgICAgICAgICAgICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJy
ZW50KTsKKworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGJveCBoYXMg
YSBsYXJnZXIgaGVpZ2h0CisgICAgICAgICAgICAgICAgaWYgKGJveC0+b2Zmc2V0SGVpZ2h0KCkg
PiBtYXhIZWlnaHQpCisgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGJveC0+b2Zmc2V0
SGVpZ2h0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC0+aXNC
b3hNb2RlbE9iamVjdCgpKSB7CisKKyAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBi
b3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnJlbnQpOworCisgICAgICAgICAgICAvLyBD
aGVjayB0byBzZWUgaWYgdGhpcyBib3ggaGFzIGEgbGFyZ2VyIGhlaWdodAorICAgICAgICAgICAg
aWYgKGJveC0+b2Zmc2V0SGVpZ2h0KCkgPiBtYXhIZWlnaHQpCisgICAgICAgICAgICAgICAgbWF4
SGVpZ2h0ID0gYm94LT5vZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
fQorICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAg
CisgICAgaW50IHN0cmV0Y2hIZWlnaHQgPSBtYXhIZWlnaHQ7CisgICAgCisgICAgLy8gc3RyZXRj
aCB0aGUgb3BlcmF0b3JzIGFnYWluIGFuZCByZWNhbGN1bGF0ZSB0aGUgd2lkdGgKKyAgICAvLyBh
bHNvLCBjYWxjdWxhdGUgdGhlIHJvdyBoZWlnaHQgbWF4aW11bQorICAgIHdpZHRoID0gMDsKKyAg
ICBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAg
IGlmIChjdXJyZW50LT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpIHsKKyAgICAgICAgICAgIFJlbmRl
ck1hdGhNTEJsb2NrKiBibG9jayA9IHRvUmVuZGVyTWF0aE1MQmxvY2soY3VycmVudCk7CisgICAg
ICAgICAgICBpZiAoYmxvY2stPmlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSkgeworICAgICAgICAg
ICAgICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBtYXRob3AgPSB0b1JlbmRlck1hdGhNTE9wZXJh
dG9yKGJsb2NrKTsKKyAgICAgICAgICAgICAgICBtYXRob3AtPnN0cmV0Y2hUb0hlaWdodChzdHJl
dGNoSGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYmxvY2st
PnN0cmV0Y2hUb0hlaWdodChzdHJldGNoSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChjdXJyZW50KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBDaGVj
ayB0byBzZWUgaWYgdGhpcyBib3ggaGFzIGEgbGFyZ2VyIGhlaWdodAorICAgICAgICAgICAgICAg
IGlmIChib3gtPm9mZnNldEhlaWdodCgpID4gbWF4SGVpZ2h0KQorICAgICAgICAgICAgICAgICAg
ICBtYXhIZWlnaHQgPSBib3gtPm9mZnNldEhlaWdodCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkgeworCisgICAgICAgICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJy
ZW50KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgYm94IGhhcyBhIGxh
cmdlciBoZWlnaHQKKyAgICAgICAgICAgIGlmIChib3gtPm9mZnNldEhlaWdodCgpID4gbWF4SGVp
Z2h0KQorICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGJveC0+b2Zmc2V0SGVpZ2h0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkgeworCisg
ICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChjdXJyZW50KTsKKyAgICAgICAgICAgIHdpZHRoICs9IGJveC0+b2Zmc2V0V2lkdGgoKTsK
KyAgICAgICAgfQorICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAg
ICB9CisgICAgCisgICAgd2lkdGgrKzsKKyAgICBzdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgod2lk
dGgsIEZpeGVkKSk7CisgICAgCisgICAgc3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChtYXhIZWln
aHQsIEZpeGVkKSk7CisgICAgCisgICAgLy8gRG8gdGhlIGZpbmFsIGxheW91dAorICAgIHNldE5l
ZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgIG1hcmtDb250YWluaW5nQmxvY2tz
Rm9yTGF5b3V0KCk7CisgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworICAgIAorfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJN
YXRoTUxSb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXgg
TWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyTWF0aE1MUm93X2gKKyNkZWZpbmUgUmVuZGVy
TWF0aE1MUm93X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRo
TUxCbG9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBSZW5kZXJNYXRo
TUxSb3cgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgeworcHVibGljOgorICAgIFJlbmRlck1h
dGhNTFJvdyhOb2RlKiBjb250YWluZXIpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPik7ICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhN
TFJvdygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGludCBub25PcGVyYXRv
ckhlaWdodCgpIGNvbnN0OworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsK
K307CisgICAgCit9CisKKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisjZW5kaWYgLy8gUmVu
ZGVyTWF0aE1MUm93X2gKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJv
b3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJv
b3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCIKKwor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsK
KworY29uc3QgaW50IHJhZGljYWxCYXNlUGFkID0gMzsKKyAgICAKK1JlbmRlck1hdGhNTFNxdWFy
ZVJvb3Q6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3QoTm9kZSAqZXhwcmVzc2lvbikgCisgICAgOiBS
ZW5kZXJNYXRoTUxCbG9jayhleHByZXNzaW9uKSAKK3sKK30KKwordm9pZCBSZW5kZXJNYXRoTUxT
cXVhcmVSb290OjpwYWludChQYWludEluZm8mIGluZm8sIGludCB0eCwgaW50IHR5KQoreworICAg
IFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCB0eCwgdHkpOworICAgCisgICAgaW50IG1h
eEhlaWdodCA9IDA7CisgICAgaW50IHdpZHRoID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIGN1cnJl
bnQgPSBmaXJzdENoaWxkKCk7CisgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgaWYgKGN1
cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyZW50
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgYm94
IGhhcyBhIGxhcmdlciBoZWlnaHQKKyAgICAgICAgICAgIGlmIChib3gtPm9mZnNldEhlaWdodCgp
ID4gbWF4SGVpZ2h0KQorICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGJveC0+b2Zmc2V0SGVp
Z2h0KCk7CisgICAgICAgICAgICB3aWR0aCArPSBib3gtPm9mZnNldFdpZHRoKCk7CisgICAgICAg
IH0KKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCk7CisgICAgfQorICAg
IC8vIGRlZmF1bHQgdG8gdGhlIGZvbnQgc2l6ZSBpbiBwaXhlbHMgaWYgd2UncmUgZW1wdHkKKyAg
ICBpZiAoIW1heEhlaWdodCkKKyAgICAgICAgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+Zm9udFNpemUo
KTsKKyAgICAKKyAgICBpbnQgZnJvbnRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oc3R5bGUoKS0+
Zm9udFNpemUoKSAqIDAuNzUpOworICAgIEludFBvaW50IHRvcFN0YXJ0KHR4ICsgZnJvbnRXaWR0
aCAsIHR5KTsKKyAgICBJbnRQb2ludCBib3R0b21MZWZ0KHN0YXRpY19jYXN0PGludD4odHggKyBm
cm9udFdpZHRoICogMC41KSAsIHR5ICsgbWF4SGVpZ2h0ICsgcmFkaWNhbEJhc2VQYWQpOworICAg
IEludFBvaW50IHRvcExlZnQoc3RhdGljX2Nhc3Q8aW50Pih0eCArIGZyb250V2lkdGggKiAwLjIp
ICwgdHkgKyBzdGF0aWNfY2FzdDxpbnQ+KG1heEhlaWdodCAvIDIuMCkpOworICAgIEludFBvaW50
IGxlZnRFbmQodHggLCB0eSArIHN0YXRpY19jYXN0PGludD4obWF4SGVpZ2h0IC8gMi4wKSk7Cisg
ICAgCisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0
LT5zZXRTdHJva2VDb2xvcihzdHlsZSgpLT5jb2xvcigpLCBzUkdCQ29sb3JTcGFjZSk7CisgICAg
CisgICAgLy8gZHJhdyB0b3AKKyAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKHRvcFN0YXJ0ICwg
SW50UG9pbnQodG9wU3RhcnQueCgpICsgd2lkdGggLCB0eSkpOworICAgIC8vIGRyYXcgZnJvbSB0
b3AgbGVmdCBjb3JuZXIgdG8gYm90dG9tIHBvaW50IG9mIHJhZGljYWwKKyAgICBpbmZvLmNvbnRl
eHQtPmRyYXdMaW5lKHRvcFN0YXJ0ICwgYm90dG9tTGVmdCk7CisgICAgLy8gZHJhdyBmcm9tIGJv
dHRvbSBwb2ludCB0byB0b3Agb2YgbGVmdCBwYXJ0IG9mIHJhZGljYWwgYmFzZSAicG9ja2V0Igor
ICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYm90dG9tTGVmdCAsIHRvcExlZnQpOworICAgIC8v
IGRyYXcgdG8gZW5kCisgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZSh0b3BMZWZ0ICwgbGVmdEVu
ZCk7CisgICAgCit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisKKyAgICAgICAg
CkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dz
a2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisgCisjaWZuZGVmIFJlbmRlck1hdGhNTFNxdWFyZVJvb3RfaAorI2RlZmluZSBSZW5k
ZXJNYXRoTUxTcXVhcmVSb290X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJS
ZW5kZXJNYXRoTUxCbG9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBS
ZW5kZXJNYXRoTUxTcXVhcmVSb290IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK3B1Ymxp
YzoKKyAgICBSZW5kZXJNYXRoTUxTcXVhcmVSb290KE5vZGUqIGZyYWN0aW9uKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworfTsKKyAgICAKK30K
KworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisKKyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxTcXVh
cmVSb290X2gKKworCisKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFs
ZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRI
TUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxTdWJTdXAuaCIKKworI2luY2x1ZGUgIkZvbnRT
ZWxlY3Rvci5oIgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVySW5s
aW5lLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNl
bGwuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxl
U2VjdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitzdGF0aWMgY29uc3QgaW50
IHRvcEFkanVzdERpdmlzb3IgPSAzOworc3RhdGljIGNvbnN0IGludCBzdWJzdXBTY3JpcHRNYXJn
aW4gPSAxOworCisgICAgCitSZW5kZXJNYXRoTUxTdWJTdXA6OlJlbmRlck1hdGhNTFN1YlN1cChO
b2RlICpzdWJzdXApIAorICAgIDogUmVuZGVyTWF0aE1MQmxvY2soc3Vic3VwKQorICAgICwgbV9z
Y3JpcHRzKDApCit7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihzdWJzdXApOworICAgIC8vIERldGVybWluZSB3aGF0IGtpbmQgb2YgdW5kZXIvb3ZlciBleHBy
ZXNzaW9uIHdlIGhhdmUgYnkgZWxlbWVudCBuYW1lCisgICAgbV9raW5kID0gU3ViU3VwOworICAg
IGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1zdWJUYWcpKQorICAgICAg
ICBtX2tpbmQgPSBTdWI7CisgICAgZWxzZSBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKE1hdGhN
TE5hbWVzOjptc3VwVGFnKSkKKyAgICAgICAgbV9raW5kID0gU3VwOworfQorCit2b2lkIFJlbmRl
ck1hdGhNTFN1YlN1cDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0
KiBiZWZvcmVDaGlsZCkKK3sKKyAgICBpZiAoZmlyc3RDaGlsZCgpKSB7CisgICAgICAgIC8vIHdl
IGFscmVhZHkgaGF2ZSBhIGJhc2UsIHNvIHRoaXMgaXMgdGhlIHN1cGVyL3N1YnNjcmlwdHMKKyAg
ICAgICAgCisgICAgICAgIGlmIChtX2tpbmQgPT0gU3ViU3VwKSB7CisgICAgICAgICAgICBpZiAo
IW1fc2NyaXB0cykgeworICAgICAgICAgICAgICAgIG1fc2NyaXB0cyA9IG5ldyAocmVuZGVyQXJl
bmEoKSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJl
bmRlclN0eWxlPiBzY3JpcHRzU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICAgICAgc2NyaXB0c1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICAgICAgICAg
ICAgICBzY3JpcHRzU3R5bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKKyAgICAgICAgICAg
ICAgICBzY3JpcHRzU3R5bGUtPnNldExpbmVIZWlnaHQoTGVuZ3RoKDEuMCwgUGVyY2VudCkpOwor
ICAgICAgICAgICAgICAgIHNjcmlwdHNTdHlsZS0+c2V0VmVydGljYWxBbGlnbihNSURETEUpOwor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBpbiBlbXMKKyAgICAgICAg
ICAgICAgICBzY3JpcHRzU3R5bGUtPnNldE1hcmdpbkxlZnQoTGVuZ3RoKHN1YnN1cFNjcmlwdE1h
cmdpbiwgRml4ZWQpKTsKKyAgICAgICAgICAgICAgICBzY3JpcHRzU3R5bGUtPnNldFRleHRBbGln
bihMRUZUKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdHMtPnNldFN0eWxlKHNjcmlwdHNTdHls
ZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrOjphZGRDaGls
ZChtX3NjcmlwdHMsIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgUmVuZGVyQmxvY2sqIHNjcmlwdCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVu
ZGVyQmxvY2soZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHNj
cmlwdFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICAgICAgc2NyaXB0U3R5
bGUtPmluaGVyaXRGcm9tKG1fc2NyaXB0cy0+c3R5bGUoKSk7CisgICAgICAgICAgICBzY3JpcHRT
dHlsZS0+c2V0RGlzcGxheShCTE9DSyk7CisgICAgICAgICAgICBzY3JpcHQtPnNldFN0eWxlKHNj
cmlwdFN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fc2NyaXB0
cy0+YWRkQ2hpbGQoc2NyaXB0LCBtX3NjcmlwdHMtPmZpcnN0Q2hpbGQoKSk7CisgICAgICAgICAg
ICBzY3JpcHQtPmFkZENoaWxkKGNoaWxkKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBS
ZW5kZXJNYXRoTUxCbG9jazo6YWRkQ2hpbGQoY2hpbGQsIGJlZm9yZUNoaWxkKTsKKyAgICAgICAg
CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sqIHdyYXBwZXIgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50KCkpOworICAgICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IHdyYXBwZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsK
KyAgICAgICAgd3JhcHBlclN0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICAgICAgd3Jh
cHBlclN0eWxlLT5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAgIHdyYXBwZXJTdHls
ZS0+c2V0TGluZUhlaWdodChMZW5ndGgoMS4wLCBQZXJjZW50KSk7CisgICAgICAgIHdyYXBwZXIt
PnNldFN0eWxlKHdyYXBwZXJTdHlsZS5yZWxlYXNlKCkpOworICAgICAgICBSZW5kZXJNYXRoTUxC
bG9jazo6YWRkQ2hpbGQod3JhcHBlciwgYmVmb3JlQ2hpbGQpOworICAgICAgICBSZW5kZXJNYXRo
TUxCbG9jayogYmFzZVdyYXBwZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTEJs
b2NrKGRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJhc2VXcmFwcGVy
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGJhc2VXcmFwcGVyU3R5bGUt
PmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgICAgICBiYXNlV3JhcHBlclN0eWxlLT5zZXREaXNw
bGF5KEJMT0NLKTsKKyAgICAgICAgYmFzZVdyYXBwZXJTdHlsZS0+c2V0VmVydGljYWxBbGlnbihN
SURETEUpOworICAgICAgICBiYXNlV3JhcHBlci0+c2V0U3R5bGUoYmFzZVdyYXBwZXJTdHlsZS5y
ZWxlYXNlKCkpOworICAgICAgICB3cmFwcGVyLT5hZGRDaGlsZChiYXNlV3JhcHBlcik7CisgICAg
ICAgIGJhc2VXcmFwcGVyLT5hZGRDaGlsZChjaGlsZCk7CisgICAgfQorfQorCit2b2lkICBSZW5k
ZXJNYXRoTUxTdWJTdXA6OnN0cmV0Y2hUb0hlaWdodChpbnQgaGVpZ2h0KQoreworICAgIFJlbmRl
ck9iamVjdCogYmFzZSA9IGZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBpZiAoYmFzZS0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKSB7CisgICAg
ICAgIFJlbmRlck1hdGhNTEJsb2NrKiBibG9jayA9IHRvUmVuZGVyTWF0aE1MQmxvY2soYmFzZSk7
CisgICAgICAgIGJsb2NrLT5zdHJldGNoVG9IZWlnaHQoaGVpZ2h0KTsKKyAgICB9CisgICAgaWYg
KGhlaWdodCA+IDAgJiYgbV9raW5kID09IFN1YlN1cCAmJiBtX3NjcmlwdHMpIHsKKyAgICAKKyAg
ICAgICAgUmVuZGVyT2JqZWN0KiBzY3JpcHQgPSBtX3NjcmlwdHMtPmZpcnN0Q2hpbGQoKTsKKyAg
ICAgICAgaWYgKHNjcmlwdCkgeworICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBzY3JpcHQg
aGVpZ2h0IHdpdGhvdXQgdGhlIGNvbnRhaW5lciBtYXJnaW5zCisgICAgICAgICAgICBpbnQgdG9w
SGVpZ2h0ID0gMDsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogdG9wID0gc2NyaXB0OworICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHRvcC0+Zmlyc3RDaGlsZCgpOworICAgICAg
ICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAg
ICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVj
dChjaGlsZCk7CisgICAgICAgICAgICAgICAgdG9wSGVpZ2h0ID0gYm94LT5vZmZzZXRIZWlnaHQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBib3R0b21IZWlnaHQgPSAwOworICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0KiBib3R0b20gPSBzY3JpcHQ7CisgICAgICAgICAgICBjaGls
ZCA9IGJvdHRvbS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxk
LT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjaGlsZCk7CisgICAgICAgICAgICAg
ICAgYm90dG9tSGVpZ2h0ID0gYm94LT5vZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaW50IHRvcEFkanVzdCA9IHRvcEhlaWdodCAvIHRvcEFk
anVzdERpdmlzb3I7CisgICAgICAgICAgICB0b3AtPnN0eWxlKCktPnNldE1hcmdpblRvcChMZW5n
dGgoLXRvcEFkanVzdCwgRml4ZWQpKTsKKyAgICAgICAgICAgIHRvcC0+c3R5bGUoKS0+c2V0TWFy
Z2luQm90dG9tKExlbmd0aChoZWlnaHQgLSB0b3BIZWlnaHQgKyB0b3BBZGp1c3QsIEZpeGVkKSk7
CisgICAgICAgICAgICBpZiAodG9wLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgICAg
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogdG9wQm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVj
dCh0b3ApOworICAgICAgICAgICAgICAgIHRvcEJveC0+dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
eWxlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3NjcmlwdHMtPnNldE5lZWRzTGF5
b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgICAgICAgICAgbV9zY3JpcHRzLT5tYXJrQ29u
dGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOworICAgICAgICB9CisgICAgfQorICAgIHVwZGF0ZUJv
eE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1Jl
Y2FsYygpOworICAgIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7Cit9CisKK2ludCBS
ZW5kZXJNYXRoTUxTdWJTdXA6Om5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3QgCit7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1MU3ViU3VwOjpsYXlvdXQoKSAKK3sKKworICAg
IFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKyAgICAKKyAgICBpZiAobV9raW5kID09IFN1YlN1cCkg
eworICAgICAgICBpbnQgd2lkdGggPSAwOworICAgICAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnQg
PSBmaXJzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgICAgICBp
ZiAoY3VycmVudC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CisKKyAgICAgICAgICAgICAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyZW50KTsK
KyAgICAgICAgICAgICAgICB3aWR0aCArPSBib3gtPm9mZnNldFdpZHRoKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAgICAg
ICAgfQorICAgICAgICB3aWR0aCsrOworICAgICAgICAvLyAxICsgbWFyZ2luIG9mIHNjcmlwdHMK
KyAgICAgICAgaWYgKG1fc2NyaXB0cykgCisgICAgICAgICAgICB3aWR0aCArPSBzdWJzdXBTY3Jp
cHRNYXJnaW47CisgICAgICAgIHN0eWxlKCktPnNldFdpZHRoKExlbmd0aCh3aWR0aCwgRml4ZWQp
KTsKKworICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICAg
ICAgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsKKyAgICAgICAgUmVuZGVyQmxvY2s6
OmxheW91dCgpOworICAgIH0gICAgCit9CisKK2ludCBSZW5kZXJNYXRoTUxTdWJTdXA6OmJhc2Vs
aW5lUG9zaXRpb24oYm9vbCAsIGJvb2wpIGNvbnN0Cit7CisgICAgUmVuZGVyT2JqZWN0KiBiYXNl
ID0gZmlyc3RDaGlsZCgpOworICAgIGlmICghYmFzZSkgCisgICAgICAgIHJldHVybiBvZmZzZXRI
ZWlnaHQoKTsKKyAgICBiYXNlID0gYmFzZS0+Zmlyc3RDaGlsZCgpOworICAgIGJhc2UgPSBiYXNl
LT5maXJzdENoaWxkKCk7CisgICAgCisgICAgaWYgKG1fa2luZCA9PSBTdWJTdXAgJiYgbV9zY3Jp
cHRzKSB7CisgICAgCisgICAgICAgIGludCB0b3BBZGp1c3QgPSAwOworICAgICAgICBSZW5kZXJP
YmplY3QqIHNjcmlwdCA9IG1fc2NyaXB0cy0+Zmlyc3RDaGlsZCgpOworICAgICAgICBpZiAoc2Ny
aXB0KSB7CisgICAgICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIHNjcmlwdCBoZWlnaHQgd2l0aG91
dCB0aGUgY29udGFpbmVyIG1hcmdpbnMKKyAgICAgICAgICAgIGludCB0b3BIZWlnaHQgPSAwOwor
ICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiB0b3AgPSBzY3JpcHQ7CisgICAgICAgICAgICBSZW5k
ZXJPYmplY3QqIGNoaWxkID0gdG9wLT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICBpZiAoY2hp
bGQgJiYgY2hpbGQtPmlzQm94TW9kZWxPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGNoaWxkKTsKKyAg
ICAgICAgICAgICAgICB0b3BIZWlnaHQgPSBib3gtPm9mZnNldEhlaWdodCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgdG9wQWRqdXN0ID0gdG9wSGVpZ2h0IC8gdG9wQWRqdXN0RGl2aXNv
cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdG9wQWRqdXN0ICsgYmFzZS0+YmFzZWxpbmVQ
b3NpdGlvbih0cnVlKSArIDQ7CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICBpbnQgYmFzZWxp
bmUgPSBiYXNlLT5iYXNlbGluZVBvc2l0aW9uKHRydWUpICsgNDsKKyAgICBpZiAobV9raW5kID09
IFN1cCkgeworICAgICAgICAvLyBGSVhNRTogVGhlIGV4dHJhIGFtb3VudCBvZiB0aGUgc3VwZXJz
Y3JpcHQgYXNjZW5kaW5nIGFib3ZlIHRoZSBiYXNlJ3MgYm94CisgICAgICAgIC8vIGlzbid0IHRh
a2VuIGludG8gYWNjb3VudC4gIFRoaXMgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgaW4gYSBtb3JlIHJl
bGlhYmxlCisgICAgICAgIC8vIHdheS4KKyAgICAgICAgUmVuZGVyT2JqZWN0KiBzdXAgPSBiYXNl
LT5uZXh0U2libGluZygpOworICAgICAgICBpZiAoc3VwICYmIHN1cC0+aXNCb3hNb2RlbE9iamVj
dCgpKSB7CisgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJC
b3hNb2RlbE9iamVjdChzdXApOworICAgICAgICAgICAgYmFzZWxpbmUgKz0gc3RhdGljX2Nhc3Q8
aW50Pihib3gtPm9mZnNldEhlaWdodCgpICogMC41KTsKKyAgICAgICAgfQorICAgICAgICBiYXNl
bGluZSsrOworICAgIH0KKyAgICByZXR1cm4gYmFzZWxpbmU7CisgICAgCit9CisgICAgICAgIAor
ICAgIAorfSAgICAKKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCkluZGV4OiBXZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9S
ZW5kZXJNYXRoTUxTdWJTdXAuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRl
ck1hdGhNTFN1YlN1cC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBSZW5kZXJNYXRo
TUxTdWJTdXBfaAorI2RlZmluZSBSZW5kZXJNYXRoTUxTdWJTdXBfaAorCisjaWYgRU5BQkxFKE1B
VEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCisjaW5jbHVkZSAiUmVuZGVy
VGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgUmVuZGVyTWF0aE1M
U3ViU3VwIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJN
YXRoTUxTdWJTdXAoTm9kZSogZnJhY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChS
ZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAg
dmlydHVhbCBib29sIGhhc0Jhc2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBpbnQgbm9uT3BlcmF0b3JIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZXRj
aFRvSGVpZ2h0KGludCBwaXhlbEhlaWdodCk7CisgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3Np
dGlvbihib29sICwgYm9vbCkgY29uc3Q7ICAgIAorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpOworICAgIAorcHJpdmF0ZToKKyAgICBlbnVtIFN1YlN1cFR5cGUgeyBTdWIs
IFN1cCwgU3ViU3VwIH07CisgICAgU3ViU3VwVHlwZSBtX2tpbmQ7CisgICAgUmVuZGVyQmxvY2sq
IG1fc2NyaXB0czsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorCisj
ZW5kaWYgLy8gUmVuZGVyTWF0aE1MU3ViU3VwX2gKKwpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJNYXRoTUxVbmRlck92ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20p
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTFVu
ZGVyT3Zlci5oIgorCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiTWF0aE1M
TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgTWF0aE1M
TmFtZXM7CisgICAgCitzdGF0aWMgY29uc3QgZG91YmxlIHVuZGVyTm9ybWFsQWRqdXN0ID0gLTAu
NDsKK3N0YXRpYyBjb25zdCBkb3VibGUgZm9udEFkanVzdCA9IDAuNzU7CisgICAgCitSZW5kZXJN
YXRoTUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihOb2RlKiBleHByZXNzaW9uKSAK
KyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGV4cHJlc3Npb24pIAoreworICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZXhwcmVzc2lvbik7CisgICAgLy8gRGV0ZXJt
aW5lIHdoYXQga2luZCBvZiB1bmRlci9vdmVyIGV4cHJlc3Npb24gd2UgaGF2ZSBieSBlbGVtZW50
IG5hbWUKKyAgICBtX2tpbmQgPSBVbmRlcjsKKyAgICBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1l
KE1hdGhNTE5hbWVzOjptb3ZlclRhZykpCisgICAgICAgIG1fa2luZCA9IE92ZXI7CisgICAgZWxz
ZSBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptdW5kZXJvdmVyVGFnKSkK
KyAgICAgICAgbV9raW5kID0gVW5kZXJPdmVyOworfQorCit2b2lkIFJlbmRlck1hdGhNTFVuZGVy
T3Zlcjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCkKK3sKKyAgICAKKyAgICBSZW5kZXJCbG9jayogcm93ID0gbmV3IChyZW5kZXJBcmVuYSgp
KSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvd1N0
eWxlID0gbWFrZUJsb2NrU3R5bGUoKTsKKyAgICAKKyAgICAvLyBsb29rIHRocm91Z2ggdGhlIGNo
aWxkcmVuIGZvciByZW5kZXJlZCBlbGVtZW50cworICAgIGludCBibG9ja3MgPSAwOworICAgIFJl
bmRlck9iamVjdCogY3VycmVudCA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAoY3Vy
cmVudCkgeworICAgICAgICBibG9ja3MrKzsKKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5l
eHRTaWJsaW5nKCk7CisgICAgfQorICAgIAorICAgIC8vIGhhbmRsZSB0aGUgc3R5bGUgZm9yIHRo
ZSBvdmVyL3VuZGVyIGJsb2NrcworICAgIGlmICghaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIGNl
bnRlciB0aGUgb3Zlci91bmRlciBvbiB0aGUgYmFzZQorICAgICAgICByb3dTdHlsZS0+c2V0VGV4
dEFsaWduKENFTlRFUik7CisgICAgICAgIC8vIHNldCB0aGUgbGluZSBoZWlnaHQgdG8gdGhlIGZv
bnQgc2l6ZSBhZGp1c3RlZCBkb3duIHNvIHRoZSBtaW5pbXVtIGlzIGJlbG93IHRoZSBmb250IHNp
emUKKyAgICAgICAgcm93U3R5bGUtPnNldExpbmVIZWlnaHQoTGVuZ3RoKHN0YXRpY19jYXN0PGlu
dD4ocm93U3R5bGUtPmZvbnRTaXplKCkgKiBmb250QWRqdXN0KSwgRml4ZWQpKTsKKyAgICAgICAg
Ly8gbWFrZSBzdXJlIHdlIGhhdmUgYXQgbGVhc3QgMXB4IG9mIHNwYWNlCisgICAgICAgIHJvd1N0
eWxlLT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKDEsIEZpeGVkKSk7CisgICAgICAgIHJvd1N0eWxlLT5z
ZXRNYXJnaW5Cb3R0b20oTGVuZ3RoKDEsIEZpeGVkKSk7CisgICAgfSBlbHNlCisgICAgICAgIHJv
d1N0eWxlLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aCgxLCBGaXhlZCkpOworICAgIAorICAgIHJv
dy0+c2V0U3R5bGUocm93U3R5bGUucmVsZWFzZSgpKTsKKyAgICAKKyAgICBzd2l0Y2ggKGJsb2Nr
cykgeworICAgIGNhc2UgMDoKKyAgICAgICAgLy8gdGhpcyBpcyB0aGUgYmFzZSBzbyBqdXN0IGFw
cGVuZCBpdAorICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93LCBiZWZvcmVDaGlsZCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgLy8gdGhlIHVuZGVyIG9yIG92
ZXIKKyAgICAgICAgaWYgKG1fa2luZCA9PSBPdmVyKSB7CisgICAgICAgICAgICAvLyBhZGQgdGhl
IG92ZXIgYXMgZmlyc3QKKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGZp
cnN0Q2hpbGQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBhZGQgdGhlIHVu
ZGVyIGFzIGxhc3QKKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGJlZm9y
ZUNoaWxkKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAg
IC8vIHRoZSB1bmRlciBvciBvdmVyCisgICAgICAgIGlmIChtX2tpbmQgPT0gVW5kZXJPdmVyKSB7
CisgICAgICAgICAgICAvLyBhZGQgdGhlIG92ZXIgYXMgZmlyc3QKKyAgICAgICAgICAgIFJlbmRl
ckJsb2NrOjphZGRDaGlsZChyb3csIGZpcnN0Q2hpbGQoKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyB3ZSByZWFsbHkgc2hvdWxkbid0IGdldCBoZXJlIGFzIG9ubHkgbXVuZGVy
b3ZlciBzaG91bGQgaGF2ZSB0aHJlZSBjaGlsZHJlbgorICAgICAgICAgICAgUmVuZGVyQmxvY2s6
OmFkZENoaWxkKHJvdywgYmVmb3JlQ2hpbGQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIG1zdWJzdXAgc2hvdWxkbid0IGhhdmUgbW9yZSB0aGFu
IHRocmVlIGNoaWxkcmVuLiAgSW4gdGhlb3J5IHdlIHNob3VsZG4ndCAKKyAgICAgICAgLy8gZ2V0
IGhlcmUgaWYgdGhlIE1hdGhNTCBpcyBjb3JyZWN0bHkgZm9ybWVkLCBidXQgdGhhdCBpc24ndCBh
IGd1YXJhbnRlZS4KKyAgICAgICAgLy8gV2Ugd2lsbCB0cmVhdCB0aGlzIGFzIGFub3RoZXIgdW5k
ZXIgZWxlbWVudCBhbmQgdGhleSdsbCBnZXQgc29tZXRoaW5nIGZ1bmt5LgorICAgICAgICBSZW5k
ZXJCbG9jazo6YWRkQ2hpbGQocm93LCBiZWZvcmVDaGlsZCk7CisgICAgfQorICAgIHJvdy0+YWRk
Q2hpbGQoY2hpbGQpOyAgICAKK30KKworaW5saW5lIGludCBnZXRPZmZzZXRIZWlnaHQoUmVuZGVy
T2JqZWN0KiBvYmopIAoreworICAgIGlmIChvYmotPmlzQm94TW9kZWxPYmplY3QoKSkgeworICAg
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChv
YmopOworICAgICAgICByZXR1cm4gYm94LT5vZmZzZXRIZWlnaHQoKTsKKyAgICB9CisgICAKKyAg
ICByZXR1cm4gMDsKK30KKwordm9pZCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmxheW91dCgpIAor
eworCisgICAgUmVuZGVyT2JqZWN0KiB1bmRlciA9IDA7CisgICAgc3dpdGNoIChtX2tpbmQpIHsK
KyAgICBjYXNlIE92ZXI6CisgICAgICAgIC8vIEZJWE1FOiBOb24tZGVzY2VuZGluZyBnbHlwaHMg
aW4gdGhlIG92ZXIgc2hvdWxkIGJlIG1vdmVkIGNsb3NlciB0byB0aGUgYmFzZQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFVuZGVyOgorICAgICAgICAvLyBGSVhNRTogTm9uLWFzY2VuZGluZyBn
bHlwaHMgaW4gdGhlIHVuZGVyIHNob3VsZCBiZSBtb3ZlZCBjbG9zZXIgdG8gdGhlIGJhc2UKKyAg
ICAgICAgCisgICAgICAgIC8vIGFkanVzdCB0aGUgYmFzZSdzIGludHJ1c2lvbiBpbnRvIHRoZSB1
bmRlcgorICAgICAgICB1bmRlciA9IGxhc3RDaGlsZCgpOworICAgICAgICAvLyBGSVhNRTogV2hl
cmUgZG9lcyB0aGUgZXh0cmEgc3BhY2UgY29tZSBmcm9tPworICAgICAgICB1bmRlci0+c3R5bGUo
KS0+c2V0TWFyZ2luVG9wKExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KC0wLjUgKiBnZXRPZmZzZXRI
ZWlnaHQodW5kZXIpKSwgRml4ZWQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmRlck92
ZXI6CisgICAgICAgIC8vIEZJWE1FOiBOb24tZGVzY2VuZGluZyBnbHlwaHMgaW4gdGhlIG92ZXIg
c2hvdWxkIGJlIG1vdmVkIGNsb3NlciB0byB0aGUgYmFzZQorICAgICAgICAvLyBGSVhNRTogTm9u
LWFzY2VuZGluZyBnbHlwaHMgaW4gdGhlIHVuZGVyIHNob3VsZCBiZSBtb3ZlZCBjbG9zZXIgdG8g
dGhlIGJhc2UKKyAgICAgICAgCisgICAgICAgIC8vIGFkanVzdCB0aGUgYmFzZSdzIGludHJ1c2lv
biBpbnRvIHRoZSB1bmRlcgorICAgICAgICB1bmRlciA9IGxhc3RDaGlsZCgpOworICAgICAgICAv
LyBGSVhNRTogV2hlcmUgZG9lcyB0aGUgZXh0cmEgc3BhY2UgY29tZSBmcm9tPworICAgICAgICB1
bmRlci0+c3R5bGUoKS0+c2V0TWFyZ2luVG9wKExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KC0wLjUg
KiBnZXRPZmZzZXRIZWlnaHQodW5kZXIpKSwgRml4ZWQpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKK30KKworaW50IFJlbmRlck1hdGhNTFVuZGVy
T3Zlcjo6YmFzZWxpbmVQb3NpdGlvbihib29sICwgYm9vbCkgY29uc3QKK3sKKyAgICBpbnQgYmFz
ZWxpbmUgPSAwOworICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IDA7CisgICAgc3dpdGNoICht
X2tpbmQpIHsKKyAgICBjYXNlIFVuZGVyT3ZlcjoKKyAgICBjYXNlIE92ZXI6CisgICAgICAgIGN1
cnJlbnQgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIGlmIChjdXJyZW50LT5pc0JveE1vZGVsT2Jq
ZWN0KCkpIHsKKyAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KGN1cnJlbnQpOworICAgICAgICAgICAgYmFzZWxpbmUgKz0gYm94LT5v
ZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgfQorICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4
dFNpYmxpbmcoKTsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmZpcnN0Q2hpbGQoKSAmJiBjdXJyZW50
LT5maXJzdENoaWxkKCktPmlzUmVuZGVyQmxvY2soKSkgeworICAgICAgICAgICBjdXJyZW50ID0g
Y3VycmVudC0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAvLyBGSVhNRTogV2h5IGRvZXMgdGhp
cyBoYXZlIHRvIGJlIHNjYWxlZD8gIFRoZSBvcGVyYXRvciBiYXNlbGluZSBpcyB0aGUgYm90dG9t
CisgICAgICAgICAgIC8vIG9mIHRoZSBib3ggYnV0IHRoYXQgaXNuJ3QgdGhlIGFjdHVhbCBiYXNl
bGluZS4gIFJldHVybmluZyBhbiBvcGVyYXRvciBiYXNlbGluZQorICAgICAgICAgICAvLyBtYWtl
cyB0aGluZ3Mgc2NhbGUgZnVubnkuCisgICAgICAgICAgIGJhc2VsaW5lICs9IHN0YXRpY19jYXN0
PGludD4oMC44NSAqIGN1cnJlbnQtPmJhc2VsaW5lUG9zaXRpb24odHJ1ZSkpICsgMjsKKyAgICAg
ICAgfSBlbHNlIAorICAgICAgICAgICBiYXNlbGluZSArPSBjdXJyZW50LT5iYXNlbGluZVBvc2l0
aW9uKHRydWUpICsgMjsgLy8gYWRkIGluIG1hcmdpbnMKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVbmRlcjoKKyAgICAgICAgY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsKKyAgICAgICAgYmFzZWxp
bmUgKz0gY3VycmVudC0+YmFzZWxpbmVQb3NpdGlvbih0cnVlKTsKKyAgICB9CisgICAgcmV0dXJu
IGJhc2VsaW5lOworfQorCisKK2ludCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6Om5vbk9wZXJhdG9y
SGVpZ2h0KCkgY29uc3QgCit7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworCisjZW5kaWYgLy8g
RU5BQkxFKE1BVEhNTCkKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFJlbmRlck1hdGhNTFVuZGVyT3Zlcl9oCisj
ZGVmaW5lIFJlbmRlck1hdGhNTFVuZGVyT3Zlcl9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisj
aW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAg
IAorY2xhc3MgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2Nr
IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNYXRoTUxVbmRlck92ZXIoTm9kZSogZXhwcmVzc2lvbik7
CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAg
dmlydHVhbCBib29sIGhhc0Jhc2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBpbnQgbm9uT3BlcmF0b3JIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBiYXNlbGlu
ZVBvc2l0aW9uKGJvb2wgLCBib29sKSBjb25zdDsgICAgCitwcml2YXRlOgorICAgIGVudW0gVW5k
ZXJPdmVyVHlwZSB7IFVuZGVyLCBPdmVyLCBVbmRlck92ZXIgfTsKKyAgICBVbmRlck92ZXJUeXBl
IG1fa2luZDsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorCisjZW5k
aWYgLy8gUmVuZGVyTWF0aE1MVW5kZXJPdmVyX2gKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL21hdGhh
dHRycy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9tYXRoYXR0cnMuaW4JKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9tYXRoYXR0cnMuaW4JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTQgQEAKK25hbWVzcGFjZT0iTWF0aE1MIgorbmFtZXNwYWNlVVJJPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIgorZ3VhcmRGYWN0b3J5V2l0aD0iRU5BQkxFKE1BVEhN
TCkiCithdHRyc051bGxOYW1lc3BhY2UKK2V4cG9ydFN0cmluZ3MKKworY2xvc2UKK2Rlbm9tYWxp
Z24KK2xpbmV0aGlja25lc3MKK21hdGhzaXplCitudW1hbGlnbgorb3Blbgorc2VwYXJhdG9ycwor
c3RyZXRjaHkKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCShyZXZpc2lvbiA1MzE2NikKKysrIFdlYkNvcmUv
bWF0aG1sL21hdGh0YWdzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw5ICsxMywxMiBAQCBtdW5k
ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluCiBtdW5kZXJvdmVyIGludGVyZmFj
ZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAogbXNxcnQgaW50ZXJmYWNlTmFtZT1N
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtcm9vdCBpbnRlcmZhY2VOYW1lPU1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQKLW1pIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudCwgY3Jl
YXRlV2l0aE5ldwotbW4gaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVXaXRoTmV3
Ci1tbyBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKLW1zdWIgaW50
ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVXaXRoTmV3Ci1tc3VwIGludGVyZmFjZU5h
bWU9TWF0aE1MRWxlbWVudCwgY3JlYXRlV2l0aE5ldworbWkgaW50ZXJmYWNlTmFtZT1NYXRoTUxU
ZXh0RWxlbWVudAorbW4gaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAorbW8gaW50ZXJm
YWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAorbXRleHQgaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0
RWxlbWVudAorbXJvb3QgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
Cittc3FydCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK21zdWIg
aW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LCBjcmVhdGVXaXRoTmV3
Cittc3VwIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCwgY3JlYXRl
V2l0aE5ldwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNTMxNjYp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgxLDYgKzI4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJbmxpbmUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclBhcnQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclZpZXco
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhP
cGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUnVi
eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUnVieUJhc2Uo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1J1YnlSdW4oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzEzLDYgKzMxNCwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRIYXNDb2x1bW5zKGJvb2wgYiA9IHRydWUpIHsgbV9oYXNDb2x1bW5zID0gYjsgfQog
ICAgIGJvb2wgY2VsbFdpZHRoQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2VsbFdpZHRoQ2hh
bmdlZDsgfQogICAgIHZvaWQgc2V0Q2VsbFdpZHRoQ2hhbmdlZChib29sIGIgPSB0cnVlKSB7IG1f
Y2VsbFdpZHRoQ2hhbmdlZCA9IGI7IH0KKyAgICAKKyNpZiBFTkFCTEUoTUFUSE1MKQorICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTEJsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQogCiAjaWYgRU5BQkxFKFNWRykKICAgICAvLyBGSVhN
RTogVW50aWwgYWxsIFNWRyByZW5kZXJzIGNhbiBiZSBzdWJjbGFzc2VzIG9mIFJlbmRlclNWR01v
ZGVsT2JqZWN0IHdlIGhhdmUKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzMjk1KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMTQg
IEFsZXggTWlsb3dza2kgIDxhbGV4QG1pbG93c2tpLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdHMgZm9yIE1hdGhNTAorCisgICAg
ICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWw6IEFkZGVkLgorICAgICAgICAq
IG1hdGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBt
YXRobWwvcHJlc2VudGF0aW9uL21vLWludGVncmFsLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBt
YXRobWwvcHJlc2VudGF0aW9uL292ZXIueGh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9w
cmVzZW50YXRpb24vcm9vdHMueGh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50
YXRpb24vcm93LnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL3N1
YnN1cC54aHRtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi90YWJsZXMu
eGh0bWw6CisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlci54aHRtbDogQWRkZWQu
CisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWw6IEFkZGVkLgor
CiAyMDEwLTAxLTE0ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSB0ZXN0IHRoYXQgc2hvd3Mgb25sb2FkIHN0aWxsIGZpcmVzIGlmIGEgbG9hZCBvZiBhIDxz
Y3JpcHQgc3JjPgpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQu
eGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5j
ZWQueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9u
L2ZlbmNlZC54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPGh0bWwgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+Um93cyBhbmQg
T3BlcmF0b3JzPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CittbyB7CisgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMjAwLDIwMCwyMDApOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9J3QxJz4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MJz4KKzxtZmVuY2VkPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRk
bGU7aGVpZ2h0OiA0OHB4OyB3aWR0aDogNDhweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1
LDApJy8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rp
c3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTtoZWlnaHQ6IDQ4cHg7
IHdpZHRoOiA0OHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48ZGl2IHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJs
b2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO2hlaWdodDogNDhweDsgd2lkdGg6IDQ4cHg7IGJh
Y2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjwvbWZlbmNlZD4KKzwvbWF0aD4KKzwvcD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24v
ZnJhY3Rpb25zLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50
YXRpb24vZnJhY3Rpb25zLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWF0aG1s
L3ByZXNlbnRhdGlvbi9mcmFjdGlvbnMueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYg
QEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgor
PHRpdGxlPkZyYWN0aW9uczwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+c2lt
cGxlOiA8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+PG1m
cmFjPjxtbj4xPC9tbj5iYWQ8bW4+MjwvbW4+PC9tZnJhYz48L21hdGg+PC9wPgorPHAgaWQ9J3Qy
Jz5tb3JlIGNvbXBsZXg6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnPgorPG1mcmFjPgorPG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz5iYWQ8bW4+MTwv
bW4+PC9tcm93PgorPG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz48bW4+MjwvbW4+PC9tcm93Pgor
PC9tZnJhYz4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0Myc+dGV4dDoKKzxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJhYz4KKzxtdGV4dD5udW1i
ZXIgb2YgYnVnczwvbXRleHQ+Cis8bXRleHQ+bnVtYmVyIG9mIGNoYW5nZXM8L210ZXh0PgorPC9t
ZnJhYz4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0NCc+bGluZSB0aGlja25lc3MgYnkga2V5d29y
ZDoKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz48bWZy
YWMgbGluZXRoaWNrbmVzcz0ndGhpbic+PG1uPjE8L21uPjxtbj4yPC9tbj48L21mcmFjPjwvbWF0
aD48bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+PG1mcmFj
IGxpbmV0aGlja25lc3M9J21lZGl1bSc+PG1uPjE8L21uPjxtbj4yPC9tbj48L21mcmFjPjwvbWF0
aD48bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+PG1mcmFj
IGxpbmV0aGlja25lc3M9J3RoaWNrJz48bW4+MTwvbW4+PG1uPjI8L21uPjwvbWZyYWM+PC9tYXRo
PjwvcD4KKzxwIGlkPSd0NSc+bnVtZXJhdG9yIGFsaWdubWVudDoKKzxtYXRoIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJhYyBudW1hbGlnbj0ibGVmdCI+
Cis8bWk+eDwvbWk+Cis8bXJvdz48bW4+MTwvbW4+PG1vPis8L21vPjxtbj4yPC9tbj48bW8+Kzwv
bW8+PG1uPjM8L21uPjxtbz4rPC9tbz48bW4+NDwvbW4+PG1vPis8L21vPjxtbj41PC9tbj48L21y
b3c+Cis8L21mcmFjPgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwnPgorPG1mcmFjIG51bWFsaWduPSJjZW50ZXIiPgorPG1pPng8L21pPgor
PG1yb3c+PG1uPjE8L21uPjxtbz4rPC9tbz48bW4+MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48
bW8+KzwvbW8+PG1uPjQ8L21uPjxtbz4rPC9tbz48bW4+NTwvbW4+PC9tcm93PgorPC9tZnJhYz4K
KzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1M
Jz4KKzxtZnJhYyBudW1hbGlnbj0icmlnaHQiPgorPG1pPng8L21pPgorPG1yb3c+PG1uPjE8L21u
Pjxtbz4rPC9tbz48bW4+MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48bW8+KzwvbW8+PG1uPjQ8
L21uPjxtbz4rPC9tbz48bW4+NTwvbW4+PC9tcm93PgorPC9tZnJhYz4KKzwvbWF0aD4KKzwvcD4K
KzxwIGlkPSd0Nic+ZGVub21pbmF0b3IgYWxpZ25tZW50OgorPG1hdGggeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1mcmFjIGRlbm9tYWxpZ249ImxlZnQiPgor
PG1yb3c+PG1uPjE8L21uPjxtbz4rPC9tbz48bW4+MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48
bW8+KzwvbW8+PG1uPjQ8L21uPjxtbz4rPC9tbz48bW4+NTwvbW4+PC9tcm93PgorPG1pPng8L21p
PgorPC9tZnJhYz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4
L01hdGgvTWF0aE1MJz4KKzxtZnJhYyBkZW5vbWFsaWduPSJjZW50ZXIiPgorPG1yb3c+PG1uPjE8
L21uPjxtbz4rPC9tbz48bW4+MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48bW8+KzwvbW8+PG1u
PjQ8L21uPjxtbz4rPC9tbz48bW4+NTwvbW4+PC9tcm93PgorPG1pPng8L21pPgorPC9tZnJhYz4K
KzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1M
Jz4KKzxtZnJhYyBkZW5vbWFsaWduPSJyaWdodCI+Cis8bXJvdz48bW4+MTwvbW4+PG1vPis8L21v
Pjxtbj4yPC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4rPC9tbz48bW4+NDwvbW4+PG1vPis8
L21vPjxtbj41PC9tbj48L21yb3c+Cis8bWk+eDwvbWk+Cis8L21mcmFjPgorPC9tYXRoPgorPC9w
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlv
bi9tby1pbnRlZ3JhbC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJl
c2VudGF0aW9uL21vLWludGVncmFsLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9tby1pbnRlZ3JhbC54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxOSBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgor
PGhlYWQ+Cis8dGl0bGU+U3Vic2NyaXB0IGFuZCBTdXBlcnNjcmlwdHM8L3RpdGxlPgorPC9oZWFk
PgorPGJvZHk+Cis8cD5BbiBpbnRlZ3JhbCB3aXRoIG5vcm1hbCBoZWlnaHQgY29udGVudDogCisg
ICAgPG1hdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiPgorICAg
ICAgPG1zdWJzdXA+PG1vPuKIqzwvbW8+PG1uPjA8L21uPjxtbj4yPC9tbj48L21zdWJzdXA+PG1u
PjQuOTwvbW4+PG1pPmR4PC9taT4KKyAgICA8L21hdGg+PC9wPgorPHAgc3R5bGU9ImZvbnQtc2l6
ZTogMmVtIj5BbiBpbnRlZ3JhbCB3aXRoIG5vcm1hbCBoZWlnaHQgY29udGVudDogCisgICAgPG1h
dGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiPgorICAgICAgPG1z
dWJzdXA+PG1vPuKIqzwvbW8+PG1uPjA8L21uPjxtbj4yPC9tbj48L21zdWJzdXA+PG1uPjQuOTwv
bW4+PG1pPmR4PC9taT4KKyAgICA8L21hdGg+PC9wPgorPHA+QW4gaW50ZWdyYWwgd2l0aCBub3Jt
YWwgaGVpZ2h0IGNvbnRlbnQ6IAorICAgIDxtYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk4L01hdGgvTWF0aE1MIj4KKyAgICAgIDxtc3Vic3VwPjxtbz7iiKs8L21vPjxtbj4wPC9tbj48
bW4+MjwvbW4+PC9tc3Vic3VwPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgdmVy
dGljYWwtYWxpZ246IC04cHg7IGhlaWdodDogNDhweDsgd2lkdGg6IDQ4cHg7IGJvcmRlcjogMXB4
IHNvbGlkIGJsYWNrOyIvPjxtaT5keDwvbWk+CisgICAgPC9tYXRoPjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vb3Zlci54aHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL292ZXIueGh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL292ZXIueGh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgorPHRpdGxlPk92ZXI8L3RpdGxlPgorPHN0eWxl
IHR5cGU9J3RleHQvY3NzJz4KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+
b3ZlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+
Cis8bW92ZXI+Cis8bWk+QjwvbWk+Cis8bWk+eDwvbWk+Cis8L21vdmVyPgorPC9tYXRoPgorPC9w
PgorPHAgaWQ9J3QyJz5vdmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4
L01hdGgvTWF0aE1MJz4KKzxtb3Zlcj4KKzxtaT5CPC9taT4KKzxtaT55PC9taT4KKzwvbW92ZXI+
Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tYXRo
bWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21h
dGhtbC9wcmVzZW50YXRpb24vcm9vdHMueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ4IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVh
ZD4KKzx0aXRsZT5Sb290czwvdGl0bGU+Cis8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPgorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz5zcXVhcmUgcm9vdDogCis8bWF0aCB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXNxcnQ+PG1uPjI8L21u
PjwvbXNxcnQ+Cis8L21hdGg+PC9wPgorPHAgaWQ9J3QyJz5sb25nIHNxdWFyZSByb290OiAKKzxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3FydD48
bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4xPC9tbj48L21yb3c+PC9tc3FydD4KKzwvbWF0
aD48L3A+Cis8cCBpZD0ndDMnPmxvbmcgc3F1YXJlIHJvb3Qgd2l0aCBpbXBsaWVkIHJvdzogCis8
bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXNxcnQ+
PG1zdXA+PG1pPng8L21pPjxtbj4yPC9tbj48L21zdXA+PG1vPis8L21vPjxtbj4xPC9tbj48L21z
cXJ0PgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0NCc+cm9vdCBvZiBhIGZyYWN0aW9uOiAKKzxtYXRo
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3FydD4KKzxt
ZnJhYz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjE8L21uPjwvbXJvdz4KKzxtcm93
PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjI8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21zcXJ0
PgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0NSc+Y3ViZSByb290OiAKKzxtYXRoIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm9vdD48bW4+MjwvbW4+PG1uPjM8
L21uPjwvbXJvb3Q+Cis8L21hdGg+PC9wPgorPHAgaWQ9J3Q2Jz5sb25nIGluZGV4OiAKKzxtYXRo
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm9vdD48bW4+
MjwvbW4+PG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56
PC9taT48L21yb3c+PC9tcm9vdD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDYnPmxvbmcgaW5kZXgg
dy8gY29tcGxleCBiYXNlOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MJz4KKzxtcm9vdD4KKzxtZnJhYz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+
PG1uPjE8L21uPjwvbXJvdz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjI8L21uPjwv
bXJvdz4KKzwvbWZyYWM+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPjxtaT55PC9taT48bW8+
KzwvbW8+PG1pPno8L21pPjwvbXJvdz4KKzwvbXJvb3Q+Cis8L21hdGg+PC9wPgorPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL21h
dGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21h
dGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9yb3cueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4
IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4K
Kzx0aXRsZT5Sb3dzIGFuZCBPcGVyYXRvcnM8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KK21vIHsKKyAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMDAsMjAwLDIwMCk7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk4L01hdGgvTWF0aE1MJz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4xPC9tbj48L21hdGg+
Cis8L3A+Cis8cCBpZD0ndDEnPgorMTZweDoKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz57PC9tbz48ZGl2IHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0
aWNhbC1hbGlnbjogbWlkZGxlO2hlaWdodDogMTZweDsgd2lkdGg6IDE2cHg7IGJhY2tncm91bmQt
Y29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz59PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+Wzwv
bW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3Bs
YXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTtoZWlnaHQ6IDE2cHg7IHdp
ZHRoOiAxNnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+XTwvbW8+PC9t
cm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPgorPG1yb3c+PG1vPig8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBt
aWRkbGU7IGhlaWdodDogMTZweDsgd2lkdGg6IDE2cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigw
LDI1NSwwKScvPjxtbz4pPC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDov
L3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+fDwvbW8+PGRpdiB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1i
bG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPnw8L21vPjwvbXJvdz4KKzwvbWF0
aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxt
cm93Pjxtbz4mI3gyMjJiOzwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRs
ZTsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApOycvPjwvbXJvdz4KKzwvbWF0aD4KKzwvcD4KKzxw
IGlkPSd0MSc+CisyNHB4OgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnPgorPG1yb3c+PG1vPns8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWdu
OiBtaWRkbGU7IGhlaWdodDogMjRweDsgd2lkdGg6IDI0cHg7IGJhY2tncm91bmQtY29sb3I6IHJn
YigwLDI1NSwwKScvPjxtbz59PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+WzwvbW8+PGRpdiB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGlu
ZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAyNHB4OyB3aWR0aDogMjRw
eDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPl08L21vPjwvbXJvdz4KKzwv
bWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4K
Kzxtcm93Pjxtbz4oPC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
JyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBo
ZWlnaHQ6IDI0cHg7IHdpZHRoOiAyNHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCkn
Lz48bW8+KTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPnw8L21vPjxkaXYgeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZl
cnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMjRweDsgd2lkdGg6IDI0cHg7IGJhY2tncm91
bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz58PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0
aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+
JiN4MjIyYjs8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0
eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdo
dDogMjRweDsgd2lkdGg6IDI0cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjwv
bXJvdz4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0MSc+CiszMnB4OgorPG1hdGggeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPns8L21vPjxkaXYg
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMzJweDsgd2lkdGg6IDMy
cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz59PC9tbz48L21yb3c+Cis8
L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+
Cis8bXJvdz48bW8+WzwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsg
aGVpZ2h0OiAzMnB4OyB3aWR0aDogMzJweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDAp
Jy8+PG1vPl08L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz4oPC9tbz48ZGl2IHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2
ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAzMnB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+KTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1h
dGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1v
Pnw8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMzJw
eDsgd2lkdGg6IDMycHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz58PC9t
bz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCc+Cis8bXJvdz48bW8+JiN4MjIyYjs8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMzJweDsgd2lkdGg6IDMycHg7IGJhY2tncm91bmQt
Y29sb3I6IHJnYigwLDI1NSwwKScvPjwvbXJvdz4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0MSc+
Cis0OHB4OgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwn
PgorPG1yb3c+PG1vPns8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7
IGhlaWdodDogNDhweDsgd2lkdGg6IDQ4cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSww
KScvPjxtbz59PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+WzwvbW8+PGRpdiB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsg
dmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiA0OHB4OyB3aWR0aDogNDhweDsgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPl08L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxt
bz4oPC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0n
ZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDQ4
cHg7IHdpZHRoOiA0OHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+KTwv
bW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgv
TWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPnw8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFs
aWduOiBtaWRkbGU7IGhlaWdodDogNDhweDsgd2lkdGg6IDQ4cHg7IGJhY2tncm91bmQtY29sb3I6
IHJnYigwLDI1NSwwKScvPjxtbz58PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+JiN4MjIyYjs8
L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogNDhweDsg
d2lkdGg6IDQ4cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjwvbXJvdz4KKzwv
bWF0aD4KKzwvcD4KKzxwIGlkPSd0MSc+CisxMjBweDoKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz57PC9tbz48ZGl2IHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2Nr
OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDEyMHB4OyB3aWR0aDogMTIwcHg7IGJh
Y2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz59PC9tbz48L21yb3c+Cis8L21hdGg+
Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJv
dz48bW8+WzwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5
bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0
OiAxMjBweDsgd2lkdGg6IDEyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48
bW8+XTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPig8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMTIwcHg7IHdpZHRoOiAxMjBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPik8L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxtYXRo
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz58
PC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlz
cGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDEyMHB4
OyB3aWR0aDogMTIwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz58PC9t
bz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCc+Cis8bXJvdz48bW8+JiN4MjIyYjs8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMTIwcHg7IHdpZHRoOiAxMjBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PC9tcm93PgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q1
Jz4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxt
cm93PgorPG1vPig8L21vPgorPGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsg
aGVpZ2h0OiA0MHB4OyB3aWR0aDogNDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDAp
Jy8+Cis8bW8+LDwvbW8+Cis8ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
JyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBo
ZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCkn
Lz4KKzxtbz4sPC9tbz4KKzxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwn
IHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhl
aWdodDogNDBweDsgd2lkdGg6IDQwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScv
PgorPG1vPik8L21vPgorPC9tcm93PgorPC9tYXRoPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zdWJzdXAueGh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zdWJzdXAueGh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+U3Vic2NyaXB0IGFuZCBTdXBlcnNj
cmlwdHM8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0ndDEnPmJvdGg6IAorPG1hdGgg
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1zdWJzdXA+PG1p
Png8L21pPjxtbj4xPC9tbj48bWk+azwvbWk+PC9tc3Vic3VwPgorPC9tYXRoPgorPC9wPgorPHAg
aWQ9J3QyJz5sb25nIHN1YnNjcmlwdCB3LyBib3RoOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3Vic3VwPgorPG1pPlo8L21pPgorPG1yb3c+
PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56PC9taT48L21yb3c+
Cis8bWk+ajwvbWk+Cis8L21zdWJzdXA+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMnPmxvbmcg
c3VwZXJzY3JpcHQgdy8gYm90aDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OC9NYXRoL01hdGhNTCc+Cis8bXN1YnN1cD4KKzxtaT5aPC9taT4KKzxtaT54PC9taT4KKzxtcm93
PjxtaT5rPC9taT48bW8+KzwvbW8+PG1pPmo8L21pPjwvbXJvdz4KKzwvbXN1YnN1cD4KKzwvbWF0
aD4KKzwvcD4KKzxwIGlkPSd0NCc+bG9uZyB3LyBib3RoOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3Vic3VwPgorPG1pPlo8L21pPgorPG1y
b3c+PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56PC9taT48L21y
b3c+Cis8bXJvdz48bWk+azwvbWk+PG1vPis8L21vPjxtaT5qPC9taT48L21yb3c+Cis8L21zdWJz
dXA+Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9t
YXRobWwvcHJlc2VudGF0aW9uL3RhYmxlcy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tYXRobWwvcHJlc2VudGF0aW9uL3RhYmxlcy54aHRtbAkocmV2aXNpb24gNTMxNjYpCisrKyBM
YXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3RhYmxlcy54aHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNSw2ICs1LDcgQEAKIDxib2R5PgogPHAgaWQ9J3QxJz5zaW1wbGU6IAogPG1hdGggeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1mZW5jZWQgb3Blbj0i
WyIgY2xvc2U9Il0iPgogPG10YWJsZT4KIDxtdHI+CiA8bXRkPjxtc3ViPjxtaT5hPC9taT48bW4+
MTE8L21uPjwvbXN1Yj48L210ZD4KQEAgLTIyLDYgKzIzLDcgQEAKIDxtdGQ+PG1zdWI+PG1pPmM8
L21pPjxtbj4zMzwvbW4+PC9tc3ViPjwvbXRkPgogPC9tdHI+CiA8L210YWJsZT4KKzwvbWZlbmNl
ZD4KIDwvbWF0aD4KIDwvcD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVz
ZW50YXRpb24vdW5kZXIueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3By
ZXNlbnRhdGlvbi91bmRlci54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21hdGht
bC9wcmVzZW50YXRpb24vdW5kZXIueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAK
KzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgorPHRp
dGxlPlVuZGVyPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz51bmRlcjogCis8
bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXVuZGVy
PgorPG1pPkI8L21pPgorPG1pPng8L21pPgorPC9tdW5kZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBp
ZD0ndDInPnVuZGVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgv
TWF0aE1MJz4KKzxtdW5kZXI+Cis8bWk+QjwvbWk+Cis8bWk+WDwvbWk+Cis8L211bmRlcj4KKzwv
bWF0aD4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9w
cmVzZW50YXRpb24vdW5kZXJvdmVyLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21h
dGhtbC9wcmVzZW50YXRpb24vdW5kZXJvdmVyLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDMgQEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
Jz4KKzxoZWFkPgorPHRpdGxlPlVuZGVyL092ZXI8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0ndDEnPnVuZGVyICZhbXA7IG92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG11bmRlcm92ZXI+Cis8bWk+QjwvbWk+Cis8bWk+eDwv
bWk+Cis8bWk+eTwvbWk+Cis8L211bmRlcm92ZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDIn
PnVuZGVyICZhbXA7IG92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgv
TWF0aC9NYXRoTUwnPgorPG11bmRlcm92ZXI+Cis8bWk+QjwvbWk+Cis8bWk+WDwvbWk+Cis8bWk+
eTwvbWk+Cis8L211bmRlcm92ZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMnPnVuZGVyICZh
bXA7IG92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRo
TUwnPgorPG11bmRlcm92ZXI+Cis8bW8gbWF0aHNpemU9J2JpZyc+JiN4MjIxMTs8L21vPgorPG1y
b3c+PG1pPmk8L21pPjxtbz49PC9tbz48bWk+MDwvbWk+PC9tcm93PgorPG1yb3c+PG1pPng8L21p
Pjxtbz4rPC9tbz48bWk+eTwvbWk+PC9tcm93PgorPC9tdW5kZXJvdmVyPgorPC9tYXRoPgorPC9w
PgorPHAgaWQ9J3Q0Jz51bmRlciAmYW1wOyBvdmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtdW5kZXJvdmVyPgorPG1vIG1hdGhzaXplPSdi
aWcnPiYjeDIyMTE7PC9tbz4KKzxtcm93PjxtaT5JPC9taT48bW8+PTwvbW8+PG1pPjA8L21pPjwv
bXJvdz4KKzxtcm93PjxtaT5YPC9taT48bW8+KzwvbW8+PG1pPnk8L21pPjwvbXJvdz4KKzwvbXVu
ZGVyb3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48388</attachid>
            <date>2010-02-08 20:52:17 -0800</date>
            <delta_ts>2010-02-10 10:36:04 -0800</delta_ts>
            <desc>Updated monster patch with the latest trunk and MathML code</desc>
            <filename>WebKit-mathml-monster.patch</filename>
            <type>text/plain</type>
            <size>123178</size>
            <attacher name="Alex Milowski">alex</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDUwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE2IEBACisyMDEwLTAyLTA4ICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3Nr
aS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q3VycmVudCBNYXRoTUwgaW1wbGVtZW50YXRpb24gKGFsbCB0aGUgY29kZSkKKworICAgICAgICBU
ZXN0czogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwKKyAgICAgICAgICAgICAgIG1h
dGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwv
cHJlc2VudGF0aW9uL21vLWludGVncmFsLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwvcHJl
c2VudGF0aW9uL292ZXIueGh0bWwKKyAgICAgICAgICAgICAgIG1hdGhtbC9wcmVzZW50YXRpb24v
cm9vdHMueGh0bWwKKyAgICAgICAgICAgICAgIG1hdGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1s
CisgICAgICAgICAgICAgICBtYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRtbAorICAgICAg
ICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlci54aHRtbAorICAgICAgICAgICAgICAg
bWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWwKKworICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGNzcy9tYXRobWwuY3NzOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVt
ZW50OjpNYXRoTUxUZXh0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmlzQ2hpbGRBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEJsb2NrOjptYWtlQmxvY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxCbG9jazo6bm9uT3BlcmF0b3JIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OnN0cmV0Y2hUb0hlaWdodCk6CisgICAgICAgICogbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6OmlzUmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTEJsb2NrOjppc1JlbmRlck1hdGhNTE1hdGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6Omhhc0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJN
YXRoTUxCbG9jayk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxG
ZW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVGcm9t
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6Om1ha2VPcGVy
YXRvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZUZl
bmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OmFkZENoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6bGF5b3V0KToKKyAgICAgICAg
KiBtYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAgICAqIG1hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MTWF0aDo6
UmVuZGVyTWF0aE1MTWF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRoOjpz
ZXRTdHlsZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRoOjppc1JlbmRlck1hdGhNTE1hdGgpOgor
ICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpzZXRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c3R5bGVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmlzQ2hpbGRBbGxvd2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpzdHJldGNoVG9IZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVw
ZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9y
OjptYWtlU3RhY2thYmxlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6Om1ha2VHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6Omlz
UmVuZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJNYXRoTUxP
cGVyYXRvcik6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6YWRkQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIG1hdGhtbC9SZW5k
ZXJNYXRoTUxSb290Lmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0
aE1MUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6c2V0U3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93Ojpub25PcGVyYXRvckhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb3c6OmxheW91dCk6CisgICAgICAgICogbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTFJvdzo6aXNSZW5kZXJNYXRoTUxSb3cpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRo
TUxTcXVhcmVSb290LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxT
cXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFNxdWFyZVJvb3Q6OnBhaW50KToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MU3F1YXJlUm9vdC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0aE1MU3Vi
U3VwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTdWJTdXA6OlJl
bmRlck1hdGhNTFN1YlN1cCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTdWJTdXA6
OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6c3RyZXRj
aFRvSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6bm9uT3Bl
cmF0b3JIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpsYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpiYXNlbGluZVBvc2l0
aW9uKToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpoYXNCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6KToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxV
bmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxVbmRlck92ZXI6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE9mZnNl
dEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmJhc2VsaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpub25PcGVy
YXRvckhlaWdodCk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6aGFzQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6Oik6CisgICAgICAgICog
bWF0aG1sL21hdGhhdHRycy5pbjogQWRkZWQuCisgICAgICAgICogbWF0aG1sL21hdGh0YWdzLmlu
OgorCiAyMDEwLTAyLTA4ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU0NTAxKQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4MzYs
NiArNDgzNiwyNCBAQAogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZB
NjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovOyB9OwogCQlG
QTY1NEE2RjExMDhBQkZGMDAyNjE1RTAgLyogUmVuZGVyTWF0aE1MQmxvY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNkQxMTA4QUJGRjAw
MjYxNUUwIC8qIFJlbmRlck1hdGhNTEJsb2NrLmNwcCAqLzsgfTsKIAkJRkE2NTRBNzAxMTA4QUJG
RjAwMjYxNUUwIC8qIFJlbmRlck1hdGhNTEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2RTExMDhBQkZGMDAyNjE1RTAgLyogUmVuZGVy
TWF0aE1MQmxvY2suaCAqLzsgfTsKKwkJRkE4RTVDQjkxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRl
ck1hdGhNTEZlbmNlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQThFNUNBNzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmNw
cCAqLzsgfTsKKwkJRkE4RTVDQkExMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTEZlbmNl
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4RTVD
QTgxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTEZlbmNlZC5oICovOyB9OworCQlGQThF
NUNCQjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4RTVDQTkxMTIwQTYyQjAw
N0Y4QjAyIC8qIFJlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCAqLzsgfTsKKwkJRkE4RTVDQkMxMTIw
QTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTEZyYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThFNUNBQTExMjBBNjJCMDA3RjhCMDIgLyog
UmVuZGVyTWF0aE1MRnJhY3Rpb24uaCAqLzsgfTsKKwkJRkE4RTVDQkQxMTIwQTYyQjAwN0Y4QjAy
IC8qIFJlbmRlck1hdGhNTE1hdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkE4RTVDQUIxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE1h
dGguY3BwICovOyB9OworCQlGQThFNUNCRTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1M
TWF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4
RTVDQUMxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE1hdGguaCAqLzsgfTsKKwkJRkE4
RTVDQkYxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBOEU1Q0FEMTEyMEE2MkIw
MDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgKi87IH07CisJCUZBOEU1Q0MwMTEy
MEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4RTVDQUUxMTIwQTYyQjAwN0Y4QjAyIC8q
IFJlbmRlck1hdGhNTE9wZXJhdG9yLmggKi87IH07CisJCUZBOEU1Q0MxMTEyMEE2MkIwMDdGOEIw
MiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZBOEU1Q0FGMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxS
b290LmNwcCAqLzsgfTsKKwkJRkE4RTVDQzIxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhN
TFJvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZB
OEU1Q0IwMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxSb290LmggKi87IH07CisJCUZB
OEU1Q0MzMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxSb3cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4RTVDQjExMTIwQTYyQjAwN0Y4
QjAyIC8qIFJlbmRlck1hdGhNTFJvdy5jcHAgKi87IH07CisJCUZBOEU1Q0M0MTEyMEE2MkIwMDdG
OEIwMiAvKiBSZW5kZXJNYXRoTUxSb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZBOEU1Q0IyMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxS
b3cuaCAqLzsgfTsKKwkJRkE4RTVDQzUxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFNx
dWFyZVJvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkE4RTVDQjMxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3Bw
ICovOyB9OworCQlGQThFNUNDNjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4
RTVDQjQxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCAqLzsgfTsK
KwkJRkE4RTVDQzcxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFN1YlN1cC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThFNUNCNTExMjBB
NjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3ViU3VwLmNwcCAqLzsgfTsKKwkJRkE4RTVDQzgx
MTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFN1YlN1cC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4RTVDQjYxMTIwQTYyQjAwN0Y4QjAyIC8q
IFJlbmRlck1hdGhNTFN1YlN1cC5oICovOyB9OworCQlGQThFNUNDOTExMjBBNjJCMDA3RjhCMDIg
LyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBOEU1Q0I3MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRo
TUxVbmRlck92ZXIuY3BwICovOyB9OworCQlGQThFNUNDQTExMjBBNjJCMDA3RjhCMDIgLyogUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQThFNUNCODExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmggKi87IH07CiAJCUZBQkU3MkY0MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3
MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLzsgfTsKIAkJRkFCRTcy
RjUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxFbGVtZW50LmggKi87IH07CiAJCUZBQkU3MkY2MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTEwMTQ5LDYgKzEwMTY3LDI0IEBACiAJ
CUZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2RDExMDhBQkZGMDAyNjE1RTAgLyogUmVuZGVyTWF0
aE1MQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
TWF0aE1MQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2RTEx
MDhBQkZGMDAyNjE1RTAgLyogUmVuZGVyTWF0aE1MQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkE4RTVDQTcxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTEZlbmNlZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxGZW5j
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQThFNUNBODExMjBBNjJCMDA3
RjhCMDIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlck1hdGhNTEZlbmNlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGQThFNUNBOTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MRnJhY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQThFNUNBQTExMjBBNjJCMDA3RjhC
MDIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkE4RTVDQUIxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE1hdGguY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MTWF0aC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOEU1Q0FDMTEyMEE2MkIwMDdGOEIwMiAvKiBS
ZW5kZXJNYXRoTUxNYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ck1hdGhNTE1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4RTVDQUQxMTIw
QTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4RTVDQUUxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1h
dGhNTE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1h
dGhNTE9wZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOEU1Q0FGMTEy
MEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQThFNUNCMDExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MUm9v
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxSb290Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOEU1Q0IxMTEyMEE2MkIwMDdGOEIwMiAv
KiBSZW5kZXJNYXRoTUxSb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyTWF0aE1MUm93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4
RTVDQjIxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFJvdy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxSb3cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkE4RTVDQjMxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0
aE1MU3F1YXJlUm9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOEU1Q0I0
MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4RTVDQjUxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1h
dGhNTFN1YlN1cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJNYXRoTUxTdWJTdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQThFNUNC
NjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3ViU3VwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFN1YlN1cC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQThFNUNCNzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1h
dGhNTFVuZGVyT3Zlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOEU1Q0I4
MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRTEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVG
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwMzIsNiArMTYwNjgs
MjQgQEAKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8sCiAJ
CQkJRkE2NTRBNkQxMTA4QUJGRjAwMjYxNUUwIC8qIFJlbmRlck1hdGhNTEJsb2NrLmNwcCAqLywK
IAkJCQlGQTY1NEE2RTExMDhBQkZGMDAyNjE1RTAgLyogUmVuZGVyTWF0aE1MQmxvY2suaCAqLywK
KwkJCQlGQThFNUNBNzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCAq
LywKKwkJCQlGQThFNUNBODExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmgg
Ki8sCisJCQkJRkE4RTVDQTkxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTEZyYWN0aW9u
LmNwcCAqLywKKwkJCQlGQThFNUNBQTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRnJh
Y3Rpb24uaCAqLywKKwkJCQlGQThFNUNBQjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1M
TWF0aC5jcHAgKi8sCisJCQkJRkE4RTVDQUMxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhN
TE1hdGguaCAqLywKKwkJCQlGQThFNUNBRDExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1M
T3BlcmF0b3IuY3BwICovLAorCQkJCUZBOEU1Q0FFMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJN
YXRoTUxPcGVyYXRvci5oICovLAorCQkJCUZBOEU1Q0FGMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5k
ZXJNYXRoTUxSb290LmNwcCAqLywKKwkJCQlGQThFNUNCMDExMjBBNjJCMDA3RjhCMDIgLyogUmVu
ZGVyTWF0aE1MUm9vdC5oICovLAorCQkJCUZBOEU1Q0IxMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5k
ZXJNYXRoTUxSb3cuY3BwICovLAorCQkJCUZBOEU1Q0IyMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5k
ZXJNYXRoTUxSb3cuaCAqLywKKwkJCQlGQThFNUNCMzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVy
TWF0aE1MU3F1YXJlUm9vdC5jcHAgKi8sCisJCQkJRkE4RTVDQjQxMTIwQTYyQjAwN0Y4QjAyIC8q
IFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCAqLywKKwkJCQlGQThFNUNCNTExMjBBNjJCMDA3RjhC
MDIgLyogUmVuZGVyTWF0aE1MU3ViU3VwLmNwcCAqLywKKwkJCQlGQThFNUNCNjExMjBBNjJCMDA3
RjhCMDIgLyogUmVuZGVyTWF0aE1MU3ViU3VwLmggKi8sCisJCQkJRkE4RTVDQjcxMTIwQTYyQjAw
N0Y4QjAyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAgKi8sCisJCQkJRkE4RTVDQjgxMTIw
QTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBtYXRobWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTg1MDUsNiArMTg1
NTksMTUgQEAKIAkJCQlCNzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5RjcyMzA0RjExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJv
ZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUY3MjMwNTExMTE4NEI0MTAwQUQwMTI2IC8qIFNj
cmlwdFByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQThFNUNCQTExMjBBNjJCMDA3RjhC
MDIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQThFNUNCQzEx
MjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUZBOEU1Q0JFMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGQThFNUNDMDExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBOEU1Q0MyMTEyMEE2MkIwMDdGOEIwMiAvKiBS
ZW5kZXJNYXRoTUxSb290LmggaW4gSGVhZGVycyAqLywKKwkJCQlGQThFNUNDNDExMjBBNjJCMDA3
RjhCMDIgLyogUmVuZGVyTWF0aE1MUm93LmggaW4gSGVhZGVycyAqLywKKwkJCQlGQThFNUNDNjEx
MjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkE4RTVDQzgxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFN1YlN1cC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkE4RTVDQ0ExMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhN
TFVuZGVyT3Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDY4Myw2ICsyMDc0NiwxNSBAQAogCQkJ
CTg0RDBDNDA0MTExNUYxRDQwMDE4QUEzNCAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjc3NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5RjcyMzA1MDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJv
ZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkE4RTVDQjkxMTIwQTYyQjAwN0Y4QjAyIC8q
IFJlbmRlck1hdGhNTEZlbmNlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQThFNUNCQjExMjBB
NjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkE4RTVDQkQxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkE4RTVDQkYxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE9w
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZBOEU1Q0MxMTEyMEE2MkIwMDdGOEIwMiAv
KiBSZW5kZXJNYXRoTUxSb290LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZBOEU1Q0MzMTEyMEE2
MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxSb3cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkE4
RTVDQzUxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkE4RTVDQzcxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFN1
YlN1cC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQThFNUNDOTExMjBBNjJCMDA3RjhCMDIgLyog
UmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9t
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDU0
NTAxKQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDE0IEBACiAjaW5jbHVkZSAiTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJSZW5kZXJNYXRoTUxCbG9jay5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTEZlbmNlZC5oIgor
I2luY2x1ZGUgIlJlbmRlck1hdGhNTEZyYWN0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1M
TWF0aC5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvb3QuaCIKKyNpbmNsdWRlICJSZW5kZXJN
YXRoTUxSb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxTcXVhcmVSb290LmgiCisjaW5jbHVk
ZSAiUmVuZGVyTWF0aE1MU3ViU3VwLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTQ4LDggKzU1LDMzIEBAIFBhc3NS
ZWZQdHI8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudD4KIAogUmVuZGVyT2JqZWN0KiBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJl
bmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgd2ls
bCBjb250YWluIHRoZSBzcGVjaWFsaXplZCByZW5kZXJlcnMgYmFzZWQgb24gZWxlbWVudCBuYW1l
Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxCbG9j
ayh0aGlzKTsKKyAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IDA7CisgICAgaWYgKGhhc0xvY2Fs
TmFtZShNYXRoTUxOYW1lczo6bXJvd1RhZykpCisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEp
IFJlbmRlck1hdGhNTFJvdyh0aGlzKTsKKyAgICBlbHNlIGlmIChoYXNMb2NhbE5hbWUoTWF0aE1M
TmFtZXM6Om1mZW5jZWRUYWcpKQorICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJN
YXRoTUxGZW5jZWQodGhpcyk7CisgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVz
OjptZnJhY1RhZykpCisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTEZy
YWN0aW9uKHRoaXMpOworICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bXN1
YlRhZykpCisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTFN1YlN1cCh0
aGlzKTsKKyAgICBlbHNlIGlmIChoYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1zdXBUYWcpKQor
ICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxTdWJTdXAodGhpcyk7Cisg
ICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptc3Vic3VwVGFnKSkKKyAgICAg
ICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MU3ViU3VwKHRoaXMpOworICAgIGVs
c2UgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bW92ZXJUYWcpKQorICAgICAgICBvYmpl
Y3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxVbmRlck92ZXIodGhpcyk7CisgICAgZWxzZSBp
ZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptdW5kZXJUYWcpKQorICAgICAgICBvYmplY3Qg
PSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxVbmRlck92ZXIodGhpcyk7CisgICAgZWxzZSBpZiAo
aGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptdW5kZXJvdmVyVGFnKSkKKyAgICAgICAgb2JqZWN0
ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MVW5kZXJPdmVyKHRoaXMpOworICAgIGVsc2UgaWYg
KGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bXNxcnRUYWcpKQorICAgICAgICBvYmplY3QgPSBu
ZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxTcXVhcmVSb290KHRoaXMpOworICAgIGVsc2UgaWYgKGhh
c0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bXJvb3RUYWcpKQorICAgICAgICBvYmplY3QgPSBuZXcg
KGFyZW5hKSBSZW5kZXJNYXRoTUxSb290KHRoaXMpOworICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFt
ZShNYXRoTUxOYW1lczo6bWF0aFRhZykpCisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJl
bmRlck1hdGhNTE1hdGgodGhpcyk7CisgICAgZWxzZQorICAgICAgICBvYmplY3QgPSBuZXcgKGFy
ZW5hKSBSZW5kZXJNYXRoTUxCbG9jayh0aGlzKTsKICAgICBvYmplY3QtPnNldFN0eWxlKHN0eWxl
KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcAkocmV2aXNpb24gNTQ1MDEpCisrKyBXZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJNYXRo
TUxUZXh0RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKLSNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxPcGVyYXRvci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC00Niw4ICs0NiwxNCBAQCBQYXNzUmVmUHRyPE1hdGhN
TFRleHRFbGVtZW50PiBNYXRoTUxUZXh0CiAgICAgcmV0dXJuIG5ldyBNYXRoTUxUZXh0RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVJlbmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiAsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1Jl
bmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogeworICAgIGlmIChoYXNMb2NhbE5hbWUoTWF0
aE1MTmFtZXM6Om1vVGFnKSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IG5ldyAo
YXJlbmEpIFJlbmRlck1hdGhNTE9wZXJhdG9yKHRoaXMpOworICAgICAgICBvYmplY3QtPnNldFN0
eWxlKHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisgICAgCiAgICAgcmV0
dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKIH0KIApJbmRleDog
V2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxv
d3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTEZlbmNlZC5oIgorCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAi
TWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRlICJSZW5k
ZXJNYXRoTUxPcGVyYXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitSZW5kZXJN
YXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChOb2RlKiBmZW5jZWQpIAorICAgIDogUmVu
ZGVyTWF0aE1MUm93KGZlbmNlZCksIAorICAgIG1fb3BlbigweDI4KSwgCisgICAgbV9jbG9zZSgw
eDI5KQoreworfQorCit2b2lkIFJlbmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQo
KQoreworICAgIEVsZW1lbnQqIGZlbmNlZCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkp
OworIAorICAgIC8vIEZJWE1FOiBIYW5kbGUgb3Blbi9jbG9zZSB2YWx1ZXMgd2l0aCBtb3JlIHRo
YW4gb25lIGNoYXJhY3RlciAodGhleSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIHRleHQpICAgCisg
ICAgQXRvbWljU3RyaW5nIG9wZW5WYWx1ZSA9IGZlbmNlZC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5h
bWVzOjpvcGVuQXR0cik7CisgICAgaWYgKG9wZW5WYWx1ZS5sZW5ndGgoKSA+IDApCisgICAgICAg
IG1fb3BlbiA9IG9wZW5WYWx1ZVswXTsKKyAgICBBdG9taWNTdHJpbmcgY2xvc2VWYWx1ZSA9IGZl
bmNlZC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpjbG9zZUF0dHIpOworICAgIGlmIChjbG9z
ZVZhbHVlLmxlbmd0aCgpID4gMCkKKyAgICAgICAgbV9jbG9zZSA9IGNsb3NlVmFsdWVbMF07Cisg
ICAgCisgICAgQXRvbWljU3RyaW5nIHNlcGFyYXRvcnMgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
ZmVuY2VkKS0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpzZXBhcmF0b3JzQXR0cik7CisgICAg
aWYgKCFzZXBhcmF0b3JzLmlzTnVsbCgpKSB7CisgICAgICAgIFZlY3RvcjxVQ2hhcj4gY2hhcmFj
dGVyczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzZXBhcmF0b3JzLmxl
bmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghaXNTcGFjZU9yTmV3bGluZShzZXBhcmF0
b3JzW2ldKSkKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLmFwcGVuZChzZXBhcmF0b3JzW2ld
KTsKKyAgICAgICAgfQorICAgICAgICBtX3NlcGFyYXRvcnMgPSAhc2VwYXJhdG9ycy5sZW5ndGgo
KSA/IDAgOiBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycy5kYXRhKCkgLCBjaGFyYWN0ZXJz
LnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIHNlcGFyYXRvciBkZWZhdWx0
cyB0byBhIHNpbmdsZSBjb21tYQorICAgICAgICBtX3NlcGFyYXRvcnMgPSBTdHJpbmdJbXBsOjpj
cmVhdGUoIiwiKTsKKyAgICB9CisgICAgCisgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgbWFr
ZUZlbmNlcygpOworfQorCitSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck1hdGhNTEZlbmNlZDo6
bWFrZU9wZXJhdG9yU3R5bGUoKSAKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxl
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHls
ZSgpKTsKKyAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgIG5ld1N0
eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUtPnNl
dFZlcnRpY2FsQWxpZ24oTUlERExFKTsKKyAgICByZXR1cm4gbmV3U3R5bGU7Cit9CisKK3ZvaWQg
UmVuZGVyTWF0aE1MRmVuY2VkOjptYWtlRmVuY2VzKCkKK3sKKyAgICBSZW5kZXJPYmplY3QqIG9w
ZW5GZW5jZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MT3BlcmF0b3Iobm9kZSgp
LCBtX29wZW4pOworICAgIG9wZW5GZW5jZS0+c2V0U3R5bGUobWFrZU9wZXJhdG9yU3R5bGUoKS5y
ZWxlYXNlKCkpOworICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChvcGVuRmVuY2UsIGZpcnN0Q2hp
bGQoKSk7CisgICAgUmVuZGVyT2JqZWN0KiBjbG9zZUZlbmNlID0gbmV3IChyZW5kZXJBcmVuYSgp
KSBSZW5kZXJNYXRoTUxPcGVyYXRvcihub2RlKCksIG1fY2xvc2UpOworICAgIGNsb3NlRmVuY2Ut
PnNldFN0eWxlKG1ha2VPcGVyYXRvclN0eWxlKCkucmVsZWFzZSgpKTsKKyAgICBSZW5kZXJCbG9j
azo6YWRkQ2hpbGQoY2xvc2VGZW5jZSk7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjph
ZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqICkKK3sKKyAgICAvLyBt
YWtlIHRoZSBmZW5jZXMgaWYgdGhlIHJlbmRlciBvYmplY3QgaXMgZW1wdHkKKyAgICBpZiAoaXNF
bXB0eSgpKQorICAgICAgICB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIAorICAgIGlmIChtX3Nl
cGFyYXRvcnMuZ2V0KCkpIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvdW50ID0gMDsKKyAgICAg
ICAgZm9yIChOb2RlKiBwb3NpdGlvbiA9IGNoaWxkLT5ub2RlKCk7IHBvc2l0aW9uOyBwb3NpdGlv
biA9IHBvc2l0aW9uLT5wcmV2aW91c1NpYmxpbmcoKSkgCisgICAgICAgICAgICBpZiAocG9zaXRp
b24tPm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxFTUVOVF9OT0RFKQorICAgICAgICAgICAgICAgIGNv
dW50Kys7CisgICAgICAgICAgICAgICAgCisgICAgICAgIGlmIChjb3VudD4xKSB7CisgICAgICAg
ICAgICBVQ2hhciBzZXBhcmF0b3I7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHVzZSB0
aGUgbGFzdCBzZXBhcmF0b3IgaWYgd2UndmUgcnVuIG91dCBvZiBzcGVjaWZpZWQgc2VwYXJhdG9y
cworICAgICAgICAgICAgaWYgKChjb3VudCAtIDEpID49IG1fc2VwYXJhdG9ycy5nZXQoKS0+bGVu
Z3RoKCkpCisgICAgICAgICAgICAgICAgc2VwYXJhdG9yID0gKCptX3NlcGFyYXRvcnMuZ2V0KCkp
W21fc2VwYXJhdG9ycy5nZXQoKS0+bGVuZ3RoKCkgLSAxXTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzZXBhcmF0b3IgPSAoKm1fc2VwYXJhdG9ycy5nZXQoKSlbY291bnQgLSAx
XTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogc2VwYXJhdG9y
T2JqID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxPcGVyYXRvcihub2RlKCksIHNl
cGFyYXRvcik7CisgICAgICAgICAgICBzZXBhcmF0b3JPYmotPnNldFN0eWxlKG1ha2VPcGVyYXRv
clN0eWxlKCkucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChz
ZXBhcmF0b3JPYmosIGxhc3RDaGlsZCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAv
LyBpZiB3ZSBoYXZlIGEgYmxvY2ssIHdlJ2xsIHdyYXAgaXQgaW4gYW4gaW5saW5lLWJsb2NrCisg
ICAgaWYgKGNoaWxkLT5pc0Jsb2NrRmxvdygpICYmIGNoaWxkLT5zdHlsZSgpLT5kaXNwbGF5KCkg
IT0gSU5MSU5FX0JMT0NLKSB7CisKKyAgICAgICAgLy8gYmxvY2sgb2JqZWN0cyB3cmFwcGVyCisK
KyAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJC
bG9jayhub2RlKCkpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUo
KSk7CisgICAgICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAg
IGJsb2NrLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOworICAgICAgICAKKyAgICAgICAg
UmVuZGVyQmxvY2s6OmFkZENoaWxkKGJsb2NrLCBsYXN0Q2hpbGQoKSk7CisgICAgICAgIGJsb2Nr
LT5hZGRDaGlsZChjaGlsZCk7ICAgIAorICAgICAgICAKKyAgICB9IGVsc2UKKyAgICAgICAgUmVu
ZGVyQmxvY2s6OmFkZENoaWxkKGNoaWxkLCBsYXN0Q2hpbGQoKSk7Cit9CisKK3ZvaWQgUmVuZGVy
TWF0aE1MRmVuY2VkOjpsYXlvdXQoKSAKK3sKKworICAgIFJlbmRlck1hdGhNTFJvdzo6bGF5b3V0
KCk7CisgICAgCisgICAgaW50IHdpZHRoID0gMDsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY3Vy
cmVudCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkgeworCisg
ICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChjdXJyZW50KTsKKyAgICAgICAgICAgIHdpZHRoICs9IGJveC0+b2Zmc2V0V2lkdGgoKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICB3aWR0aCsrOworICAgIHN0eWxlKCktPnNldFdpZHRoKExl
bmd0aCh3aWR0aCwgRml4ZWQpKTsKKworICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1Jl
Y2FsYygpOworICAgIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7CisgICAgUmVuZGVy
QmxvY2s6OmxheW91dCgpOworICAgIAorfQorCit9ICAgIAorCisjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0
aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJN
YXRoTUxGZW5jZWRfaAorI2RlZmluZSBSZW5kZXJNYXRoTUxGZW5jZWRfaAorCisjaWYgRU5BQkxF
KE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvdy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgCitjbGFzcyBSZW5kZXJNYXRoTUxGZW5jZWQgOiBwdWJsaWMgUmVuZGVyTWF0
aE1MUm93IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNYXRoTUxGZW5jZWQoTm9kZSAqZnJhY3Rpb24p
OworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVt
ZW50KCk7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworcHJpdmF0ZToK
KyAgICB2b2lkIG1ha2VGZW5jZXMoKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1ha2VPcGVy
YXRvclN0eWxlKCk7CisgICAgVUNoYXIgbV9vcGVuOworICAgIFVDaGFyIG1fY2xvc2U7CisgICAg
UmVmUHRyPFN0cmluZ0ltcGw+IG1fc2VwYXJhdG9yczsKK307CisgICAgCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUFUSE1MKQorCisjZW5kaWYgLy8gUmVuZGVyTWF0aE1MRmVuY2VkX2gKSW5kZXg6
IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFs
ZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRl
ICJSZW5kZXJNYXRoTUxGcmFjdGlvbi5oIgorCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CisgICAg
CitzdGF0aWMgY29uc3QgZG91YmxlIGhvcml6b250YWxQYWQgPSAwLjI7CitzdGF0aWMgY29uc3Qg
aW50IGJvcmRlclRoaW4gPSAxOworc3RhdGljIGNvbnN0IGludCBib3JkZXJNZWRpdW0gPSAzOwor
c3RhdGljIGNvbnN0IGludCBib3JkZXJUaGljayA9IDU7CisgICAgCitSZW5kZXJNYXRoTUxGcmFj
dGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24oTm9kZSogZnJhY3Rpb24pIAorICAgIDogUmVuZGVy
TWF0aE1MQmxvY2soZnJhY3Rpb24pIAoreworICAgIHNldENoaWxkcmVuSW5saW5lKGZhbHNlKTsK
K30KKwordm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6dXBkYXRlRnJvbUVsZW1lbnQoKQorewor
ICAgIC8vIEZJWE1FOiBtZnJhYyB3aGVyZSBiZXZlbGxlZD10cnVlIHdpbGwgbmVlZCB0byByZW9y
Z2FuaXplIHRoZSBkZXNjZW5kYW50cworICAgIAorICAgIGlmIChpc0VtcHR5KCkpIAorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgRWxlbWVudCogZnJhY3Rpb24gPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obm9kZSgpKTsKKyAgICAKKyAgICBSZW5kZXJPYmplY3QqIG51bWVyYXRvciA9IGZpcnN0
Q2hpbGQoKTsKKyAgICBTdHJpbmcgbmFsaWduID0gZnJhY3Rpb24tPmdldEF0dHJpYnV0ZShNYXRo
TUxOYW1lczo6bnVtYWxpZ25BdHRyKTsKKyAgICAvLyBGSVhNRTogdGhlc2UgY29uc3RhbnRzIHNo
b3VsZCBiZSBkZWZpbmVkIHNvbWV3aGVyZQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYWxp
Z24sICJsZWZ0IikpCisgICAgICAgIG51bWVyYXRvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKExF
RlQpOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbGlnbiwgInJpZ2h0IikpCisg
ICAgICAgIG51bWVyYXRvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKFJJR0hUKTsKKyAgICBlbHNl
CisgICAgICAgIG51bWVyYXRvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKENFTlRFUik7CisKKyAg
ICBSZW5kZXJPYmplY3QqIGRlbm9taW5hdG9yID0gbnVtZXJhdG9yLT5uZXh0U2libGluZygpOwor
ICAgIGlmICghZGVub21pbmF0b3IpCisgICAgICAgcmV0dXJuOworICAgIAorICAgIFN0cmluZyBk
YWxpZ24gPSBmcmFjdGlvbi0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpkZW5vbWFsaWduQXR0
cik7CisgICAgLy8gRklYTUU6IHRoZXNlIGNvbnN0YW50cyBzaG91bGQgYmUgZGVmaW5lZCBzb21l
d2hlcmUKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGFsaWduLCAibGVmdCIpKQorICAgICAg
ICBkZW5vbWluYXRvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKExFRlQpOworICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGRhbGlnbiwgInJpZ2h0IikpCisgICAgICAgIGRlbm9taW5hdG9y
LT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oUklHSFQpOworICAgIGVsc2UKKyAgICAgICAgZGVub21p
bmF0b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihDRU5URVIpOworICAgICAgICAKKyAgICAvLyBG
SVhNRTogcGFyc2UgdW5pdHMKKyAgICAvLyBGSVhNRTogdGhlc2UgY29uc3RhbnRzIHNob3VsZCBi
ZSBkZWZpbmVkIHNvbWV3aGVyZQorICAgIFN0cmluZyB0aGlja25lc3MgPSBmcmFjdGlvbi0+Z2V0
QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpsaW5ldGhpY2tuZXNzQXR0cik7CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHRoaWNrbmVzcywgInRoaW4iKSkKKyAgICAgICAgZGVub21pbmF0b3ItPnN0
eWxlKCktPnNldEJvcmRlclRvcFdpZHRoKGJvcmRlclRoaW4pOworICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHRoaWNrbmVzcywgIm1lZGl1bSIpKQorICAgICAgICBkZW5vbWluYXRvci0+
c3R5bGUoKS0+c2V0Qm9yZGVyVG9wV2lkdGgoYm9yZGVyTWVkaXVtKTsKKyAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSh0aGlja25lc3MsICJ0aGljayIpKQorICAgICAgICBkZW5vbWluYXRv
ci0+c3R5bGUoKS0+c2V0Qm9yZGVyVG9wV2lkdGgoYm9yZGVyVGhpY2spOyAgICAKK30KKwordm9p
ZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKK3sKKyAgICBSZW5kZXJCbG9jayogcm93ID0gbmV3IChy
ZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayhub2RlKCkpOworICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gcm93U3R5bGUgPSBtYWtlQmxvY2tTdHlsZSgpOworCisgICAgcm93U3R5bGUtPnNl
dFRleHRBbGlnbihDRU5URVIpOworICAgIExlbmd0aCBwYWQoc3RhdGljX2Nhc3Q8aW50Pihyb3dT
dHlsZS0+Zm9udFNpemUoKSAqIGhvcml6b250YWxQYWQpLCBGaXhlZCk7CisgICAgcm93U3R5bGUt
PnNldFBhZGRpbmdMZWZ0KHBhZCk7CisgICAgcm93U3R5bGUtPnNldFBhZGRpbmdSaWdodChwYWQp
OworICAgIAorICAgIC8vIEFkZCBhIGJvcmRlciB0b3AgaWYgdGhpcyBpcyB0aGUgZGVub21pbmF0
b3IuCisgICAgYm9vbCBpc051bWVyYXRvciA9IGlzRW1wdHkoKTsKKyAgICBpZiAoIWlzTnVtZXJh
dG9yKSB7CisgICAgICAgIC8vIGRlbm9taW5hdG9yLCBzbyBhZGQgYSBib3JkZXIKKyAgICAgICAg
cm93U3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKGJvcmRlclRoaW4pOworICAgICAgICByb3dTdHls
ZS0+c2V0Qm9yZGVyVG9wU3R5bGUoU09MSUQpOworICAgICAgICByb3dTdHlsZS0+c2V0Qm9yZGVy
VG9wQ29sb3IoQ29sb3IoMCwgMCwgMCkpOworICAgICAgICByb3dTdHlsZS0+c2V0UGFkZGluZ1Rv
cChMZW5ndGgoMywgRml4ZWQpKTsKKyAgICB9CisgICAgCisgICAgcm93LT5zZXRTdHlsZShyb3dT
dHlsZS5yZWxlYXNlKCkpOworICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGJlZm9yZUNo
aWxkKTsKKyAgICByb3ctPmFkZENoaWxkKGNoaWxkKTsKKyAgICB1cGRhdGVGcm9tRWxlbWVudCgp
OworfQorCit9CisKKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCkluZGV4OiBXZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVy
TWF0aE1MRnJhY3Rpb25faAorI2RlZmluZSBSZW5kZXJNYXRoTUxGcmFjdGlvbl9oCisKKyNpZiBF
TkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJNYXRoTUxGcmFjdGlvbiA6IHB1YmxpYyBSZW5k
ZXJNYXRoTUxCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyTWF0aE1MRnJhY3Rpb24oTm9kZSog
ZnJhY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorCisj
ZW5kaWYgLy8gUmVuZGVyTWF0aE1MRnJhY3Rpb25faApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVu
ZGVyTWF0aE1MTWF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxN
YXRoLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MTWF0aC5oIgorCisjaW5jbHVk
ZSAiTWF0aE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3Bh
Y2UgTWF0aE1MTmFtZXM7CisKK1JlbmRlck1hdGhNTE1hdGg6OlJlbmRlck1hdGhNTE1hdGgoTm9k
ZSogbWF0aCkKKyAgICA6IFJlbmRlck1hdGhNTFJvdyhtYXRoKQoreworfQorCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUFUSE1MKQorCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxN
YXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFsZXggTWls
b3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyTWF0aE1MTWF0aF9oCisjZGVmaW5lIFJlbmRlck1h
dGhNTE1hdGhfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhN
TFJvdy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBSZW5kZXJNYXRoTUxN
YXRoIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CitwdWJsaWM6CisgICAgUmVuZGVyTWF0aE1M
TWF0aChOb2RlKiBjb250YWluZXIpOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTE1h
dGgoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cit9OworICAgIAorfQorCisKKyNlbmRpZiAvLyBF
TkFCTEUoTUFUSE1MKQorI2VuZGlmIC8vIFJlbmRlck1hdGhNTE1hdGhfaApJbmRleDogV2ViQ29y
ZS9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxv
d3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTE9wZXJhdG9yLmgiCisKKyNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRl
ICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitSZW5kZXJNYXRo
TUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTm9kZSogY29udGFpbmVyKQorICAgIDog
UmVuZGVyTWF0aE1MQmxvY2soY29udGFpbmVyKSwKKyAgICAgIG1fc3RyZXRjaEhlaWdodCgwKSwK
KyAgICAgIG1fb3BlcmF0b3IoMCkKK3sKK30KKyAgICAKK1JlbmRlck1hdGhNTE9wZXJhdG9yOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcihOb2RlKiBjb250YWluZXIsIFVDaGFyIG9wZXJhdG9yQ2hhcikK
KyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGNvbnRhaW5lciksCisgICAgICBtX3N0cmV0Y2hIZWln
aHQoMCksCisgICAgICBtX29wZXJhdG9yKG9wZXJhdG9yQ2hhcikKK3sKK30KKyAgICAKK2Jvb2wg
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmlzQ2hpbGRBbGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRl
clN0eWxlKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjpzdHJldGNoVG9IZWlnaHQoaW50IGhlaWdodCkKK3sKKyAgICBpZiAoaGVp
Z2h0ID09IG1fc3RyZXRjaEhlaWdodCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RyZXRjaEhl
aWdodCA9IGhlaWdodDsKKyAgICAKKyAgICB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsK
KyAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICBtYXJrQ29udGFp
bmluZ0Jsb2Nrc0ZvckxheW91dCgpOworfQorCit2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjps
YXlvdXQoKSAKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGRuJ3QgYmUgY2Fs
bGVkIGhlcmUgYnV0IHdoZW4gdGhlIG9wZXJhdG9yCisgICAgLy8gaXNuJ3Qgc3RyZXRjaGVkIChl
LmcuIG91dHNpZGUgb2YgYSBtcm93KSwgaXQgbmVlZHMgdG8gYmUgY2FsbGVkIHNvbWVob3cKKyAg
ICB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKK30KKwor
Ly8gVGhpcyBpcyBhIHRhYmxlIG9mIHN0cmV0Y2h5IGNoYXJhY3RlcnMuCisvLyBGSVhNRTogU2hv
dWxkIHRoaXMgYmUgcmVhZCBmcm9tIHRoZSB1bmljb2RlIGNoYXJhY3RlcmlzdGljcyBzb21laG93
PworLy8gdGFibGU6ICBzdHJldGNoeSBvcGVyYXRvciwgdG9wIGNoYXIsIGV4dGVuc2lvbiBjaGFy
LCBib3R0b20gY2hhciwgbWlkZGxlIGNoYXIKK3N0YXRpYyBjb25zdCBVQ2hhciBzdHJldGNoeVs5
XVs1XSA9IHsKK3sgMHgyOCAgLCAweDIzOWIsIDB4MjM5YywgMHgyMzlkLCAweDAgICAgfSwgLy8g
bGVmdCBwYXJlbnRoZXNpcworeyAweDI5ICAsIDB4MjM5ZSwgMHgyMzlmLCAweDIzYTAsIDB4MCAg
ICB9LCAvLyByaWdodCBwYXJlbnRoZXNpcworeyAweDViICAsIDB4MjNhMSwgMHgyM2EyLCAweDIz
YTMsIDB4MCAgICB9LCAvLyBsZWZ0IHNxdWFyZSBicmFja2V0Cit7IDB4NWQgICwgMHgyM2E0LCAw
eDIzYTUsIDB4MjNhNiwgMHgwICAgIH0sIC8vIHJpZ2h0IHNxdWFyZSBicmFja2V0Cit7IDB4N2Ig
ICwgMHgyM2E3LCAweDIzYWEsIDB4MjNhOSwgMHgyM2E4IH0sIC8vIGxlZnQgY3VybHkgYnJhY2tl
dAoreyAweDdjICAsIDB4MjNkMCwgMHgyM2QwLCAweDIzZDAsIDB4MCAgICB9LCAvLyB2ZXJ0aWNh
bCBiYXIKK3sgMHg3ZCAgLCAweDIzYWIsIDB4MjNhYSwgMHgyM2FkLCAweDIzYWMgfSwgLy8gcmln
aHQgY3VybHkgYnJhY2tldAoreyAweDIyMmIsIDB4MjMyMCwgMHgyM2FlLCAweDIzMjEsIDB4MCAg
ICB9LCAvLyBpbnRlZ3JhbCBzaWduCit7IDB4MCAgICwgMHgwLCAgICAweDAsICAgIDB4MCwgICAg
MHgwICAgIH0KK307CisKK3ZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKK3sKKyAgICB3aGlsZSAoZmlyc3RDaGlsZCgpKSB7CisgICAgICAgUmVuZGVyT2JqZWN0
KiBvYmogPSBmaXJzdENoaWxkKCk7CisgICAgICAgcmVtb3ZlQ2hpbGQob2JqKTsKKyAgICB9Cisg
ICAgCisgICAgVUNoYXIgZmlyc3RDaGFyID0gbV9vcGVyYXRvcjsKKyAgICAgICAgCisgICAgRWxl
bWVudCogbW8gPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKTsKKyAgICBpZiAoIWZpcnN0
Q2hhciAmJiBtbykgeworICAgICAgICAvLyBGaW5kIHRoZSBvcGVyYXRvciBjaGFyYWN0ZXIgaW4g
dGhlIHRleHQgY29udGVudAorICAgICAgICAKKyAgICAgICAgU3RyaW5nIG9wVGV4dCA9IG1vLT50
ZXh0Q29udGVudCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgIWZpcnN0Q2hh
ciAmJiBpIDwgb3BUZXh0Lmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghaXNTcGFj
ZU9yTmV3bGluZShvcFRleHRbaV0pKQorICAgICAgICAgICAgICAgZmlyc3RDaGFyID0gb3BUZXh0
W2ldOworICAgICAgICB9CisgICAgfQorICAgIGludCBpbmRleCA9IC0xOworICAgIGlmIChmaXJz
dENoYXIpIHsKKyAgICAgICAgZm9yIChpbmRleCsrOyBzdHJldGNoeVtpbmRleF1bMF07IGluZGV4
KyspIHsKKyAgICAgICAgICAgIGlmIChzdHJldGNoeVtpbmRleF1bMF0gPT0gZmlyc3RDaGFyKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGJvb2wg
bm9TdHJldGNoID0gZmFsc2U7CisgICAgaWYgKG1vKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBz
dHJldGNoeUF0dHIgPSBtby0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpzdHJldGNoeUF0dHIp
OworICAgICAgICBub1N0cmV0Y2ggPSBlcXVhbElnbm9yaW5nQ2FzZShzdHJldGNoeUF0dHIsICJm
YWxzZSIpOworICAgIH0KKyAgICAKKyAgICAvLyBlaXRoZXIgd2UgaGF2ZSBubyBjaGFyYWN0ZXJz
LCB0aGUgc3RyZXRjaCBoZWlnaHQgaXMgc21hbGwsIG9yIHdlIGhhdmUgYSBub24tc3RyZXRjaGFi
bGUgY2hhcmFjdGVyCisgICAgLy8gSWYgc28sIHRoZW4gd2UganVzdCBzZXQgdGhlIGZvbnQgc2l6
ZSBhbmQgd3JhcCB0aGUgdGV4dAorICAgIGJvb2wgY2FuU3RyZXRjaCA9IGluZGV4ID49IDAgJiYg
c3RyZXRjaHlbaW5kZXhdWzBdOworICAgIGlmIChub1N0cmV0Y2ggfHwgIWZpcnN0Q2hhciB8fCBt
X3N0cmV0Y2hIZWlnaHQgPD0gMjQgfHwgIWNhblN0cmV0Y2gpIHsKKworICAgICAgICBtX2lzU3Rh
Y2tlZCA9IGZhbHNlOworICAgICAgICBSZW5kZXJCbG9jayogY29udGFpbmVyID0gbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhub2RlKCkpOworICAgICAgICAKKyAgICAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAg
bmV3U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0RGlz
cGxheShCTE9DSyk7CisKKyAgICAgICAgaW50IGN1cnJlbnRGb250U2l6ZSA9IHN0eWxlKCktPmZv
bnRTaXplKCk7CisgICAgICAgIGlmICghbm9TdHJldGNoICYmIG1fc3RyZXRjaEhlaWdodCA+IDAg
JiYgbV9zdHJldGNoSGVpZ2h0IDw9IDI0ICAmJiBtX3N0cmV0Y2hIZWlnaHQgPiBjdXJyZW50Rm9u
dFNpemUgJiYgY2FuU3RyZXRjaCkgeworICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uKiBkZXNj
ID0gbmV3IEZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAgICAgZGVzYy0+c2V0SXNBYnNvbHV0
ZVNpemUodHJ1ZSk7CisgICAgICAgICAgICBkZXNjLT5zZXRTcGVjaWZpZWRTaXplKG1fc3RyZXRj
aEhlaWdodCk7CisgICAgICAgICAgICBkZXNjLT5zZXRDb21wdXRlZFNpemUobV9zdHJldGNoSGVp
Z2h0KTsKKyAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oKmRlc2MpOwor
ICAgICAgICAgICAgbmV3U3R5bGUtPmZvbnQoKS51cGRhdGUobmV3U3R5bGUtPmZvbnQoKS5mb250
U2VsZWN0b3IoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5ld1N0eWxlLT5zZXRW
ZXJ0aWNhbEFsaWduKEJBU0VMSU5FKTsKKyAgICAgICAgY29udGFpbmVyLT5zZXRTdHlsZShuZXdT
dHlsZS5yZWxlYXNlKCkpOworICAgICAgICBhZGRDaGlsZChjb250YWluZXIpOworICAgICAKKyAg
ICAgICAgUmVuZGVyVGV4dCogdGV4dCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dChu
b2RlKCksIG1fb3BlcmF0b3IgPyBTdHJpbmdJbXBsOjpjcmVhdGUoJm1fb3BlcmF0b3IsIDEpIDog
U3RyaW5nSW1wbDo6Y3JlYXRlKG1vLT50ZXh0Q29udGVudCgpKSk7CisgICAgICAgIHRleHQtPnNl
dFN0eWxlKGNvbnRhaW5lci0+c3R5bGUoKSk7CisgICAgICAgIGNvbnRhaW5lci0+YWRkQ2hpbGQo
dGV4dCk7CisgICAgCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gYnVpbGQgc3RyZXRjaGFibGUg
Y2hhcmFjdGVycworICAgICAgICBtX2lzU3RhY2tlZCA9IHRydWU7CisgICAgICAgIAorICAgICAg
ICBpZiAoc3RyZXRjaHlbaW5kZXhdWzRdKSB7CisgICAgICAgIAorICAgICAgICAgICAgLy8gd2Ug
aGF2ZSBhIG1pZGRsZSBnbHlwaCAoZS5nLiBhIGN1cmx5IGJyYWNrZXQpCisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGludCBoYWxmID0gKG1fc3RyZXRjaEhlaWdodCAtIDEwKSAvIDI7CisgICAg
ICAgICAgICBpZiAoaGFsZiA8PSAxMCkgeworICAgICAgICAgICAgICAgIC8vIHdlIG9ubHkgaGF2
ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSB0b3AgJiBib3R0b20gZ2x5cGgKKyAgICAgICAgICAgICAg
ICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzFdLCBoYWxmKTsKKyAgICAgICAgICAgICAgICBt
YWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzRdLCAxMCwgLTIpOworICAgICAgICAgICAgICAgIG1h
a2VHbHlwaChzdHJldGNoeVtpbmRleF1bM10sIDAsIC00KTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSB0byBleHRlbmQgYm90aCB0aGUgdG9wIGFuZCBi
b3R0b20gdG8gdGhlIG1pZGRsZQorICAgICAgICAgICAgICAgIG1ha2VHbHlwaChzdHJldGNoeVtp
bmRleF1bMV0sIDEwKTsKKyAgICAgICAgICAgICAgICBpbnQgcmVtYWluaW5nID0gaGFsZi0xMDsK
KyAgICAgICAgICAgICAgICB3aGlsZSAocmVtYWluaW5nID4gMCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocmVtYWluaW5nIDwgMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VH
bHlwaChzdHJldGNoeVtpbmRleF1bMl0sIHJlbWFpbmluZyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZW1haW5pbmcgPSAwOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVsyXSwgMTApOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nIC09IDEwOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IC8vIFRoZSBtaWRkbGUgZ2x5cGgKKyAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlb
aW5kZXhdWzRdLCAxMCwgLTIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJl
bWFpbmluZyA9IGhhbGYtMTA7CisgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUg
dGhlIGZ1bGwgaGVpZ2h0IGluIGNhc2UgdGhlIGhlaWdodCBpcyBvZGQKKyAgICAgICAgICAgICAg
ICBpZiAobV9zdHJldGNoSGVpZ2h0ICUgMiA9PSAxKQorICAgICAgICAgICAgICAgICAgICByZW1h
aW5pbmcrKzsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgd2hpbGUgKHJl
bWFpbmluZyA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8IDEwKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzJdLCBy
ZW1haW5pbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VHbHlw
aChzdHJldGNoeVtpbmRleF1bMl0sIDEwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFp
bmluZyAtPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzNdLCAwLCAtNCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIAorICAgICAgICAgICAgLy8gd2Ug
ZG8gbm90IGhhdmUgYSBtaWRkbGUgZ2x5cGgKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50
IHJlbWFpbmluZyA9IG1fc3RyZXRjaEhlaWdodCAtIDIwOworICAgICAgICAgICAgbWFrZUdseXBo
KHN0cmV0Y2h5W2luZGV4XVsxXSwgMTApOworICAgICAgICAgICAgd2hpbGUgKHJlbWFpbmluZyA+
IDApIHsKKyAgICAgICAgICAgICAgICBpZiAocmVtYWluaW5nIDwgMTApIHsKKyAgICAgICAgICAg
ICAgICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVsyXSwgcmVtYWluaW5nKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVtYWluaW5nID0gMDsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzJdLCAxMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyAtPSAxMDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzNdLCAw
LCAtNCk7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgCit9CisKK1JlZlB0cjxSZW5kZXJTdHls
ZT4gUmVuZGVyTWF0aE1MT3BlcmF0b3I6Om1ha2VTdGFja2FibGVTdHlsZShpbnQgc2l6ZSwgaW50
IHRvcFJlbGF0aXZlKQoreworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOwor
ICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKworICAgIC8vIDE0cHggaXMgdGhlIHNp
emUgd2UnbGwgdXNlIGZvciBhbGwgY2hhcmFjdGVycworICAgIEZvbnREZXNjcmlwdGlvbiogZGVz
YyA9IG5ldyBGb250RGVzY3JpcHRpb24oKTsKKyAgICBkZXNjLT5zZXRJc0Fic29sdXRlU2l6ZSh0
cnVlKTsKKyAgICBkZXNjLT5zZXRTcGVjaWZpZWRTaXplKDE0KTsKKyAgICBkZXNjLT5zZXRDb21w
dXRlZFNpemUoMTQpOworICAgIG5ld1N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oKmRlc2MpOwor
ICAgIG5ld1N0eWxlLT5mb250KCkudXBkYXRlKG5ld1N0eWxlLT5mb250KCkuZm9udFNlbGVjdG9y
KCkpOworICAgIG5ld1N0eWxlLT5zZXRMaW5lSGVpZ2h0KExlbmd0aCgxMiwgRml4ZWQpKTsKKyAg
ICBuZXdTdHlsZS0+c2V0VmVydGljYWxBbGlnbihUT1ApOworICAgIAorICAgIGlmIChzaXplID4g
MCkKKyAgICAgICAgbmV3U3R5bGUtPnNldE1heEhlaWdodChMZW5ndGgoc2l6ZSwgRml4ZWQpKTsK
KyAgICAgICAgCisgICAgbmV3U3R5bGUtPnNldE92ZXJmbG93WShPSElEREVOKTsKKyAgICBuZXdT
dHlsZS0+c2V0T3ZlcmZsb3dYKE9ISURERU4pOworICAgIGlmICh0b3BSZWxhdGl2ZSkgeworICAg
ICAgICBuZXdTdHlsZS0+c2V0VG9wKExlbmd0aCh0b3BSZWxhdGl2ZSwgRml4ZWQpKTsKKyAgICAg
ICAgbmV3U3R5bGUtPnNldFBvc2l0aW9uKFJlbGF0aXZlUG9zaXRpb24pOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gbmV3U3R5bGU7Cit9CisKK1JlbmRlckJsb2NrKiBSZW5kZXJNYXRoTUxPcGVy
YXRvcjo6bWFrZUdseXBoKFVDaGFyIGdseXBoLCBpbnQgc2l6ZSwgaW50IGNoYXJSZWxhdGl2ZSwg
aW50IHRvcFJlbGF0aXZlKQoreworICAgIFJlbmRlckJsb2NrKiBjb250YWluZXIgPSBuZXcgKHJl
bmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKG5vZGUoKSk7CisgICAgY29udGFpbmVyLT5zZXRTdHls
ZShtYWtlU3RhY2thYmxlU3R5bGUoc2l6ZSwgdG9wUmVsYXRpdmUpLnJlbGVhc2UoKSk7CisgICAg
YWRkQ2hpbGQoY29udGFpbmVyKTsKKyAgICBSZW5kZXJCbG9jayogcGFyZW50ID0gY29udGFpbmVy
OworICAgIGlmIChjaGFyUmVsYXRpdmUpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGNoYXJCbG9j
ayA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2sobm9kZSgpKTsKKyAgICAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBjaGFyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAg
ICAgIGNoYXJTdHlsZS0+aW5oZXJpdEZyb20oY29udGFpbmVyLT5zdHlsZSgpKTsKKyAgICAgICAg
Y2hhclN0eWxlLT5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAgIGNoYXJTdHlsZS0+
c2V0VG9wKExlbmd0aChjaGFyUmVsYXRpdmUsIEZpeGVkKSk7CisgICAgICAgIGNoYXJTdHlsZS0+
c2V0UG9zaXRpb24oUmVsYXRpdmVQb3NpdGlvbik7CisgICAgICAgIGNoYXJCbG9jay0+c2V0U3R5
bGUoY2hhclN0eWxlKTsKKyAgICAgICAgcGFyZW50LT5hZGRDaGlsZChjaGFyQmxvY2spOworICAg
ICAgICBwYXJlbnQgPSBjaGFyQmxvY2s7CisgICAgfQorICAgICAKKyAgICBSZW5kZXJUZXh0KiB0
ZXh0ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0KG5vZGUoKSwgU3RyaW5nSW1wbDo6
Y3JlYXRlKCZnbHlwaCwgMSkpOworICAgIHRleHQtPnNldFN0eWxlKGNvbnRhaW5lci0+c3R5bGUo
KSk7CisgICAgcGFyZW50LT5hZGRDaGlsZCh0ZXh0KTsKKyAgICByZXR1cm4gY29udGFpbmVyOwor
fQorCitpbnQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmJhc2VsaW5lUG9zaXRpb24oYm9vbCBmaXJz
dExpbmUsIGJvb2wgaXNSb290TGluZUJveCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNTdGFj
a2VkICYmIGZpcnN0Q2hpbGQoKSA/IGZpcnN0Q2hpbGQoKS0+YmFzZWxpbmVQb3NpdGlvbihmaXJz
dExpbmUsIGlzUm9vdExpbmVCb3gpIDogb2Zmc2V0SGVpZ2h0KCk7Cit9CisKK30KKworI2VuZGlm
CkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFs
ZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgUmVuZGVyTWF0aE1MT3BlcmF0b3JfaAorI2RlZmluZSBSZW5kZXJNYXRoTUxP
cGVyYXRvcl9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1M
QmxvY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgUmVuZGVyTWF0aE1M
T3BlcmF0b3IgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgeworcHVibGljOgorICAgIFJlbmRl
ck1hdGhNTE9wZXJhdG9yKE5vZGUqIGNvbnRhaW5lcik7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0
b3IoTm9kZSogY29udGFpbmVyLCBVQ2hhciBvcGVyYXRvckNoYXIpOworICAgIHZpcnR1YWwgYm9v
bCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdHJldGNoVG9IZWlnaHQoaW50IHBpeGVsSGVpZ2h0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsgCisgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxv
d2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3Q7CisgICAgdmlydHVhbCBpbnQg
YmFzZWxpbmVQb3NpdGlvbihib29sICwgYm9vbCkgY29uc3Q7ICAgIAorICAgIAorcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSZW5kZXJT
dHlsZT4gbWFrZVN0YWNrYWJsZVN0eWxlKGludCBzaXplLCBpbnQgdG9wUmVsYXRpdmUpOworICAg
IHZpcnR1YWwgUmVuZGVyQmxvY2sqIG1ha2VHbHlwaChVQ2hhciBnbHlwaCwgaW50IHNpemUgPSAw
LCBpbnQgY2hhclJlbGF0aXZlID0gMCwgaW50IHRvcFJlbGF0aXZlID0gMCk7CisgICAgCitwcml2
YXRlOgorICAgIGludCBtX3N0cmV0Y2hIZWlnaHQ7CisgICAgYm9vbCBtX2lzU3RhY2tlZDsKKyAg
ICBVQ2hhciBtX29wZXJhdG9yOworfTsKKworaW5saW5lIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB0
b1JlbmRlck1hdGhNTE9wZXJhdG9yKFJlbmRlck1hdGhNTEJsb2NrKiBibG9jaykKK3sgCisgICAg
QVNTRVJUKCFibG9jayB8fCBibG9jay0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTWF0aE1MT3BlcmF0b3IqPihibG9jayk7Cit9CisKK2lu
bGluZSBjb25zdCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdG9SZW5kZXJNYXRoTUxPcGVyYXRvcihj
b25zdCBSZW5kZXJNYXRoTUxCbG9jayogYmxvY2spCit7IAorICAgIEFTU0VSVCghYmxvY2sgfHwg
YmxvY2stPmlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IFJlbmRlck1hdGhNTE9wZXJhdG9yKj4oYmxvY2spOworfQorICAgIAorfQorCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorI2VuZGlmIC8vIFJlbmRlck1hdGhNTE9wZXJhdG9yX2gK
SW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWls
b3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5k
ZXJNYXRoTUxSb290LmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJNYXRoTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1l
c3BhY2UgTWF0aE1MTmFtZXM7CisKK2NvbnN0IGludCByYWRpY2FsQmFzZVBhZCA9IDM7CisKK1Jl
bmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QoTm9kZSAqZXhwcmVzc2lvbikgCis6IFJl
bmRlck1hdGhNTEJsb2NrKGV4cHJlc3Npb24pIAoreworfQorCit2b2lkIFJlbmRlck1hdGhNTFJv
b3Q6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogKQoreworICAg
IGlmIChpc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQWRkIGEgYmxvY2sgZm9yIHRoZSBpbmRleAor
ICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJs
b2NrKG5vZGUoKSk7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gaW5kZXhTdHlsZSA9IG1h
a2VCbG9ja1N0eWxlKCk7CisgICAgICAgIGluZGV4U3R5bGUtPnNldERpc3BsYXkoSU5MSU5FX0JM
T0NLKTsKKyAgICAgICAgaW5kZXhTdHlsZS0+c2V0VmVydGljYWxBbGlnbihUT1ApOworICAgICAg
ICBibG9jay0+c2V0U3R5bGUoaW5kZXhTdHlsZS5yZWxlYXNlKCkpOworICAgICAgICBSZW5kZXJC
bG9jazo6YWRkQ2hpbGQoYmxvY2spOworICAgICAgICAKKyAgICAgICAgLy8gdGhpcyBpcyB0aGUg
YmFzZSwgc28gd3JhcCBpdCBzbyB3ZSBjYW4gcGFkIGl0CisgICAgICAgIGJsb2NrID0gbmV3IChy
ZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhub2RlKCkpOworICAgICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IGJhc2VTdHlsZSA9IG1ha2VCbG9ja1N0eWxlKCk7CisgICAgICAgIGJhc2VTdHlsZS0+
c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgICAgICBiYXNlU3R5bGUtPnNldFBhZGRpbmdM
ZWZ0KExlbmd0aCgwLjUgKiAwLjc1ICwgUGVyY2VudCkpOworICAgICAgICBibG9jay0+c2V0U3R5
bGUoYmFzZVN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChi
bG9jayk7CisgICAgICAgIGJsb2NrLT5hZGRDaGlsZChjaGlsZCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gYWx3YXlzIGFkZCB0byB0aGUgaW5kZXgKKyAgICAgICAgZmlyc3RDaGlsZCgpLT5h
ZGRDaGlsZChjaGlsZCk7CisgICAgfQorfQordm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWludChQ
YWludEluZm8mIGluZm8sIGludCB0eCwgaW50IHR5KQoreworICAgIFJlbmRlck1hdGhNTEJsb2Nr
OjpwYWludChpbmZvICwgdHggLCB0eSk7CisgICAgCisgICAgdHggKz0geCgpOworICAgIHR5ICs9
IHkoKTsKKyAgICAKKyAgICBpbnQgbWF4SGVpZ2h0ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChs
YXN0Q2hpbGQoKSktPm9mZnNldEhlaWdodCgpOworICAgIGlmICghbWF4SGVpZ2h0KSB7CisgICAg
ICAgIC8vIGRlZmF1bHQgdG8gdGhlIGZvbnQgc2l6ZSBpbiBwaXhlbHMgaWYgd2UncmUgZW1wdHkK
KyAgICAgICAgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+Zm9udFNpemUoKTsKKyAgICB9CisgICAgaW50
IHdpZHRoID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChsYXN0Q2hpbGQoKSktPm9mZnNldFdpZHRo
KCk7CisgICAgCisgICAgaW50IGluZGV4V2lkdGggPSAwOworICAgIFJlbmRlck9iamVjdCogY3Vy
cmVudCA9IGZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAoY3VycmVudCAhPSBsYXN0Q2hpbGQoKSkg
eworICAgICAgICBpZiAoY3VycmVudC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CisgICAgICAgICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJy
ZW50KTsKKyAgICAgICAgICAgIGluZGV4V2lkdGggKz0gYm94LT5vZmZzZXRXaWR0aCgpOworICAg
ICAgICB9CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpOworICAgIH0K
KyAgICAKKyAgICBpbnQgc3RhcnQgPSB0eCArIGluZGV4V2lkdGgrcmFkaWNhbEJhc2VQYWQ7Cisg
ICAgSW50UG9pbnQgdG9wU3RhcnQoc3RhcnQgLCB0eSk7CisgICAgSW50UG9pbnQgYm90dG9tTGVm
dChzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0IC0gMC41ICogMC43NSAqIHN0eWxlKCktPmZvbnRTaXpl
KCkpICwgdHkgKyBtYXhIZWlnaHQgKyByYWRpY2FsQmFzZVBhZCk7CisgICAgSW50UG9pbnQgdG9w
TGVmdChzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0IC0gMC44ICogMC43NSAqIHN0eWxlKCktPmZvbnRT
aXplKCkpICwgc3RhdGljX2Nhc3Q8aW50Pih0eSArIG1heEhlaWdodCAvIDEuNikpOworICAgIElu
dFBvaW50IGxlZnRFbmQoc3RhdGljX2Nhc3Q8aW50PihzdGFydCAtIDAuNzUgKiBzdHlsZSgpLT5m
b250U2l6ZSgpKSAsIHN0YXRpY19jYXN0PGludD4odHkgKyBtYXhIZWlnaHQgLyAxLjYpKTsKKyAg
ICAKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAgICBpbmZv
LmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKHN0eWxlKCktPmNvbG9yKCksIHNSR0JDb2xvclNwYWNlKTsKKyAgICAK
KyAgICAvLyBkcmF3IHRvcAorICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUodG9wU3RhcnQgLCBJ
bnRQb2ludCh0b3BTdGFydC54KCkgKyB3aWR0aCAsIHR5KSk7CisgICAgLy8gZHJhdyBmcm9tIHRv
cCBsZWZ0IGNvcm5lciB0byBib3R0b20gcG9pbnQgb2YgcmFkaWNhbAorICAgIGluZm8uY29udGV4
dC0+ZHJhd0xpbmUodG9wU3RhcnQgLCBib3R0b21MZWZ0KTsKKyAgICAvLyBkcmF3IGZyb20gYm90
dG9tIHBvaW50IHRvIHRvcCBvZiBsZWZ0IHBhcnQgb2YgcmFkaWNhbCBiYXNlICJwb2NrZXQiCisg
ICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShib3R0b21MZWZ0ICwgdG9wTGVmdCk7CisgICAgLy8g
ZHJhdyB0byBlbmQKKyAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKHRvcExlZnQgLCBsZWZ0RW5k
KTsKKyAgICAKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKworCkluZGV4OiBX
ZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwv
UmVuZGVyTWF0aE1MUm9vdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyTWF0
aE1MUm9vdF9oCisjZGVmaW5lIFJlbmRlck1hdGhNTFJvb3RfaAorCisjaWYgRU5BQkxFKE1BVEhN
TCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK2NsYXNzIFJlbmRlck1hdGhNTFJvb3QgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxv
Y2sgeworcHVibGljOgorICAgIFJlbmRlck1hdGhNTFJvb3QoTm9kZSogZnJhY3Rpb24pOworICAg
IHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGlu
dCB0eCwgaW50IHR5KTsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQor
CisjZW5kaWYgLy8gUmVuZGVyTWF0aE1MUm9vdF9oCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MUm93LmgiCisKKyNpbmNsdWRlICJN
YXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9yLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitSZW5kZXJN
YXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhOb2RlKiByb3cpCisgICAgOiBSZW5kZXJNYXRoTUxC
bG9jayhyb3cpCit7Cit9CisKK2ludCBSZW5kZXJNYXRoTUxSb3c6Om5vbk9wZXJhdG9ySGVpZ2h0
KCkgY29uc3QKK3sKKyAgICBpbnQgbWF4SGVpZ2h0ID0gMDsKKyAgICBmb3IgKFJlbmRlck9iamVj
dCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzUmVuZGVyTWF0aE1MQmxvY2so
KSkgeworICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sqIGJsb2NrID0gdG9SZW5kZXJNYXRo
TUxCbG9jayhjdXJyZW50KTsKKyAgICAgICAgICAgIGludCBibG9ja0hlaWdodCA9IGJsb2NrLT5u
b25PcGVyYXRvckhlaWdodCgpOworICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMg
Ym94IGhhcyBhIGxhcmdlciBoZWlnaHQKKyAgICAgICAgICAgIGlmIChibG9ja0hlaWdodCA+IG1h
eEhlaWdodCkKKyAgICAgICAgICAgICAgICBtYXhIZWlnaHQgPSBibG9ja0hlaWdodDsKKyAgICAg
ICAgfSBlbHNlIGlmIChjdXJyZW50LT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKworICAgICAgICAg
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3Vy
cmVudCk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGJveCBoYXMgYSBs
YXJnZXIgaGVpZ2h0CisgICAgICAgICAgICBpZiAoYm94LT5vZmZzZXRIZWlnaHQoKSA+IG1heEhl
aWdodCkKKyAgICAgICAgICAgICAgICBtYXhIZWlnaHQgPSBib3gtPm9mZnNldEhlaWdodCgpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgIH0KKyAgICByZXR1cm4g
bWF4SGVpZ2h0OworfQorCisKKwordm9pZCBSZW5kZXJNYXRoTUxSb3c6OmxheW91dCgpIAorewor
ICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKyAgICAKKyAgICAvLyBjYWxjdWxhdGUgdGhlIG1h
eGltdW0gaGVpZ2h0CisgICAgaW50IG1heEhlaWdodCA9IG5vbk9wZXJhdG9ySGVpZ2h0KCk7Cisg
ICAgc3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChtYXhIZWlnaHQsIEZpeGVkKSk7CisKKyAgICAv
LyBub3RpZnkgY29udGFpbmVkIG9wZXJhdG9ycyB0aGV5IG1heSBuZWVkIHRvIHJlbGF5b3V0IHRo
ZWlyIHN0cmV0Y2hlZCBvcGVyYXRvcnMKKyAgICBpbnQgY2hpbGRDb3VudCA9IDA7CisgICAgaW50
IG9wZXJhdG9yQ291bnQgPSAwOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmly
c3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkgewor
ICAgICAgICBjaGlsZENvdW50Kys7CisgICAgICAgIGlmIChjdXJyZW50LT5pc1JlbmRlck1hdGhN
TEJsb2NrKCkpIHsKKyAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrKiBibG9jayA9IHRvUmVu
ZGVyTWF0aE1MQmxvY2soY3VycmVudCk7CisgICAgICAgICAgICBibG9jay0+c3RyZXRjaFRvSGVp
Z2h0KG1heEhlaWdodCk7CisgICAgICAgICAgICBpZiAoYmxvY2stPmlzUmVuZGVyTWF0aE1MT3Bl
cmF0b3IoKSkgCisgICAgICAgICAgICAgICAgb3BlcmF0b3JDb3VudCsrOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAg
IG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7CisgICAgUmVuZGVyQmxvY2s6OmxheW91
dCgpOworCisgICAgLy8gbWFrZSBhIHNlY29uZCBwYXNzIHdpdGggdGhlIHJlYWwgaGVpZ2h0IG9m
IHRoZSBvcGVyYXRvcnMKKyAgICBpbnQgb3BlcmF0b3JIZWlnaHQgPSAwOworICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3Vy
cmVudC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY3VycmVudC0+aXNSZW5kZXJNYXRo
TUxCbG9jaygpKSB7CisgICAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayogYmxvY2sgPSB0b1Jl
bmRlck1hdGhNTEJsb2NrKGN1cnJlbnQpOworICAgICAgICAgICAgaWYgKCFibG9jay0+aGFzQmFz
ZSgpICYmICFibG9jay0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKSB7CisKKyAgICAgICAgICAg
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhpcyBib3ggaGFzIGEgbGFyZ2VyIGhlaWdodAorICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+b2Zmc2V0SGVpZ2h0KCkgPiBtYXhIZWlnaHQpCisgICAg
ICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGJsb2NrLT5vZmZzZXRIZWlnaHQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChibG9jay0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigp
KQorICAgICAgICAgICAgICAgIGlmIChibG9jay0+b2Zmc2V0SGVpZ2h0KCkgPiBvcGVyYXRvckhl
aWdodCkKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JIZWlnaHQgPSBibG9jay0+b2Zmc2V0
SGVpZ2h0KCk7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC0+aXNCb3hNb2RlbE9iamVjdCgp
KSB7CisKKyAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KGN1cnJlbnQpOworCisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYg
dGhpcyBib3ggaGFzIGEgbGFyZ2VyIGhlaWdodAorICAgICAgICAgICAgaWYgKGJveC0+b2Zmc2V0
SGVpZ2h0KCkgPiBtYXhIZWlnaHQpCisgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gYm94LT5v
ZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBpZiAoY2hpbGRDb3VudCA+IDAgJiYgY2hpbGRDb3VudCA9PSBvcGVyYXRvckNvdW50KSB7
CisgICAgICAgIC8vIHdlIGhhdmUgb25seSBvcGVyYXRvcnMsIHNvIHNldCB0aGUgbWF4IGhlaWdo
dAorICAgICAgICBtYXhIZWlnaHQgPSBvcGVyYXRvckhlaWdodDsKKyAgICB9CisgICAgCisgICAg
aW50IHN0cmV0Y2hIZWlnaHQgPSBtYXhIZWlnaHQ7CisgICAgCisgICAgLy8gc3RyZXRjaCB0aGUg
b3BlcmF0b3JzIGFnYWluCisgICAgLy8gYWxzbywgY2FsY3VsYXRlIHRoZSByb3cgaGVpZ2h0IG1h
eGltdW0KKyAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsgY3Vy
cmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGN1
cnJlbnQtPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkgeworICAgICAgICAgICAgUmVuZGVyTWF0aE1M
QmxvY2sqIGJsb2NrID0gdG9SZW5kZXJNYXRoTUxCbG9jayhjdXJyZW50KTsKKyAgICAgICAgICAg
IGlmIChibG9jay0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKSB7CisgICAgICAgICAgICAgICAg
UmVuZGVyTWF0aE1MT3BlcmF0b3IqIG1hdGhvcCA9IHRvUmVuZGVyTWF0aE1MT3BlcmF0b3IoYmxv
Y2spOworICAgICAgICAgICAgICAgIG1hdGhvcC0+c3RyZXRjaFRvSGVpZ2h0KHN0cmV0Y2hIZWln
aHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBibG9jay0+c3RyZXRj
aFRvSGVpZ2h0KHN0cmV0Y2hIZWlnaHQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1
cnJlbnQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiB0aGlzIGJveCBoYXMgYSBsYXJnZXIgaGVpZ2h0CisgICAgICAgICAgICAgICAgaWYgKGJv
eC0+b2Zmc2V0SGVpZ2h0KCkgPiBtYXhIZWlnaHQpCisgICAgICAgICAgICAgICAgICAgIG1heEhl
aWdodCA9IGJveC0+b2Zmc2V0SGVpZ2h0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSBpZiAoY3VycmVudC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CisKKyAgICAgICAgICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnJlbnQpOwor
CisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhpcyBib3ggaGFzIGEgbGFyZ2VyIGhl
aWdodAorICAgICAgICAgICAgaWYgKGJveC0+b2Zmc2V0SGVpZ2h0KCkgPiBtYXhIZWlnaHQpCisg
ICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gYm94LT5vZmZzZXRIZWlnaHQoKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBzdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKG1heEhlaWdodCwg
Rml4ZWQpKTsKKyAgICAKKyAgICAvLyBEbyB0aGUgZmluYWwgbGF5b3V0CisgICAgc2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JM
YXlvdXQoKTsKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CisgICAgCit9CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShNQVRITUwpCisKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxv
d3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJNYXRoTUxSb3dfaAorI2RlZmluZSBSZW5kZXJNYXRo
TUxSb3dfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJs
b2NrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFJlbmRlck1hdGhNTFJv
dyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyTWF0aE1M
Um93KE5vZGUqIGNvbnRhaW5lcik7CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUm93
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgaW50IG5vbk9wZXJhdG9ySGVp
Z2h0KCkgY29uc3Q7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworfTsK
KyAgICAKK30KKworCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKyNlbmRpZiAvLyBSZW5kZXJN
YXRoTUxSb3dfaApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oIgorCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitj
b25zdCBpbnQgcmFkaWNhbEJhc2VQYWQgPSAzOworICAgIAorUmVuZGVyTWF0aE1MU3F1YXJlUm9v
dDo6UmVuZGVyTWF0aE1MU3F1YXJlUm9vdChOb2RlICpleHByZXNzaW9uKSAKKyAgICA6IFJlbmRl
ck1hdGhNTEJsb2NrKGV4cHJlc3Npb24pIAoreworfQorCit2b2lkIFJlbmRlck1hdGhNTFNxdWFy
ZVJvb3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgaW50IHR4LCBpbnQgdHkpCit7CisgICAgUmVu
ZGVyTWF0aE1MQmxvY2s6OnBhaW50KGluZm8sIHR4LCB0eSk7CisgICAKKyAgICB0eCArPSB4KCk7
CisgICAgdHkgKz0geSgpOworCisgICAgaW50IG1heEhlaWdodCA9IDA7CisgICAgaW50IHdpZHRo
ID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7CisgICAgd2hp
bGUgKGN1cnJlbnQpIHsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkg
eworICAgICAgICAgICAgCisgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyZW50KTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgYm94IGhhcyBhIGxhcmdlciBoZWlnaHQKKyAgICAg
ICAgICAgIGlmIChib3gtPm9mZnNldEhlaWdodCgpID4gbWF4SGVpZ2h0KQorICAgICAgICAgICAg
ICAgIG1heEhlaWdodCA9IGJveC0+b2Zmc2V0SGVpZ2h0KCk7CisgICAgICAgICAgICB3aWR0aCAr
PSBib3gtPm9mZnNldFdpZHRoKCk7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudCA9IGN1cnJl
bnQtPm5leHRTaWJsaW5nKCk7CisgICAgfQorICAgIC8vIGRlZmF1bHQgdG8gdGhlIGZvbnQgc2l6
ZSBpbiBwaXhlbHMgaWYgd2UncmUgZW1wdHkKKyAgICBpZiAoIW1heEhlaWdodCkKKyAgICAgICAg
bWF4SGVpZ2h0ID0gc3R5bGUoKS0+Zm9udFNpemUoKTsKKyAgICAKKyAgICBpbnQgZnJvbnRXaWR0
aCA9IHN0YXRpY19jYXN0PGludD4oc3R5bGUoKS0+Zm9udFNpemUoKSAqIDAuNzUpOworICAgIElu
dFBvaW50IHRvcFN0YXJ0KHR4ICsgZnJvbnRXaWR0aCAsIHR5KTsKKyAgICBJbnRQb2ludCBib3R0
b21MZWZ0KHN0YXRpY19jYXN0PGludD4odHggKyBmcm9udFdpZHRoICogMC41KSAsIHR5ICsgbWF4
SGVpZ2h0ICsgcmFkaWNhbEJhc2VQYWQpOworICAgIEludFBvaW50IHRvcExlZnQoc3RhdGljX2Nh
c3Q8aW50Pih0eCArIGZyb250V2lkdGggKiAwLjIpICwgdHkgKyBzdGF0aWNfY2FzdDxpbnQ+KG1h
eEhlaWdodCAvIDIuMCkpOworICAgIEludFBvaW50IGxlZnRFbmQodHggLCB0eSArIHN0YXRpY19j
YXN0PGludD4obWF4SGVpZ2h0IC8gMi4wKSk7CisgICAgCisgICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VUaGlja25lc3MoMS4wZik7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZSgpLT5j
b2xvcigpLCBzUkdCQ29sb3JTcGFjZSk7CisgICAgCisgICAgLy8gZHJhdyB0b3AKKyAgICBpbmZv
LmNvbnRleHQtPmRyYXdMaW5lKHRvcFN0YXJ0ICwgSW50UG9pbnQodG9wU3RhcnQueCgpICsgd2lk
dGggLCB0eSkpOworICAgIC8vIGRyYXcgZnJvbSB0b3AgbGVmdCBjb3JuZXIgdG8gYm90dG9tIHBv
aW50IG9mIHJhZGljYWwKKyAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKHRvcFN0YXJ0ICwgYm90
dG9tTGVmdCk7CisgICAgLy8gZHJhdyBmcm9tIGJvdHRvbSBwb2ludCB0byB0b3Agb2YgbGVmdCBw
YXJ0IG9mIHJhZGljYWwgYmFzZSAicG9ja2V0IgorICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUo
Ym90dG9tTGVmdCAsIHRvcExlZnQpOworICAgIC8vIGRyYXcgdG8gZW5kCisgICAgaW5mby5jb250
ZXh0LT5kcmF3TGluZSh0b3BMZWZ0ICwgbGVmdEVuZCk7CisgICAgCit9CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNQVRITUwpCisKKyAgICAgICAgCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJNYXRoTUxTcXVhcmVSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVy
TWF0aE1MU3F1YXJlUm9vdC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVy
TWF0aE1MU3F1YXJlUm9vdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIFJlbmRlck1h
dGhNTFNxdWFyZVJvb3RfaAorI2RlZmluZSBSZW5kZXJNYXRoTUxTcXVhcmVSb290X2gKKworI2lm
IEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBSZW5kZXJNYXRoTUxTcXVhcmVSb290IDogcHVi
bGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNYXRoTUxTcXVhcmVS
b290KE5vZGUqIGZyYWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
aW50IHR4LCBpbnQgdHkpOworfTsKKyAgICAKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwp
CisKKyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxTcXVhcmVSb290X2gKKworCisKSW5kZXg6IFdlYkNv
cmUvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9t
YXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0
aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2ku
Y29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRo
TUxTdWJTdXAuaCIKKworI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIk1hdGhN
TE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFi
bGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJs
ZVJvdy5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRl
clRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIE1h
dGhNTE5hbWVzOworCitzdGF0aWMgY29uc3QgaW50IHRvcEFkanVzdERpdmlzb3IgPSAzOworc3Rh
dGljIGNvbnN0IGludCBzdWJzdXBTY3JpcHRNYXJnaW4gPSAxOworCisgICAgCitSZW5kZXJNYXRo
TUxTdWJTdXA6OlJlbmRlck1hdGhNTFN1YlN1cChOb2RlICpzdWJzdXApIAorICAgIDogUmVuZGVy
TWF0aE1MQmxvY2soc3Vic3VwKQorICAgICwgbV9zY3JpcHRzKDApCit7CisgICAgRWxlbWVudCog
ZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihzdWJzdXApOworICAgIC8vIERldGVybWlu
ZSB3aGF0IGtpbmQgb2YgdW5kZXIvb3ZlciBleHByZXNzaW9uIHdlIGhhdmUgYnkgZWxlbWVudCBu
YW1lCisgICAgbV9raW5kID0gU3ViU3VwOworICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUo
TWF0aE1MTmFtZXM6Om1zdWJUYWcpKQorICAgICAgICBtX2tpbmQgPSBTdWI7CisgICAgZWxzZSBp
ZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptc3VwVGFnKSkKKyAgICAgICAg
bV9raW5kID0gU3VwOworfQorCit2b2lkIFJlbmRlck1hdGhNTFN1YlN1cDo6YWRkQ2hpbGQoUmVu
ZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKK3sKKyAgICBpZiAo
Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgIC8vIHdlIGFscmVhZHkgaGF2ZSBhIGJhc2UsIHNvIHRo
aXMgaXMgdGhlIHN1cGVyL3N1YnNjcmlwdHMKKyAgICAgICAgCisgICAgICAgIGlmIChtX2tpbmQg
PT0gU3ViU3VwKSB7CisgICAgICAgICAgICBpZiAoIW1fc2NyaXB0cykgeworICAgICAgICAgICAg
ICAgIG1fc2NyaXB0cyA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9k
ZSgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHNjcmlwdHNTdHlsZSA9
IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBzY3JpcHRzU3R5bGUtPmlu
aGVyaXRGcm9tKHN0eWxlKCkpOworICAgICAgICAgICAgICAgIHNjcmlwdHNTdHlsZS0+c2V0RGlz
cGxheShJTkxJTkVfQkxPQ0spOworICAgICAgICAgICAgICAgIHNjcmlwdHNTdHlsZS0+c2V0VmVy
dGljYWxBbGlnbihNSURETEUpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBpbiBlbXMKKyAgICAgICAgICAgICAgICBzY3JpcHRzU3R5bGUtPnNldE1hcmdpbkxlZnQo
TGVuZ3RoKHN1YnN1cFNjcmlwdE1hcmdpbiwgRml4ZWQpKTsKKyAgICAgICAgICAgICAgICBzY3Jp
cHRzU3R5bGUtPnNldFRleHRBbGlnbihMRUZUKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdHMt
PnNldFN0eWxlKHNjcmlwdHNTdHlsZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIFJlbmRl
ck1hdGhNTEJsb2NrOjphZGRDaGlsZChtX3NjcmlwdHMsIGJlZm9yZUNoaWxkKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyQmxvY2sqIHNjcmlwdCA9IG5l
dyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKKyAgICAgICAgICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gc2NyaXB0U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7
CisgICAgICAgICAgICBzY3JpcHRTdHlsZS0+aW5oZXJpdEZyb20obV9zY3JpcHRzLT5zdHlsZSgp
KTsKKyAgICAgICAgICAgIHNjcmlwdFN0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICAgICAg
ICAgIHNjcmlwdC0+c2V0U3R5bGUoc2NyaXB0U3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgbV9zY3JpcHRzLT5hZGRDaGlsZChzY3JpcHQsIG1fc2NyaXB0cy0+Zmly
c3RDaGlsZCgpKTsKKyAgICAgICAgICAgIHNjcmlwdC0+YWRkQ2hpbGQoY2hpbGQpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrOjphZGRDaGlsZChjaGlsZCwg
YmVmb3JlQ2hpbGQpOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAgICBSZW5kZXJNYXRo
TUxCbG9jayogd3JhcHBlciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2so
bm9kZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiB3cmFwcGVyU3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIHdyYXBwZXJTdHlsZS0+aW5oZXJpdEZyb20oc3R5
bGUoKSk7CisgICAgICAgIHdyYXBwZXJTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOwor
ICAgICAgICB3cmFwcGVyU3R5bGUtPnNldFZlcnRpY2FsQWxpZ24oTUlERExFKTsKKyAgICAgICAg
d3JhcHBlci0+c2V0U3R5bGUod3JhcHBlclN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlbmRl
ck1hdGhNTEJsb2NrOjphZGRDaGlsZCh3cmFwcGVyLCBiZWZvcmVDaGlsZCk7CisgICAgICAgIHdy
YXBwZXItPmFkZENoaWxkKGNoaWxkKTsKKyAgICB9Cit9CisKK3ZvaWQgIFJlbmRlck1hdGhNTFN1
YlN1cDo6c3RyZXRjaFRvSGVpZ2h0KGludCBoZWlnaHQpCit7CisgICAgUmVuZGVyT2JqZWN0KiBi
YXNlID0gZmlyc3RDaGlsZCgpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGlmIChiYXNlLT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpIHsKKyAgICAgICAgUmVuZGVy
TWF0aE1MQmxvY2sqIGJsb2NrID0gdG9SZW5kZXJNYXRoTUxCbG9jayhiYXNlKTsKKyAgICAgICAg
YmxvY2stPnN0cmV0Y2hUb0hlaWdodChzdGF0aWNfY2FzdDxpbnQ+KDEuMiAqIGhlaWdodCkpOwor
ICAgIH0KKyAgICBpZiAoaGVpZ2h0ID4gMCAmJiBtX2tpbmQgPT0gU3ViU3VwICYmIG1fc2NyaXB0
cykgeworCisgICAgICAgIFJlbmRlck9iamVjdCogc2NyaXB0ID0gbV9zY3JpcHRzLT5maXJzdENo
aWxkKCk7CisgICAgICAgIGlmIChzY3JpcHQpIHsKKyAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0
aGUgc2NyaXB0IGhlaWdodCB3aXRob3V0IHRoZSBjb250YWluZXIgbWFyZ2lucworICAgICAgICAg
ICAgaW50IHRvcEhlaWdodCA9IDA7CisgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHRvcCA9IHNj
cmlwdDsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSB0b3AtPmZpcnN0Q2hpbGQo
KTsKKyAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7
CisgICAgICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3QoY2hpbGQpOworICAgICAgICAgICAgICAgIHRvcEhlaWdodCA9IGJveC0+b2Zm
c2V0SGVpZ2h0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgYm90dG9tSGVpZ2h0
ID0gMDsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogYm90dG9tID0gc2NyaXB0OworICAgICAg
ICAgICAgY2hpbGQgPSBib3R0b20tPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGlmIChjaGls
ZCAmJiBjaGlsZC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY2hpbGQpOworICAg
ICAgICAgICAgICAgIGJvdHRvbUhlaWdodCA9IGJveC0+b2Zmc2V0SGVpZ2h0KCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCB0b3BBZGp1c3QgPSB0b3BIZWln
aHQgLyB0b3BBZGp1c3REaXZpc29yOworICAgICAgICAgICAgdG9wLT5zdHlsZSgpLT5zZXRNYXJn
aW5Ub3AoTGVuZ3RoKC10b3BBZGp1c3QsIEZpeGVkKSk7CisgICAgICAgICAgICB0b3AtPnN0eWxl
KCktPnNldE1hcmdpbkJvdHRvbShMZW5ndGgoaGVpZ2h0IC0gdG9wSGVpZ2h0ICsgdG9wQWRqdXN0
LCBGaXhlZCkpOworICAgICAgICAgICAgaWYgKHRvcC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7Cisg
ICAgICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvcEJveCA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3QodG9wKTsKKyAgICAgICAgICAgICAgICB0b3BCb3gtPnVwZGF0ZUJveE1vZGVs
SW5mb0Zyb21TdHlsZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zY3JpcHRzLT5z
ZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICAgICAgICAgIG1fc2NyaXB0
cy0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKKyAgICBzZXROZWVkc0xheW91dEFuZFBy
ZWZXaWR0aHNSZWNhbGMoKTsKKyAgICBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOwor
fQorCitpbnQgUmVuZGVyTWF0aE1MU3ViU3VwOjpub25PcGVyYXRvckhlaWdodCgpIGNvbnN0IAor
eworICAgIHJldHVybiAwOworfQorCit2b2lkIFJlbmRlck1hdGhNTFN1YlN1cDo6bGF5b3V0KCkg
Cit7CisKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CisgICAgCisgICAgaWYgKG1fa2luZCA9
PSBTdWJTdXApIHsKKyAgICAgICAgaW50IHdpZHRoID0gMDsKKyAgICAgICAgUmVuZGVyT2JqZWN0
KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOworICAgICAgICB3aGlsZSAoY3VycmVudCkgeworICAg
ICAgICAgICAgaWYgKGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkgeworCisgICAgICAgICAg
ICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
Y3VycmVudCk7CisgICAgICAgICAgICAgICAgd2lkdGggKz0gYm94LT5vZmZzZXRXaWR0aCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5n
KCk7CisgICAgICAgIH0KKyAgICAgICAgd2lkdGgrKzsKKyAgICAgICAgLy8gMSArIG1hcmdpbiBv
ZiBzY3JpcHRzCisgICAgICAgIGlmIChtX3NjcmlwdHMpIAorICAgICAgICAgICAgd2lkdGggKz0g
c3Vic3VwU2NyaXB0TWFyZ2luOworICAgICAgICBzdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgod2lk
dGgsIEZpeGVkKSk7CisKKyAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxj
KCk7CisgICAgICAgIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7CisgICAgICAgIFJl
bmRlckJsb2NrOjpsYXlvdXQoKTsKKyAgICB9ICAgIAorfQorCitpbnQgUmVuZGVyTWF0aE1MU3Vi
U3VwOjpiYXNlbGluZVBvc2l0aW9uKGJvb2wgLCBib29sKSBjb25zdAoreworICAgIFJlbmRlck9i
amVjdCogYmFzZSA9IGZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIWJhc2UpIAorICAgICAgICByZXR1
cm4gb2Zmc2V0SGVpZ2h0KCk7CisgICAgYmFzZSA9IGJhc2UtPmZpcnN0Q2hpbGQoKTsKKyAgICBp
ZiAoIWJhc2UpIAorICAgICAgICByZXR1cm4gb2Zmc2V0SGVpZ2h0KCk7CisgICAgCisgICAgaW50
IGJhc2VsaW5lID0gb2Zmc2V0SGVpZ2h0KCk7CisgICAgCisgICAgc3dpdGNoIChtX2tpbmQpIHsK
KyAgICBjYXNlIFN1YlN1cDoKKyAgICAgICAgaWYgKG1fc2NyaXB0cykgeworICAgICAgICAgICAg
aW50IHRvcEFkanVzdCA9IDA7CisgICAgICAgICAgICBpZiAoYmFzZS0+aXNCb3hNb2RlbE9iamVj
dCgpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVu
ZGVyQm94TW9kZWxPYmplY3QoYmFzZSk7CisgICAgICAgICAgICAgICAgdG9wQWRqdXN0ID0gKG1f
c2NyaXB0cy0+b2Zmc2V0SGVpZ2h0KCkgLSBib3gtPm9mZnNldEhlaWdodCgpKSAvIDI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdG9wQWRqdXN0ICsgKGJhc2UgPyBiYXNlLT5i
YXNlbGluZVBvc2l0aW9uKHRydWUpIDogMCkgKyA0OworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3VwOgorICAgICAgICBpZiAoYmFzZSkgeworICAgICAgICAgICAgYmFzZWxp
bmUgPSBiYXNlLT5iYXNlbGluZVBvc2l0aW9uKHRydWUpICsgNDsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgZXh0cmEgYW1vdW50IG9mIHRoZSBzdXBlcnNjcmlwdCBhc2NlbmRpbmcgYWJvdmUg
dGhlIGJhc2UncyBib3gKKyAgICAgICAgICAgIC8vIGlzbid0IHRha2VuIGludG8gYWNjb3VudC4g
IFRoaXMgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgaW4gYSBtb3JlIHJlbGlhYmxlCisgICAgICAgICAg
ICAvLyB3YXkuCisgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHN1cCA9IGJhc2UtPm5leHRTaWJs
aW5nKCk7CisgICAgICAgICAgICBpZiAoc3VwICYmIHN1cC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7
CisgICAgICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3Qoc3VwKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZSArPSBzdGF0aWNfY2Fz
dDxpbnQ+KGJveC0+b2Zmc2V0SGVpZ2h0KCkgKiAwLjUpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYmFzZWxpbmUrKzsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1
YjoKKyAgICAgICAgaWYgKGJhc2UpIAorICAgICAgICAgICAgYmFzZWxpbmUgPSBiYXNlLT5iYXNl
bGluZVBvc2l0aW9uKHRydWUpICsgNDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGJhc2VsaW5l
OworICAgIAorfQorICAgIAorfSAgICAKKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCkluZGV4
OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
bWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2ku
Y29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRl
ZiBSZW5kZXJNYXRoTUxTdWJTdXBfaAorI2RlZmluZSBSZW5kZXJNYXRoTUxTdWJTdXBfaAorCisj
aWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCisjaW5j
bHVkZSAiUmVuZGVyVGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3Mg
UmVuZGVyTWF0aE1MU3ViU3VwIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK3B1YmxpYzoK
KyAgICBSZW5kZXJNYXRoTUxTdWJTdXAoTm9kZSogZnJhY3Rpb24pOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCk7CisgICAgdmlydHVhbCBib29sIGhhc0Jhc2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBpbnQgbm9uT3BlcmF0b3JIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RyZXRjaFRvSGVpZ2h0KGludCBwaXhlbEhlaWdodCk7CisgICAgdmlydHVhbCBpbnQg
YmFzZWxpbmVQb3NpdGlvbihib29sICwgYm9vbCkgY29uc3Q7ICAgIAorCitwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIAorcHJpdmF0ZToKKyAgICBlbnVtIFN1YlN1
cFR5cGUgeyBTdWIsIFN1cCwgU3ViU3VwIH07CisgICAgU3ViU3VwVHlwZSBtX2tpbmQ7CisgICAg
UmVuZGVyQmxvY2sqIG1fc2NyaXB0czsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUFUSE1MKQorCisjZW5kaWYgLy8gUmVuZGVyTWF0aE1MU3ViU3VwX2gKKwpJbmRleDogV2ViQ29y
ZS9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBt
aWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJl
bmRlck1hdGhNTFVuZGVyT3Zlci5oIgorCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5j
bHVkZSAiTWF0aE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1l
c3BhY2UgTWF0aE1MTmFtZXM7CisgICAgCitzdGF0aWMgY29uc3QgZG91YmxlIHVuZGVyTm9ybWFs
QWRqdXN0ID0gLTAuNDsKK3N0YXRpYyBjb25zdCBkb3VibGUgZm9udEFkanVzdCA9IDAuNzU7Cisg
ICAgCitSZW5kZXJNYXRoTUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihOb2RlKiBl
eHByZXNzaW9uKSAKKyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGV4cHJlc3Npb24pIAoreworICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZXhwcmVzc2lvbik7Cisg
ICAgLy8gRGV0ZXJtaW5lIHdoYXQga2luZCBvZiB1bmRlci9vdmVyIGV4cHJlc3Npb24gd2UgaGF2
ZSBieSBlbGVtZW50IG5hbWUKKyAgICBtX2tpbmQgPSBVbmRlcjsKKyAgICBpZiAoZWxlbWVudC0+
aGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptb3ZlclRhZykpCisgICAgICAgIG1fa2luZCA9IE92
ZXI7CisgICAgZWxzZSBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptdW5k
ZXJvdmVyVGFnKSkKKyAgICAgICAgbV9raW5kID0gVW5kZXJPdmVyOworfQorCit2b2lkIFJlbmRl
ck1hdGhNTFVuZGVyT3Zlcjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCkKK3sKKyAgICAKKyAgICBSZW5kZXJNYXRoTUxCbG9jayogcm93ID0g
bmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayhub2RlKCkpOworICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gcm93U3R5bGUgPSBtYWtlQmxvY2tTdHlsZSgpOworICAgIHJvdy0+c2V0
U3R5bGUocm93U3R5bGUucmVsZWFzZSgpKTsKKyAgICAKKyAgICAvLyBsb29rIHRocm91Z2ggdGhl
IGNoaWxkcmVuIGZvciByZW5kZXJlZCBlbGVtZW50cworICAgIGludCBibG9ja3MgPSAwOworICAg
IFJlbmRlck9iamVjdCogY3VycmVudCA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAo
Y3VycmVudCkgeworICAgICAgICBibG9ja3MrKzsKKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQt
Pm5leHRTaWJsaW5nKCk7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoYmxvY2tzKSB7CisgICAg
Y2FzZSAwOgorICAgICAgICAvLyB0aGlzIGlzIHRoZSBiYXNlIHNvIGp1c3QgYXBwZW5kIGl0Cisg
ICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGJlZm9yZUNoaWxkKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICAvLyB0aGUgdW5kZXIgb3Igb3ZlcgorICAgICAg
ICAvLyBGSVhNRTogdGV4dC1hbGlnbjogY2VudGVyIGRvZXMgbm90IHdvcmsKKyAgICAgICAgcm93
LT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsKKyAgICAgICAgaWYgKG1fa2luZCA9PSBP
dmVyKSB7CisgICAgICAgICAgICAvLyBhZGQgdGhlIG92ZXIgYXMgZmlyc3QKKyAgICAgICAgICAg
IFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGZpcnN0Q2hpbGQoKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyBhZGQgdGhlIHVuZGVyIGFzIGxhc3QKKyAgICAgICAgICAgIFJl
bmRlckJsb2NrOjphZGRDaGlsZChyb3csIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIC8vIHRoZSB1bmRlciBvciBvdmVyCisgICAg
ICAgIC8vIEZJWE1FOiB0ZXh0LWFsaWduOiBjZW50ZXIgZG9lcyBub3Qgd29yaworICAgICAgICBy
b3ctPnN0eWxlKCktPnNldFRleHRBbGlnbihDRU5URVIpOworICAgICAgICBpZiAobV9raW5kID09
IFVuZGVyT3ZlcikgeworICAgICAgICAgICAgLy8gYWRkIHRoZSBvdmVyIGFzIGZpcnN0CisgICAg
ICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93LCBmaXJzdENoaWxkKCkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gd2UgcmVhbGx5IHNob3VsZG4ndCBnZXQgaGVyZSBh
cyBvbmx5IG11bmRlcm92ZXIgc2hvdWxkIGhhdmUgdGhyZWUgY2hpbGRyZW4KKyAgICAgICAgICAg
IFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBtc3Vic3VwIHNob3VsZG4ndCBo
YXZlIG1vcmUgdGhhbiB0aHJlZSBjaGlsZHJlbi4gIEluIHRoZW9yeSB3ZSBzaG91bGRuJ3QgCisg
ICAgICAgIC8vIGdldCBoZXJlIGlmIHRoZSBNYXRoTUwgaXMgY29ycmVjdGx5IGZvcm1lZCwgYnV0
IHRoYXQgaXNuJ3QgYSBndWFyYW50ZWUuCisgICAgICAgIC8vIFdlIHdpbGwgdHJlYXQgdGhpcyBh
cyBhbm90aGVyIHVuZGVyIGVsZW1lbnQgYW5kIHRoZXknbGwgZ2V0IHNvbWV0aGluZyBmdW5reS4K
KyAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdywgYmVmb3JlQ2hpbGQpOworICAgIH0K
KyAgICByb3ctPmFkZENoaWxkKGNoaWxkKTsgICAgCit9CisKK2lubGluZSBpbnQgZ2V0T2Zmc2V0
SGVpZ2h0KFJlbmRlck9iamVjdCogb2JqKSAKK3sKKyAgICBpZiAob2JqLT5pc0JveE1vZGVsT2Jq
ZWN0KCkpIHsKKyAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3Qob2JqKTsKKyAgICAgICAgcmV0dXJuIGJveC0+b2Zmc2V0SGVpZ2h0KCk7Cisg
ICAgfQorICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgIFJlbmRlck1hdGhNTFVuZGVyT3Zl
cjo6c3RyZXRjaFRvSGVpZ2h0KGludCBoZWlnaHQpCit7CisKKyAgICBSZW5kZXJPYmplY3QqIGJh
c2UgPSBmaXJzdENoaWxkKCk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKG1fa2luZCAhPSBVbmRlcikgCisgICAgICAgIGJhc2UgPSBiYXNlLT5uZXh0U2libGluZygp
OworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIHVzZSB0aGUgY2hpbGQg
b2YgdGhlIHJvdyB3aGljaCBpcyB0aGUgYWN0dWFsIGJhc2UKKyAgICBiYXNlID0gYmFzZS0+Zmly
c3RDaGlsZCgpOworICAgIAorICAgIGlmIChiYXNlICYmIGJhc2UtPmlzUmVuZGVyTWF0aE1MQmxv
Y2soKSkgeworICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayogYmxvY2sgPSB0b1JlbmRlck1hdGhN
TEJsb2NrKGJhc2UpOworICAgICAgICBibG9jay0+c3RyZXRjaFRvSGVpZ2h0KGhlaWdodCk7Cisg
ICAgICAgIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgICAgICBzZXROZWVkc0xh
eW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICAgICAgbWFya0NvbnRhaW5pbmdCbG9ja3NG
b3JMYXlvdXQoKTsKKyAgICB9Cit9CisKKwordm9pZCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6Omxh
eW91dCgpIAoreworCisgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworICAgIFJlbmRlck9iamVj
dCogb3ZlciA9IDA7CisgICAgUmVuZGVyT2JqZWN0KiBiYXNlID0gMDsKKyAgICBzd2l0Y2ggKG1f
a2luZCkgeworICAgIGNhc2UgT3ZlcjoKKyAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxjdWxhdGUg
dGhlIGJhc2VsaW5lIG92ZXIgdGhlIG92ZXIgdmVyc3VzIHRoZSBzdGFydCBvZiB0aGUgYmFzZSBh
bmQgCisgICAgICAgIC8vIGFkanVzdCB0aGUgcGxhY2VtZW50IG9mIHRoZSBiYXNlLgorICAgICAg
ICBvdmVyID0gZmlyc3RDaGlsZCgpOworICAgICAgICBpZiAob3ZlcikgeworICAgICAgICAgICAg
Ly8gRklYTUU6IGRlc2NlbmRpbmcgZ2x5cGhzIGludHJ1ZGUgaW50byBiYXNlIChlLmcuIGxvd2Vy
Y2FzZSB5IG92ZXIgYmFzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiBiYXNlcyB0aGF0IGFzY2Vu
ZCBoaWdoZXIgdGhhbiB0aGUgbGluZSBib3ggaW50cnVkZSBpbnRvIHRoZSBvdmVyCisgICAgICAg
ICAgICBpbnQgb3ZlclNwYWNpbmcgPSBzdGF0aWNfY2FzdDxpbnQ+KDAuNjY3ICogKGdldE9mZnNl
dEhlaWdodChvdmVyKSAtIG92ZXItPmZpcnN0Q2hpbGQoKS0+YmFzZWxpbmVQb3NpdGlvbih0cnVl
KSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBiYXNlIHJvdyB3cmFwcGVyCisgICAg
ICAgICAgICBiYXNlID0gb3Zlci0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIGlmIChiYXNl
KSB7CisgICAgICAgICAgICAgICAgaWYgKG92ZXJTcGFjaW5nPjApIAorICAgICAgICAgICAgICAg
ICAgICBiYXNlLT5zdHlsZSgpLT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKC1vdmVyU3BhY2luZywgRml4
ZWQpKTsKKyAgICAgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgICAgICBiYXNlLT5z
dHlsZSgpLT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFVuZGVyOgor
ICAgICAgICAvLyBGSVhNRTogTm9uLWFzY2VuZGluZyBnbHlwaHMgaW4gdGhlIHVuZGVyIHNob3Vs
ZCBiZSBtb3ZlZCBjbG9zZXIgdG8gdGhlIGJhc2UKKworICAgICAgICAvLyBXZSBuZWVkIHRvIGNh
bGN1bGF0ZSB0aGUgYmFzZWxpbmUgb2YgdGhlIGJhc2UgdmVyc3VzIHRoZSBzdGFydCBvZiB0aGUg
dW5kZXIgYmxvY2sgYW5kCisgICAgICAgIC8vIGFkanVzdCB0aGUgcGxhY2VtZW50IG9mIHRoZSB1
bmRlciBibG9jay4KKyAgICAgICAgCisgICAgICAgIC8vIGJhc2Ugcm93IHdyYXBwZXIKKyAgICAg
ICAgYmFzZSA9IGZpcnN0Q2hpbGQoKTsKKyAgICAgICAgaWYgKGJhc2UpIHsKKyAgICAgICAgICAg
IGludCBiYXNlSGVpZ2h0ID0gZ2V0T2Zmc2V0SGVpZ2h0KGJhc2UpOworICAgICAgICAgICAgLy8g
YWN0dWFsIGJhc2UKKyAgICAgICAgICAgIGJhc2UgPSBiYXNlLT5maXJzdENoaWxkKCk7CisgICAg
ICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBsb29rIGF0IHRoZSBzcGFjZSBiZXR3ZWVuIGEg
c2luZ2xlIG1heGltdW0gaGVpZ2h0IG9mCisgICAgICAgICAgICAvLyAgICAgICAgdGhlIGxpbmUg
Ym94ZXMgYW5kIHRoZSBiYXNlbGluZSBhbmQgc3F1ZWV6ZSB0aGVtIHRvZ2V0aGVyCisgICAgICAg
ICAgICBpbnQgdW5kZXJTcGFjaW5nID0gYmFzZUhlaWdodCAtIGJhc2UtPmJhc2VsaW5lUG9zaXRp
b24odHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGFkanVzdCB0aGUgYmFzZSdz
IGludHJ1c2lvbiBpbnRvIHRoZSB1bmRlcgorICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiB1bmRl
ciA9IGxhc3RDaGlsZCgpOworICAgICAgICAgICAgaWYgKHVuZGVyICYmIHVuZGVyU3BhY2luZyA+
IDApCisgICAgICAgICAgICAgICAgdW5kZXItPnN0eWxlKCktPnNldE1hcmdpblRvcChMZW5ndGgo
LXVuZGVyU3BhY2luZywgRml4ZWQpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIFVuZGVyT3ZlcjoKKyAgICAgICAgLy8gRklYTUU6IE5vbi1kZXNjZW5kaW5nIGdseXBocyBp
biB0aGUgb3ZlciBzaG91bGQgYmUgbW92ZWQgY2xvc2VyIHRvIHRoZSBiYXNlCisgICAgICAgIC8v
IEZJWE1FOiBOb24tYXNjZW5kaW5nIGdseXBocyBpbiB0aGUgdW5kZXIgc2hvdWxkIGJlIG1vdmVk
IGNsb3NlciB0byB0aGUgYmFzZQorICAgICAgICAKKyAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxj
dWxhdGUgdGhlIGJhc2VsaW5lIG9mIHRoZSBvdmVyIHZlcnN1cyB0aGUgc3RhcnQgb2YgdGhlIGJh
c2UgYW5kIAorICAgICAgICAvLyBhZGp1c3QgdGhlIHBsYWNlbWVudCBvZiB0aGUgYmFzZS4KKyAg
ICAgICAgCisgICAgICAgIG92ZXIgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIGlmIChvdmVyKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogZGVzY2VuZGluZyBnbHlwaHMgaW50cnVkZSBpbnRvIGJh
c2UgKGUuZy4gbG93ZXJjYXNlIHkgb3ZlciBiYXNlKQorICAgICAgICAgICAgLy8gRklYTUU6IGJh
c2VzIHRoYXQgYXNjZW5kIGhpZ2hlciB0aGFuIHRoZSBsaW5lIGJveCBpbnRydWRlIGludG8gdGhl
IG92ZXIKKyAgICAgICAgICAgIGludCBvdmVyU3BhY2luZyA9IHN0YXRpY19jYXN0PGludD4oMC42
NjcgKiAoZ2V0T2Zmc2V0SGVpZ2h0KG92ZXIpIC0gb3Zlci0+Zmlyc3RDaGlsZCgpLT5iYXNlbGlu
ZVBvc2l0aW9uKHRydWUpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGJhc2Ugcm93
IHdyYXBwZXIKKyAgICAgICAgICAgIGJhc2UgPSBvdmVyLT5uZXh0U2libGluZygpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoYmFzZSkgeworICAgICAgICAgICAgICAgIGlmIChvdmVy
U3BhY2luZyA+IDApCisgICAgICAgICAgICAgICAgICAgIGJhc2UtPnN0eWxlKCktPnNldE1hcmdp
blRvcChMZW5ndGgoLW92ZXJTcGFjaW5nLCBGaXhlZCkpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBiYXNlbGluZSBvZiB0aGUg
YmFzZSB2ZXJzdXMgdGhlIHN0YXJ0IG9mIHRoZSB1bmRlciBibG9jayBhbmQKKyAgICAgICAgICAg
ICAgICAvLyBhZGp1c3QgdGhlIHBsYWNlbWVudCBvZiB0aGUgdW5kZXIgYmxvY2suCisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgaW50IGJhc2VIZWlnaHQgPSBnZXRPZmZzZXRIZWln
aHQoYmFzZSk7CisgICAgICAgICAgICAgICAgLy8gYWN0dWFsIGJhc2UKKyAgICAgICAgICAgICAg
ICBiYXNlID0gYmFzZS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIGxvb2sgYXQgdGhlIHNwYWNlIGJldHdlZW4gYSBzaW5nbGUgbWF4aW11bSBoZWln
aHQgb2YKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgdGhlIGxpbmUgYm94ZXMgYW5kIHRoZSBi
YXNlbGluZSBhbmQgc3F1ZWV6ZSB0aGVtIHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgaW50IHVu
ZGVyU3BhY2luZyA9IGJhc2VIZWlnaHQgLSBiYXNlLT5iYXNlbGluZVBvc2l0aW9uKHRydWUpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogdW5kZXIgPSBs
YXN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICBpZiAodW5kZXIgJiYgdW5kZXItPmZpcnN0Q2hp
bGQoKS0+aXNSZW5kZXJJbmxpbmUoKSAmJiB1bmRlclNwYWNpbmcgPiAwKQorICAgICAgICAgICAg
ICAgICAgICB1bmRlci0+c3R5bGUoKS0+c2V0TWFyZ2luVG9wKExlbmd0aCgtdW5kZXJTcGFjaW5n
LCBGaXhlZCkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7Cit9CisKK2ludCBSZW5kZXJNYXRoTUxV
bmRlck92ZXI6OmJhc2VsaW5lUG9zaXRpb24oYm9vbCAsIGJvb2wpIGNvbnN0Cit7CisgICAgaW50
IGJhc2VsaW5lID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSAwOworICAgIHN3aXRj
aCAobV9raW5kKSB7CisgICAgY2FzZSBVbmRlck92ZXI6CisgICAgY2FzZSBPdmVyOgorICAgICAg
ICBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOworICAgICAgICBiYXNlbGluZSArPSBnZXRPZmZzZXRI
ZWlnaHQoY3VycmVudCk7CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygp
OworICAgICAgICBpZiAoY3VycmVudCkgeworICAgICAgICAgICAgLy8gYWN0dWFsIGJhc2UKKyAg
ICAgICAgICAgIFJlbmRlck9iamVjdCogYmFzZSA9IGN1cnJlbnQtPmZpcnN0Q2hpbGQoKTsKKyAg
ICAgICAgICAgIGJhc2VsaW5lICs9IGJhc2UtPmJhc2VsaW5lUG9zaXRpb24odHJ1ZSk7CisgICAg
ICAgICAgICAvLyBhZGRlZCB0aGUgbmVnYXRpdmUgdG9wIG1hcmdpbgorICAgICAgICAgICAgYmFz
ZWxpbmUgKz0gY3VycmVudC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkudmFsdWUoKTsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFVuZGVyOgorICAgICAgICBjdXJyZW50ID0gZmly
c3RDaGlsZCgpOworICAgICAgICBpZiAoY3VycmVudCkgeworICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBiYXNlID0gY3VycmVudC0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgYmFzZWxpbmUg
Kz0gYmFzZS0+YmFzZWxpbmVQb3NpdGlvbih0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gYmFzZWxpbmU7Cit9CisKKworaW50IFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6bm9uT3Bl
cmF0b3JIZWlnaHQoKSBjb25zdCAKK3sKKyAgICByZXR1cm4gMDsKK30KKworfQorCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUFUSE1MKQpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgUmVuZGVyTWF0aE1MVW5kZXJPdmVy
X2gKKyNkZWZpbmUgUmVuZGVyTWF0aE1MVW5kZXJPdmVyX2gKKworI2lmIEVOQUJMRShNQVRITUwp
CisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgCitjbGFzcyBSZW5kZXJNYXRoTUxVbmRlck92ZXIgOiBwdWJsaWMgUmVuZGVyTWF0aE1M
QmxvY2sgeworcHVibGljOgorICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlcihOb2RlKiBleHByZXNz
aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzQmFzZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIGludCBub25PcGVyYXRvckhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGJh
c2VsaW5lUG9zaXRpb24oYm9vbCAsIGJvb2wpIGNvbnN0OyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
c3RyZXRjaFRvSGVpZ2h0KGludCBwaXhlbEhlaWdodCk7Citwcml2YXRlOgorICAgIGVudW0gVW5k
ZXJPdmVyVHlwZSB7IFVuZGVyLCBPdmVyLCBVbmRlck92ZXIgfTsKKyAgICBVbmRlck92ZXJUeXBl
IG1fa2luZDsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorCisjZW5k
aWYgLy8gUmVuZGVyTWF0aE1MVW5kZXJPdmVyX2gKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL21hdGh0
YWdzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCShyZXZpc2lv
biA1NDUwMSkKKysrIFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0xMiw5ICsxMiwxMiBAQCBtdW5kZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWlu
CiBtdW5kZXJvdmVyIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAog
bXNxcnQgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtcm9vdCBp
bnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKLW1pIGludGVyZmFjZU5h
bWU9TWF0aE1MRWxlbWVudCwgY3JlYXRlV2l0aE5ldwotbW4gaW50ZXJmYWNlTmFtZT1NYXRoTUxF
bGVtZW50LCBjcmVhdGVXaXRoTmV3Ci1tbyBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQsIGNy
ZWF0ZVdpdGhOZXcKLW1zdWIgaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVXaXRo
TmV3Ci1tc3VwIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudCwgY3JlYXRlV2l0aE5ldworbWkg
aW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAorbW4gaW50ZXJmYWNlTmFtZT1NYXRoTUxU
ZXh0RWxlbWVudAorbW8gaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAorbXRleHQgaW50
ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAorbXJvb3QgaW50ZXJmYWNlTmFtZT1NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50Cittc3FydCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQKK21zdWIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50LCBjcmVhdGVXaXRoTmV3Cittc3VwIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudCwgY3JlYXRlV2l0aE5ldwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDUwMSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEwLTAyLTA4ICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3NraS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzIGZvciBN
YXRoTUwKKworICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vZmVuY2VkLnhodG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL2ZyYWN0aW9ucy54aHRtbDogQWRkZWQu
CisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9tby1pbnRlZ3JhbC54aHRtbDogQWRkZWQu
CisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9vdmVyLnhodG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBt
YXRobWwvcHJlc2VudGF0aW9uL3Jvdy54aHRtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3By
ZXNlbnRhdGlvbi9zdWJzdXAueGh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50
YXRpb24vdGFibGVzLnhodG1sOgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vdW5kZXIu
eGh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vdW5kZXJvdmVyLnho
dG1sOiBBZGRlZC4KKwogMjAxMC0wMi0wOCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1h
bm5AcmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIEZpeCBsYXN0IHByb2JsZW1hdGlj
IFNWRyB0ZXN0Y2FzZSwgdXBkYXRlIGNvb3Jkcy10cmFucy0wMS1iLnN2ZyB3aW4gcmVzdWx0cywg
bWFya2luZyB0aGUgZW5kIG9mIHRoZSBiYXNlbGluZSByZWdlbmVyYXRpb24gZm9yIGFsbCBwbGF0
Zm9ybXMuCkluZGV4OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2ZlbmNlZC54aHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2ZlbmNlZC54
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vZmVu
Y2VkLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8aHRtbCB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzx0aXRsZT5Sb3dzIGFuZCBPcGVy
YXRvcnM8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK21vIHsKKyAgIGJhY2tncm91
bmQtY29sb3I6IHJnYigyMDAsMjAwLDIwMCk7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0ndDEnPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPgorPG1mZW5jZWQ+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTto
ZWlnaHQ6IDQ4cHg7IHdpZHRoOiA0OHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCkn
Lz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxh
eTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO2hlaWdodDogNDhweDsgd2lk
dGg6IDQ4cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxkaXYgeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7aGVpZ2h0OiA0OHB4OyB3aWR0aDogNDhweDsgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PC9tZmVuY2VkPgorPC9tYXRoPgorPC9wPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9mcmFj
dGlvbnMueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlv
bi9mcmFjdGlvbnMueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJl
c2VudGF0aW9uL2ZyYWN0aW9ucy54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAor
PGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8dGl0
bGU+RnJhY3Rpb25zPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz5zaW1wbGU6
IDxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz48bWZyYWM+
PG1uPjE8L21uPmJhZDxtbj4yPC9tbj48L21mcmFjPjwvbWF0aD48L3A+Cis8cCBpZD0ndDInPm1v
cmUgY29tcGxleDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01h
dGhNTCc+Cis8bWZyYWM+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPmJhZDxtbj4xPC9tbj48
L21yb3c+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4yPC9tbj48L21yb3c+Cis8L21m
cmFjPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3QzJz50ZXh0OgorPG1hdGggeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1mcmFjPgorPG10ZXh0Pm51bWJlciBv
ZiBidWdzPC9tdGV4dD4KKzxtdGV4dD5udW1iZXIgb2YgY2hhbmdlczwvbXRleHQ+Cis8L21mcmFj
PgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q0Jz5saW5lIHRoaWNrbmVzcyBieSBrZXl3b3JkOgor
PG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPjxtZnJhYyBs
aW5ldGhpY2tuZXNzPSd0aGluJz48bW4+MTwvbW4+PG1uPjI8L21uPjwvbWZyYWM+PC9tYXRoPjxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz48bWZyYWMgbGlu
ZXRoaWNrbmVzcz0nbWVkaXVtJz48bW4+MTwvbW4+PG1uPjI8L21uPjwvbWZyYWM+PC9tYXRoPjxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz48bWZyYWMgbGlu
ZXRoaWNrbmVzcz0ndGhpY2snPjxtbj4xPC9tbj48bW4+MjwvbW4+PC9tZnJhYz48L21hdGg+PC9w
PgorPHAgaWQ9J3Q1Jz5udW1lcmF0b3IgYWxpZ25tZW50OgorPG1hdGggeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1mcmFjIG51bWFsaWduPSJsZWZ0Ij4KKzxt
aT54PC9taT4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9tbz48
bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJvdz4K
KzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCc+Cis8bWZyYWMgbnVtYWxpZ249ImNlbnRlciI+Cis8bWk+eDwvbWk+Cis8bXJv
dz48bW4+MTwvbW4+PG1vPis8L21vPjxtbj4yPC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4r
PC9tbz48bW4+NDwvbW4+PG1vPis8L21vPjxtbj41PC9tbj48L21yb3c+Cis8L21mcmFjPgorPC9t
YXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgor
PG1mcmFjIG51bWFsaWduPSJyaWdodCI+Cis8bWk+eDwvbWk+Cis8bXJvdz48bW4+MTwvbW4+PG1v
Pis8L21vPjxtbj4yPC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4rPC9tbz48bW4+NDwvbW4+
PG1vPis8L21vPjxtbj41PC9tbj48L21yb3c+Cis8L21mcmFjPgorPC9tYXRoPgorPC9wPgorPHAg
aWQ9J3Q2Jz5kZW5vbWluYXRvciBhbGlnbm1lbnQ6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgZGVub21hbGlnbj0ibGVmdCI+Cis8bXJv
dz48bW4+MTwvbW4+PG1vPis8L21vPjxtbj4yPC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4r
PC9tbz48bW4+NDwvbW4+PG1vPis8L21vPjxtbj41PC9tbj48L21yb3c+Cis8bWk+eDwvbWk+Cis8
L21mcmFjPgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnPgorPG1mcmFjIGRlbm9tYWxpZ249ImNlbnRlciI+Cis8bXJvdz48bW4+MTwvbW4+
PG1vPis8L21vPjxtbj4yPC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4rPC9tbz48bW4+NDwv
bW4+PG1vPis8L21vPjxtbj41PC9tbj48L21yb3c+Cis8bWk+eDwvbWk+Cis8L21mcmFjPgorPC9t
YXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgor
PG1mcmFjIGRlbm9tYWxpZ249InJpZ2h0Ij4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1u
PjI8L21uPjxtbz4rPC9tbz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+
PG1uPjU8L21uPjwvbXJvdz4KKzxtaT54PC9taT4KKzwvbWZyYWM+Cis8L21hdGg+Cis8L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21p
LnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbWku
eGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21p
LnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACis8aHRtbCB4bWxucz0naHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzx0aXRsZT5PdmVyPC90aXRsZT4KKzxz
dHlsZSB0eXBlPSd0ZXh0L2Nzcyc+Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0n
dDEnPm9wZXJhdG9yOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgv
TWF0aE1MJz4KKzxtaSBtYXRoc2l6ZT0nc21hbGwnPnk8L21pPgorPC9tYXRoPgorb3BlcmF0b3I6
Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWkg
bWF0aHNpemU9J3NtYWxsJz5CPC9taT4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0Mic+b3BlcmF0
b3I6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgor
PG1pIG1hdGhzaXplPSdub3JtYWwnPnk8L21pPgorPC9tYXRoPgorb3BlcmF0b3I6Cis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWkgbWF0aHNpemU9
J25vcm1hbCc+QjwvbWk+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMnPm9wZXJhdG9yOiAKKzxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtaSBtYXRo
c2l6ZT0nYmlnJz55PC9taT4KKzwvbWF0aD4KK29wZXJhdG9yOgorPG1hdGggeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1pIG1hdGhzaXplPSdiaWcnPkI8L21p
PgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q0Jz5vcGVyYXRvcjogCis8bWF0aCB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWkgbWF0aHNpemU9J3NtYWxsJz55
PC9taT4KKzxtaSBtYXRoc2l6ZT0nbm9ybWFsJz55PC9taT4KKzxtaSBtYXRoc2l6ZT0nYmlnJz55
PC9taT4KKzwvbWF0aD4KK29wZXJhdG9yOgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTgvTWF0aC9NYXRoTUwnPgorPG1pIG1hdGhzaXplPSdzbWFsbCc+QjwvbWk+Cis8bWkgbWF0
aHNpemU9J25vcm1hbCc+QjwvbWk+Cis8bWkgbWF0aHNpemU9J2JpZyc+QjwvbWk+Cis8L21hdGg+
Cis8L3A+Cis8cCBpZD0ndDUnPm9wZXJhdG9yOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtaT55PC9taT4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6
IGlubGluZS1ibG9jazsgaGVpZ2h0OiA0MHB4OyB3aWR0aDogNDBweDsgYm9yZGVyOiAxcHggc29s
aWQgYmxhY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ii8+Cis8L21hdGg+Cis8L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21vLWlu
dGVncmFsLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRp
b24vbW8taW50ZWdyYWwueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwv
cHJlc2VudGF0aW9uL21vLWludGVncmFsLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5
IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4K
Kzx0aXRsZT5TdWJzY3JpcHQgYW5kIFN1cGVyc2NyaXB0czwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPkFuIGludGVncmFsIHdpdGggbm9ybWFsIGhlaWdodCBjb250ZW50OiAKKyAgICA8bWF0
aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI+CisgICAgICA8bXN1
YnN1cD48bW8+4oirPC9tbz48bW4+MDwvbW4+PG1uPjI8L21uPjwvbXN1YnN1cD48bW4+NC45PC9t
bj48bWk+ZHg8L21pPgorICAgIDwvbWF0aD48L3A+Cis8cCBzdHlsZT0iZm9udC1zaXplOiAyZW0i
PkFuIGludGVncmFsIHdpdGggbm9ybWFsIGhlaWdodCBjb250ZW50OiAKKyAgICA8bWF0aCB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI+CisgICAgICA8bXN1YnN1cD48
bW8+4oirPC9tbz48bW4+MDwvbW4+PG1uPjI8L21uPjwvbXN1YnN1cD48bW4+NC45PC9tbj48bWk+
ZHg8L21pPgorICAgIDwvbWF0aD48L3A+Cis8cD5BbiBpbnRlZ3JhbCB3aXRoIG5vcm1hbCBoZWln
aHQgY29udGVudDogCisgICAgPG1hdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwiPgorICAgICAgPG1zdWJzdXA+PG1vPuKIqzwvbW8+PG1uPjA8L21uPjxtbj4yPC9t
bj48L21zdWJzdXA+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1h
bGlnbjogLThweDsgaGVpZ2h0OiA0OHB4OyB3aWR0aDogNDhweDsgYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7Ii8+PG1pPmR4PC9taT4KKyAgICA8L21hdGg+PC9wPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tby54aHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21vLnhodG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tby54aHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NSBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+T3ZlcjwvdGl0bGU+Cis8c3R5bGUgdHlwZT0ndGV4dC9j
c3MnPgorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz5vcGVyYXRvcjogCis8
bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bW8gbWF0
aHNpemU9J3NtYWxsJz4mI3gyMjExOzwvbW8+Cis8L21hdGg+CitvcGVyYXRvcjoKKzxtYXRoIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtbyBtYXRoc2l6ZT0n
c21hbGwnPkI8L21vPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3QyJz5vcGVyYXRvcjogCis8bWF0
aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bW8gbWF0aHNp
emU9J25vcm1hbCc+JiN4MjIxMTs8L21vPgorPC9tYXRoPgorb3BlcmF0b3I6Cis8bWF0aCB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bW8gbWF0aHNpemU9J25v
cm1hbCc+QjwvbW8+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMnPm9wZXJhdG9yOiAKKzxtYXRo
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtbyBtYXRoc2l6
ZT0nYmlnJz4mI3gyMjExOzwvbW8+Cis8L21hdGg+CitvcGVyYXRvcjoKKzxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtbyBtYXRoc2l6ZT0nYmlnJz4m
I3gyMjExOzwvbW8+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDQnPm9wZXJhdG9yOiAKKzxtYXRo
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtbyBtYXRoc2l6
ZT0nc21hbGwnPiYjeDIyMTE7PC9tbz4KKzxtbyBtYXRoc2l6ZT0nbm9ybWFsJz4mI3gyMjExOzwv
bW8+Cis8bW8gbWF0aHNpemU9J2JpZyc+JiN4MjIxMTs8L21vPgorPC9tYXRoPgorb3BlcmF0b3I6
Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bW8g
bWF0aHNpemU9J3NtYWxsJz5CPC9tbz4KKzxtbyBtYXRoc2l6ZT0nbm9ybWFsJz5CPC9tbz4KKzxt
byBtYXRoc2l6ZT0nYmlnJz5CPC9tbz4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0NSc+b3BlcmF0
b3I6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgor
PG1vPuKIqzwvbW8+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDog
NDBweDsgd2lkdGg6IDQwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyB2ZXJ0aWNhbC1hbGln
bjogbWlkZGxlOyIvPgorPC9tYXRoPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9vdmVyLnhodG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vb3Zlci54aHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vb3Zlci54aHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MCBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnPgorPGhlYWQ+Cis8dGl0bGU+T3ZlcjwvdGl0bGU+Cis8c3R5bGUgdHlwZT0ndGV4dC9jc3Mn
PgorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz5vdmVyOiAKKzxtYXRoIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtb3Zlcj4KKzxtaT5C
PC9taT4KKzxtaT54PC9taT4KKzwvbW92ZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDInPm92
ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgor
PG1vdmVyPgorPG1pPkI8L21pPgorPG1pPnk8L21pPgorPC9tb3Zlcj4KKzwvbWF0aD4KKzwvcD4K
KzxwIGlkPSd0Myc+b3ZlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCc+Cis8bW92ZXI+Cis8bWkgbWF0aHNpemU9J2JpZyc+QjwvbWk+Cis8bWk+eTwv
bWk+Cis8L21vdmVyPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q0Jz5vdmVyOiAKKzxtYXRoIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtb3Zlcj4KKzxtbyBt
YXRoc2l6ZT0nYmlnJz4mI3gyMjExOzwvbW8+Cis8bWk+eTwvbWk+Cis8L21vdmVyPgorPC9tYXRo
PgorPC9wPgorPHAgaWQ9J3Q1Jz5vdmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtb3Zlcj4KKzxtbz7iiKs8L21vPgorPG1pPnk8L21pPgor
PC9tb3Zlcj4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgaGVpZ2h0OiA0MHB4
OyB3aWR0aDogNDBweCIvPgorPC9tYXRoPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9yb290cy54aHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9yb290cy54aHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0OCBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+Um9vdHM8L3RpdGxlPgorPHN0eWxlIHR5cGU9J3Rl
eHQvY3NzJz4KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+c3F1YXJlIHJv
b3Q6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgor
PG1zcXJ0Pjxtbj4yPC9tbj48L21zcXJ0PgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0Mic+bG9uZyBz
cXVhcmUgcm9vdDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01h
dGhNTCc+Cis8bXNxcnQ+PG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz48bW4+MTwvbW4+PC9tcm93
PjwvbXNxcnQ+Cis8L21hdGg+PC9wPgorPHAgaWQ9J3QzJz5sb25nIHNxdWFyZSByb290IHdpdGgg
aW1wbGllZCByb3c6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPgorPG1zcXJ0Pjxtc3VwPjxtaT54PC9taT48bW4+MjwvbW4+PC9tc3VwPjxtbz4rPC9t
bz48bW4+MTwvbW4+PC9tc3FydD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDQnPnJvb3Qgb2YgYSBm
cmFjdGlvbjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhN
TCc+Cis8bXNxcnQ+Cis8bWZyYWM+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4xPC9t
bj48L21yb3c+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4yPC9tbj48L21yb3c+Cis8
L21mcmFjPgorPC9tc3FydD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDUnPmN1YmUgcm9vdDogCis8
bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvb3Q+
PG1uPjI8L21uPjxtbj4zPC9tbj48L21yb290PgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0Nic+bG9u
ZyBpbmRleDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhN
TCc+Cis8bXJvb3Q+PG1uPjI8L21uPjxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1pPnk8L21p
Pjxtbz4rPC9tbz48bWk+ejwvbWk+PC9tcm93PjwvbXJvb3Q+Cis8L21hdGg+PC9wPgorPHAgaWQ9
J3Q2Jz5sb25nIGluZGV4IHcvIGNvbXBsZXggYmFzZTogCis8bWF0aCB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvb3Q+Cis8bWZyYWM+Cis8bXJvdz48bWk+
eDwvbWk+PG1vPis8L21vPjxtbj4xPC9tbj48L21yb3c+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8
L21vPjxtbj4yPC9tbj48L21yb3c+Cis8L21mcmFjPgorPG1yb3c+PG1pPng8L21pPjxtbz4rPC9t
bz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56PC9taT48L21yb3c+Cis8L21yb290PgorPC9tYXRo
PjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvdy54aHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvdy54aHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExOCBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+Um93cyBhbmQgT3BlcmF0b3JzPC90aXRsZT4KKzxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+CittbyB7CisgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAwLDIw
MCwyMDApOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+Cis8bWF0aCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+PG1pPng8L21pPjxtbz4rPC9tbz48
bW4+MTwvbW4+PC9tYXRoPgorPC9wPgorPHAgaWQ9J3QxJz4KKzE2cHg6Cis8bWF0aCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+ezwvbW8+PGRp
diB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlu
bGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTtoZWlnaHQ6IDE2cHg7IHdpZHRoOiAx
NnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+fTwvbW8+PC9tcm93Pgor
PC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwn
PgorPG1yb3c+PG1vPls8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7
aGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDAp
Jy8+PG1vPl08L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz4oPC9tbz48ZGl2IHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2
ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDE2cHg7IHdpZHRoOiAxNnB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+KTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1h
dGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1v
Pnw8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMTZw
eDsgd2lkdGg6IDE2cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz58PC9t
bz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCc+Cis8bXJvdz48bW8+JiN4MjIyYjs8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMTZweDsg
d2lkdGg6IDE2cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKTsnLz48L21yb3c+Cis8
L21hdGg+Cis8L3A+Cis8cCBpZD0ndDEnPgorMjRweDoKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz57PC9tbz48ZGl2IHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2Nr
OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDI0cHg7IHdpZHRoOiAyNHB4OyBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+fTwvbW8+PC9tcm93PgorPC9tYXRoPgor
PG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+
PG1vPls8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxl
PSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDog
MjRweDsgd2lkdGg6IDI0cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz5d
PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+KDwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwt
YWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAyNHB4OyB3aWR0aDogMjRweDsgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDAsMjU1LDApJy8+PG1vPik8L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz58PC9tbz48
ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTog
aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDI0cHg7IHdpZHRo
OiAyNHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+fDwvbW8+PC9tcm93
PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRo
TUwnPgorPG1yb3c+PG1vPiYjeDIyMmI7PC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGln
bjogbWlkZGxlOyBoZWlnaHQ6IDI0cHg7IHdpZHRoOiAyNHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMCwyNTUsMCknLz48L21yb3c+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDEnPgorMzJweDoK
KzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93
Pjxtbz57PC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHls
ZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6
IDMycHg7IHdpZHRoOiAzMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+
fTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPls8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2Fs
LWFsaWduOiBtaWRkbGU7IGhlaWdodDogMzJweDsgd2lkdGg6IDMycHg7IGJhY2tncm91bmQtY29s
b3I6IHJnYigwLDI1NSwwKScvPjxtbz5dPC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+KDwvbW8+
PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6
IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAzMnB4OyB3aWR0
aDogMzJweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPik8L21vPjwvbXJv
dz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0
aE1MJz4KKzxtcm93Pjxtbz58PC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlk
ZGxlOyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAzMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwy
NTUsMCknLz48bW8+fDwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPiYjeDIyMmI7PC9tbz48ZGl2
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5s
aW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAz
MnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48L21yb3c+Cis8L21hdGg+Cis8
L3A+Cis8cCBpZD0ndDEnPgorNDhweDoKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8x
OTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz57PC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNh
bC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDQ4cHg7IHdpZHRoOiA0OHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMCwyNTUsMCknLz48bW8+fTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPls8L21v
PjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogNDhweDsgd2lk
dGg6IDQ4cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz5dPC9tbz48L21y
b3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01h
dGhNTCc+Cis8bXJvdz48bW8+KDwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1p
ZGRsZTsgaGVpZ2h0OiA0OHB4OyB3aWR0aDogNDhweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAs
MjU1LDApJy8+PG1vPik8L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz58PC9tbz48ZGl2IHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJs
b2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDQ4cHg7IHdpZHRoOiA0OHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+fDwvbW8+PC9tcm93PgorPC9tYXRo
PgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1y
b3c+PG1vPiYjeDIyMmI7PC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxl
OyBoZWlnaHQ6IDQ4cHg7IHdpZHRoOiA0OHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUs
MCknLz48L21yb3c+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDEnPgorMTIwcHg6Cis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+ezwv
bW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3Bs
YXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAxMjBweDsg
d2lkdGg6IDEyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+fTwvbW8+
PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnPgorPG1yb3c+PG1vPls8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWdu
OiBtaWRkbGU7IGhlaWdodDogMTIwcHg7IHdpZHRoOiAxMjBweDsgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDAsMjU1LDApJy8+PG1vPl08L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz4oPC9tbz48ZGl2
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5s
aW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDEyMHB4OyB3aWR0aDog
MTIwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz4pPC9tbz48L21yb3c+
Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhN
TCc+Cis8bXJvdz48bW8+fDwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRs
ZTsgaGVpZ2h0OiAxMjBweDsgd2lkdGg6IDEyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwy
NTUsMCknLz48bW8+fDwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPiYjeDIyMmI7PC9tbz48ZGl2
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5s
aW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDEyMHB4OyB3aWR0aDog
MTIwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjwvbXJvdz4KKzwvbWF0aD4K
KzwvcD4KKzxwIGlkPSd0NSc+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCc+Cis8bXJvdz4KKzxtbz4oPC9tbz4KKzxkaXYgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2Fs
LWFsaWduOiBtaWRkbGU7IGhlaWdodDogNDBweDsgd2lkdGg6IDQwcHg7IGJhY2tncm91bmQtY29s
b3I6IHJnYigwLDI1NSwwKScvPgorPG1vPiw8L21vPgorPGRpdiB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwt
YWxpZ246IG1pZGRsZTsgaGVpZ2h0OiA0MHB4OyB3aWR0aDogNDBweDsgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDAsMjU1LDApJy8+Cis8bW8+LDwvbW8+Cis8ZGl2IHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1h
bGlnbjogbWlkZGxlOyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4OyBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMCwyNTUsMCknLz4KKzxtbz4pPC9tbz4KKzwvbXJvdz4KKzwvbWF0aD4KKzwvcD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vc3Vi
c3VwLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24v
c3Vic3VwLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRh
dGlvbi9zdWJzdXAueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgorPHRpdGxlPlN1YnNj
cmlwdCBhbmQgU3VwZXJzY3JpcHRzPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3Qx
Jz5ib3RoOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1M
Jz4KKzxtc3Vic3VwPjxtaT54PC9taT48bW4+MTwvbW4+PG1pPms8L21pPjwvbXN1YnN1cD4KKzwv
bWF0aD4KKzwvcD4KKzxwIGlkPSd0Mic+bG9uZyBzdWJzY3JpcHQgdy8gYm90aDogCis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1YnN1cD4KKzxt
aT5aPC9taT4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1pPnk8L21pPjxtbz4rPC9tbz48
bWk+ejwvbWk+PC9tcm93PgorPG1pPmo8L21pPgorPC9tc3Vic3VwPgorPC9tYXRoPgorPC9wPgor
PHAgaWQ9J3QzJz5sb25nIHN1cGVyc2NyaXB0IHcvIGJvdGg6IAorPG1hdGggeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1zdWJzdXA+Cis8bWk+WjwvbWk+Cis8
bWk+eDwvbWk+Cis8bXJvdz48bWk+azwvbWk+PG1vPis8L21vPjxtaT5qPC9taT48L21yb3c+Cis8
L21zdWJzdXA+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDQnPmxvbmcgdy8gYm90aDogCis8bWF0
aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1YnN1cD4K
KzxtaT5aPC9taT4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1pPnk8L21pPjxtbz4rPC9t
bz48bWk+ejwvbWk+PC9tcm93PgorPG1yb3c+PG1pPms8L21pPjxtbz4rPC9tbz48bWk+ajwvbWk+
PC9tcm93PgorPC9tc3Vic3VwPgorPC9tYXRoPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi90YWJsZXMueGh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi90YWJsZXMueGh0bWwJKHJldmlz
aW9uIDU0NTAxKQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi90YWJsZXMueGh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3IEBACiA8Ym9keT4KIDxwIGlkPSd0MSc+c2lt
cGxlOiAKIDxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4K
KzxtZmVuY2VkIG9wZW49IlsiIGNsb3NlPSJdIj4KIDxtdGFibGU+CiA8bXRyPgogPG10ZD48bXN1
Yj48bWk+YTwvbWk+PG1uPjExPC9tbj48L21zdWI+PC9tdGQ+CkBAIC0yMiw2ICsyMyw3IEBACiA8
bXRkPjxtc3ViPjxtaT5jPC9taT48bW4+MzM8L21uPjwvbXN1Yj48L210ZD4KIDwvbXRyPgogPC9t
dGFibGU+Cis8L21mZW5jZWQ+CiA8L21hdGg+CiA8L3A+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3VuZGVyLnhodG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vdW5kZXIueGh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3VuZGVyLnhodG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIzIEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCc+Cis8aGVhZD4KKzx0aXRsZT5VbmRlcjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSd0MSc+dW5kZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPgorPG11bmRlcj4KKzxtaT5CPC9taT4KKzxtaT54PC9taT4KKzwvbXVuZGVyPgorPC9t
YXRoPgorPC9wPgorPHAgaWQ9J3QyJz51bmRlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXVuZGVyPgorPG1pPkI8L21pPgorPG1pPlg8L21p
PgorPC9tdW5kZXI+Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3VuZGVyb3Zlci54aHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3VuZGVyb3Zlci54aHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vdW5kZXJvdmVyLnhodG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzx0aXRsZT5VbmRlci9PdmVyPC90aXRsZT4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz51bmRlciAmYW1wOyBvdmVyOiAKKzxtYXRoIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtdW5kZXJvdmVyPgorPG1p
PkI8L21pPgorPG1pPng8L21pPgorPG1pPnk8L21pPgorPC9tdW5kZXJvdmVyPgorPC9tYXRoPgor
PC9wPgorPHAgaWQ9J3QyJz51bmRlciAmYW1wOyBvdmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtdW5kZXJvdmVyPgorPG1pPkI8L21pPgor
PG1pPlg8L21pPgorPG1pPnk8L21pPgorPC9tdW5kZXJvdmVyPgorPC9tYXRoPgorPC9wPgorPHAg
aWQ9J3QzJz51bmRlciAmYW1wOyBvdmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtdW5kZXJvdmVyPgorPG1vIG1hdGhzaXplPSdiaWcnPiYj
eDIyMTE7PC9tbz4KKzxtcm93PjxtaT5pPC9taT48bW8+PTwvbW8+PG1pPjA8L21pPjwvbXJvdz4K
Kzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1pPnk8L21pPjwvbXJvdz4KKzwvbXVuZGVyb3Zl
cj4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0NCc+dW5kZXIgJmFtcDsgb3ZlcjogCis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXVuZGVyb3Zlcj4K
KzxtbyBtYXRoc2l6ZT0nYmlnJz4mI3gyMjExOzwvbW8+Cis8bXJvdz48bWk+STwvbWk+PG1vPj08
L21vPjxtaT4wPC9taT48L21yb3c+Cis8bXJvdz48bWk+WDwvbWk+PG1vPis8L21vPjxtaT55PC9t
aT48L21yb3c+Cis8L211bmRlcm92ZXI+Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48509</attachid>
            <date>2010-02-10 10:36:04 -0800</date>
            <delta_ts>2010-06-10 21:12:11 -0700</delta_ts>
            <desc>Updated patch to fix conflict in xcode project</desc>
            <filename>WebKit-mathml-monster.patch</filename>
            <type>text/plain</type>
            <size>123165</size>
            <attacher name="Alex Milowski">alex</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDYwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE2IEBACisyMDEwLTAyLTEwICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3Nr
aS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q3VycmVudCBNYXRoTUwgaW1wbGVtZW50YXRpb24gKGFsbCB0aGUgY29kZSkKKworICAgICAgICBU
ZXN0czogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwKKyAgICAgICAgICAgICAgIG1h
dGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwv
cHJlc2VudGF0aW9uL21vLWludGVncmFsLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwvcHJl
c2VudGF0aW9uL292ZXIueGh0bWwKKyAgICAgICAgICAgICAgIG1hdGhtbC9wcmVzZW50YXRpb24v
cm9vdHMueGh0bWwKKyAgICAgICAgICAgICAgIG1hdGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1s
CisgICAgICAgICAgICAgICBtYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRtbAorICAgICAg
ICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlci54aHRtbAorICAgICAgICAgICAgICAg
bWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWwKKworICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGNzcy9tYXRobWwuY3NzOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVt
ZW50OjpNYXRoTUxUZXh0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmlzQ2hpbGRBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEJsb2NrOjptYWtlQmxvY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxCbG9jazo6bm9uT3BlcmF0b3JIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OnN0cmV0Y2hUb0hlaWdodCk6CisgICAgICAgICogbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6OmlzUmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTEJsb2NrOjppc1JlbmRlck1hdGhNTE1hdGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6Omhhc0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJN
YXRoTUxCbG9jayk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxG
ZW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVGcm9t
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6Om1ha2VPcGVy
YXRvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZUZl
bmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OmFkZENoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6bGF5b3V0KToKKyAgICAgICAg
KiBtYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAgICAqIG1hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MTWF0aDo6
UmVuZGVyTWF0aE1MTWF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRoOjpz
ZXRTdHlsZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRoOjppc1JlbmRlck1hdGhNTE1hdGgpOgor
ICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpzZXRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c3R5bGVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmlzQ2hpbGRBbGxvd2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpzdHJldGNoVG9IZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVw
ZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9y
OjptYWtlU3RhY2thYmxlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6Om1ha2VHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6Omlz
UmVuZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJNYXRoTUxP
cGVyYXRvcik6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6YWRkQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIG1hdGhtbC9SZW5k
ZXJNYXRoTUxSb290Lmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0
aE1MUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6c2V0U3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93Ojpub25PcGVyYXRvckhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb3c6OmxheW91dCk6CisgICAgICAgICogbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTFJvdzo6aXNSZW5kZXJNYXRoTUxSb3cpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRo
TUxTcXVhcmVSb290LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxT
cXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFNxdWFyZVJvb3Q6OnBhaW50KToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MU3F1YXJlUm9vdC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0aE1MU3Vi
U3VwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTdWJTdXA6OlJl
bmRlck1hdGhNTFN1YlN1cCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTdWJTdXA6
OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6c3RyZXRj
aFRvSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6bm9uT3Bl
cmF0b3JIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpsYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpiYXNlbGluZVBvc2l0
aW9uKToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3ViU3VwOjpoYXNCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6KToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxV
bmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxVbmRlck92ZXI6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE9mZnNl
dEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmJhc2VsaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpub25PcGVy
YXRvckhlaWdodCk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6aGFzQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6Oik6CisgICAgICAgICog
bWF0aG1sL21hdGhhdHRycy5pbjogQWRkZWQuCisgICAgICAgICogbWF0aG1sL21hdGh0YWdzLmlu
OgorCiAyMDEwLTAyLTEwICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggYmFkIHBhdGhzIGluIFdlYkNvcmUudmNwcm9qCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTQ2MDYpCisrKyBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDgzOCw2
ICs0ODM4LDI0IEBACiAJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2
NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi87IH07CiAJCUZB
NjU0QTZGMTEwOEFCRkYwMDI2MTVFMCAvKiBSZW5kZXJNYXRoTUxCbG9jay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2RDExMDhBQkZGMDAy
NjE1RTAgLyogUmVuZGVyTWF0aE1MQmxvY2suY3BwICovOyB9OwogCQlGQTY1NEE3MDExMDhBQkZG
MDAyNjE1RTAgLyogUmVuZGVyTWF0aE1MQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZFMTEwOEFCRkYwMDI2MTVFMCAvKiBSZW5kZXJN
YXRoTUxCbG9jay5oICovOyB9OworCQlGQThFNUNCOTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVy
TWF0aE1MRmVuY2VkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZBOEU1Q0E3MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuY3Bw
ICovOyB9OworCQlGQThFNUNCQTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRmVuY2Vk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThFNUNB
ODExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmggKi87IH07CisJCUZBOEU1
Q0JCMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThFNUNBOTExMjBBNjJCMDA3
RjhCMDIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwICovOyB9OworCQlGQThFNUNCQzExMjBB
NjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBOEU1Q0FBMTEyMEE2MkIwMDdGOEIwMiAvKiBS
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oICovOyB9OworCQlGQThFNUNCRDExMjBBNjJCMDA3RjhCMDIg
LyogUmVuZGVyTWF0aE1MTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQThFNUNBQjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MTWF0
aC5jcHAgKi87IH07CisJCUZBOEU1Q0JFMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxN
YXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThF
NUNBQzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MTWF0aC5oICovOyB9OworCQlGQThF
NUNCRjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4RTVDQUQxMTIwQTYyQjAw
N0Y4QjAyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkE4RTVDQzAxMTIw
QTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThFNUNBRTExMjBBNjJCMDA3RjhCMDIgLyog
UmVuZGVyTWF0aE1MT3BlcmF0b3IuaCAqLzsgfTsKKwkJRkE4RTVDQzExMTIwQTYyQjAwN0Y4QjAy
IC8qIFJlbmRlck1hdGhNTFJvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkE4RTVDQUYxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFJv
b3QuY3BwICovOyB9OworCQlGQThFNUNDMjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1M
Um9vdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE4
RTVDQjAxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCAqLzsgfTsKKwkJRkE4
RTVDQzMxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFJvdy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThFNUNCMTExMjBBNjJCMDA3RjhC
MDIgLyogUmVuZGVyTWF0aE1MUm93LmNwcCAqLzsgfTsKKwkJRkE4RTVDQzQxMTIwQTYyQjAwN0Y4
QjAyIC8qIFJlbmRlck1hdGhNTFJvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkE4RTVDQjIxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFJv
dy5oICovOyB9OworCQlGQThFNUNDNTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQThFNUNCMzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAg
Ki87IH07CisJCUZBOEU1Q0M2MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVS
b290LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThF
NUNCNDExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oICovOyB9Owor
CQlGQThFNUNDNzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3ViU3VwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBOEU1Q0I1MTEyMEE2
MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxTdWJTdXAuY3BwICovOyB9OworCQlGQThFNUNDODEx
MjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3ViU3VwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQThFNUNCNjExMjBBNjJCMDA3RjhCMDIgLyog
UmVuZGVyTWF0aE1MU3ViU3VwLmggKi87IH07CisJCUZBOEU1Q0M5MTEyMEE2MkIwMDdGOEIwMiAv
KiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkE4RTVDQjcxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhN
TFVuZGVyT3Zlci5jcHAgKi87IH07CisJCUZBOEU1Q0NBMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5k
ZXJNYXRoTUxVbmRlck92ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZBOEU1Q0I4MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92
ZXIuaCAqLzsgfTsKIAkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcy
RUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovOyB9OwogCQlGQUJFNzJG
NTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUUxMDU5QzFFQjAwRDk5OUREIC8qIE1h
dGhNTEVsZW1lbnQuaCAqLzsgfTsKIAkJRkFCRTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTAxNTMsNiArMTAxNzEsMjQgQEAKIAkJ
RkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTZEMTEwOEFCRkYwMDI2MTVFMCAvKiBSZW5kZXJNYXRo
TUxCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJN
YXRoTUxCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTZFMTEw
OEFCRkYwMDI2MTVFMCAvKiBSZW5kZXJNYXRoTUxCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGQThFNUNBNzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTEZlbmNl
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOEU1Q0E4MTEyMEE2MkIwMDdG
OEIwMiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTWF0aE1MRmVuY2VkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZBOEU1Q0E5MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxGcmFjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOEU1Q0FBMTEyMEE2MkIwMDdGOEIw
MiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNYXRoTUxGcmFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGQThFNUNBQjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MTWF0aC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxNYXRoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4RTVDQUMxMTIwQTYyQjAwN0Y4QjAyIC8qIFJl
bmRlck1hdGhNTE1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
TWF0aE1MTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQThFNUNBRDExMjBB
NjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGQThFNUNBRTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0
aE1MT3BlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0
aE1MT3BlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4RTVDQUYxMTIw
QTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFJvb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MUm9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZBOEU1Q0IwMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxSb290
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvb3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4RTVDQjExMTIwQTYyQjAwN0Y4QjAyIC8q
IFJlbmRlck1hdGhNTFJvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJNYXRoTUxSb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQThF
NUNCMjExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MUm93LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGQThFNUNCMzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRo
TUxTcXVhcmVSb290LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4RTVDQjQx
MTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGQThFNUNCNTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0
aE1MU3ViU3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
ck1hdGhNTFN1YlN1cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBOEU1Q0I2
MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxTdWJTdXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MU3ViU3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZBOEU1Q0I3MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxVbmRl
ck92ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE4RTVDQjgx
MTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hdGhNTEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUYx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjAzOCw2ICsxNjA3NCwy
NCBAQAogCQkJCUZBQkU3MkYzMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRodGFncy5pbiAqLywKIAkJ
CQlGQTY1NEE2RDExMDhBQkZGMDAyNjE1RTAgLyogUmVuZGVyTWF0aE1MQmxvY2suY3BwICovLAog
CQkJCUZBNjU0QTZFMTEwOEFCRkYwMDI2MTVFMCAvKiBSZW5kZXJNYXRoTUxCbG9jay5oICovLAor
CQkJCUZBOEU1Q0E3MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuY3BwICov
LAorCQkJCUZBOEU1Q0E4MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuaCAq
LywKKwkJCQlGQThFNUNBOTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MRnJhY3Rpb24u
Y3BwICovLAorCQkJCUZBOEU1Q0FBMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxGcmFj
dGlvbi5oICovLAorCQkJCUZBOEU1Q0FCMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxN
YXRoLmNwcCAqLywKKwkJCQlGQThFNUNBQzExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1M
TWF0aC5oICovLAorCQkJCUZBOEU1Q0FEMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxP
cGVyYXRvci5jcHAgKi8sCisJCQkJRkE4RTVDQUUxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1h
dGhNTE9wZXJhdG9yLmggKi8sCisJCQkJRkE4RTVDQUYxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRl
ck1hdGhNTFJvb3QuY3BwICovLAorCQkJCUZBOEU1Q0IwMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5k
ZXJNYXRoTUxSb290LmggKi8sCisJCQkJRkE4RTVDQjExMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRl
ck1hdGhNTFJvdy5jcHAgKi8sCisJCQkJRkE4RTVDQjIxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRl
ck1hdGhNTFJvdy5oICovLAorCQkJCUZBOEU1Q0IzMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJN
YXRoTUxTcXVhcmVSb290LmNwcCAqLywKKwkJCQlGQThFNUNCNDExMjBBNjJCMDA3RjhCMDIgLyog
UmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oICovLAorCQkJCUZBOEU1Q0I1MTEyMEE2MkIwMDdGOEIw
MiAvKiBSZW5kZXJNYXRoTUxTdWJTdXAuY3BwICovLAorCQkJCUZBOEU1Q0I2MTEyMEE2MkIwMDdG
OEIwMiAvKiBSZW5kZXJNYXRoTUxTdWJTdXAuaCAqLywKKwkJCQlGQThFNUNCNzExMjBBNjJCMDA3
RjhCMDIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCAqLywKKwkJCQlGQThFNUNCODExMjBB
NjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IG1hdGhtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xODUxMSw2ICsxODU2
NSwxNSBAQAogCQkJCUI3MUZFNkRGMTEwOTFDQjMwMERBRUY3NyAvKiBQcmludENvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCTlGNzIzMDRGMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9m
aWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjcyMzA1MTExMTg0QjQxMDBBRDAxMjYgLyogU2Ny
aXB0UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBOEU1Q0JBMTEyMEE2MkIwMDdGOEIw
MiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBOEU1Q0JDMTEy
MEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkE4RTVDQkUxMTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTE1hdGguaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZBOEU1Q0MwMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxPcGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkE4RTVDQzIxMTIwQTYyQjAwN0Y4QjAyIC8qIFJl
bmRlck1hdGhNTFJvb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBOEU1Q0M0MTEyMEE2MkIwMDdG
OEIwMiAvKiBSZW5kZXJNYXRoTUxSb3cuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBOEU1Q0M2MTEy
MEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGQThFNUNDODExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MU3ViU3VwLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGQThFNUNDQTExMjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1M
VW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjZGQzE5NzExMjJFODJBMDBFODAxOTYg
LyogU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMjA2OTAsNiArMjA3NTMsMTUgQEAK
IAkJCQk4NEQwQzQwNDExMTVGMUQ0MDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI3NzZENDNEMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUY3MjMwNTAxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlw
dFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZBOEU1Q0I5MTEyMEE2MkIwMDdGOEIw
MiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkE4RTVDQkIx
MTIwQTYyQjAwN0Y4QjAyIC8qIFJlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUZBOEU1Q0JEMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZBOEU1Q0JGMTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQThFNUNDMTExMjBBNjJCMDA3RjhC
MDIgLyogUmVuZGVyTWF0aE1MUm9vdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQThFNUNDMzEx
MjBBNjJCMDA3RjhCMDIgLyogUmVuZGVyTWF0aE1MUm93LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZBOEU1Q0M1MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZBOEU1Q0M3MTEyMEE2MkIwMDdGOEIwMiAvKiBSZW5kZXJNYXRo
TUxTdWJTdXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkE4RTVDQzkxMTIwQTYyQjAwN0Y4QjAy
IC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5RjZGQzE5
NjExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4
OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gNTQ2MDYpCisrKyBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsMTQgQEAKICNpbmNsdWRlICJN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgiCiAKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5o
IgotI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1M
RmVuY2VkLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCIKKyNpbmNsdWRlICJS
ZW5kZXJNYXRoTUxNYXRoLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MUm9vdC5oIgorI2luY2x1
ZGUgIlJlbmRlck1hdGhNTFJvdy5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTFNxdWFyZVJvb3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxTdWJTdXAuaCIKKyNpbmNsdWRlICJSZW5kZXJNYXRo
TUxVbmRlck92ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtNDgsOCArNTUs
MzMgQEAgUGFzc1JlZlB0cjxNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50PgogCiBSZW5kZXJP
YmplY3QqIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hICphcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIC8vIEZJWE1FOiBUaGlz
IG1ldGhvZCB3aWxsIGNvbnRhaW4gdGhlIHNwZWNpYWxpemVkIHJlbmRlcmVycyBiYXNlZCBvbiBl
bGVtZW50IG5hbWUKLSAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRl
ck1hdGhNTEJsb2NrKHRoaXMpOworICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gMDsKKyAgICBp
ZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptcm93VGFnKSkKKyAgICAgICAgb2JqZWN0ID0g
bmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MUm93KHRoaXMpOworICAgIGVsc2UgaWYgKGhhc0xvY2Fs
TmFtZShNYXRoTUxOYW1lczo6bWZlbmNlZFRhZykpCisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJl
bmEpIFJlbmRlck1hdGhNTEZlbmNlZCh0aGlzKTsKKyAgICBlbHNlIGlmIChoYXNMb2NhbE5hbWUo
TWF0aE1MTmFtZXM6Om1mcmFjVGFnKSkKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVu
ZGVyTWF0aE1MRnJhY3Rpb24odGhpcyk7CisgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhN
TE5hbWVzOjptc3ViVGFnKSkKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0
aE1MU3ViU3VwKHRoaXMpOworICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6
bXN1cFRhZykpCisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTFN1YlN1
cCh0aGlzKTsKKyAgICBlbHNlIGlmIChoYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1zdWJzdXBU
YWcpKQorICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxTdWJTdXAodGhp
cyk7CisgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptb3ZlclRhZykpCisg
ICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTFVuZGVyT3Zlcih0aGlzKTsK
KyAgICBlbHNlIGlmIChoYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om11bmRlclRhZykpCisgICAg
ICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTFVuZGVyT3Zlcih0aGlzKTsKKyAg
ICBlbHNlIGlmIChoYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om11bmRlcm92ZXJUYWcpKQorICAg
ICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxVbmRlck92ZXIodGhpcyk7Cisg
ICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptc3FydFRhZykpCisgICAgICAg
IG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QodGhpcyk7CisgICAg
ZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptcm9vdFRhZykpCisgICAgICAgIG9i
amVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTFJvb3QodGhpcyk7CisgICAgZWxzZSBpZiAo
aGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKKyAgICAgICAgb2JqZWN0ID0gbmV3
IChhcmVuYSkgUmVuZGVyTWF0aE1MTWF0aCh0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIG9iamVj
dCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTEJsb2NrKHRoaXMpOwogICAgIG9iamVjdC0+c2V0
U3R5bGUoc3R5bGUpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBXZWJDb3JlL21hdGht
bC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NDYwNikKKysrIFdlYkNvcmUvbWF0aG1sL01h
dGhNTFRleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIk1hdGhNTFRleHRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgot
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9y
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTQ2LDggKzQ2LDE0IEBAIFBhc3NS
ZWZQdHI8TWF0aE1MVGV4dEVsZW1lbnQ+IE1hdGhNTFRleHQKICAgICByZXR1cm4gbmV3IE1hdGhN
TFRleHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBNYXRo
TUxUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqICwgUmVuZGVyU3R5bGUq
IHN0eWxlKQorUmVuZGVyT2JqZWN0KiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CisgICAgaWYgKGhhc0xv
Y2FsTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MT3BlcmF0b3IodGhpcyk7CisgICAgICAgIG9i
amVjdC0+c2V0U3R5bGUoc3R5bGUpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKyAg
ICAKICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwog
fQogCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tp
IChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5j
bHVkZSAiUmVuZGVyTWF0aE1MRmVuY2VkLmgiCisKKyNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIK
KyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgorI2lu
Y2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7
CisKK1JlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKE5vZGUqIGZlbmNlZCkg
CisgICAgOiBSZW5kZXJNYXRoTUxSb3coZmVuY2VkKSwgCisgICAgbV9vcGVuKDB4MjgpLCAKKyAg
ICBtX2Nsb3NlKDB4MjkpCit7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVG
cm9tRWxlbWVudCgpCit7CisgICAgRWxlbWVudCogZmVuY2VkID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUoKSk7CisgCisgICAgLy8gRklYTUU6IEhhbmRsZSBvcGVuL2Nsb3NlIHZhbHVlcyB3
aXRoIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyICh0aGV5IHNob3VsZCBiZSB0cmVhdGVkIGxpa2Ug
dGV4dCkgICAKKyAgICBBdG9taWNTdHJpbmcgb3BlblZhbHVlID0gZmVuY2VkLT5nZXRBdHRyaWJ1
dGUoTWF0aE1MTmFtZXM6Om9wZW5BdHRyKTsKKyAgICBpZiAob3BlblZhbHVlLmxlbmd0aCgpID4g
MCkKKyAgICAgICAgbV9vcGVuID0gb3BlblZhbHVlWzBdOworICAgIEF0b21pY1N0cmluZyBjbG9z
ZVZhbHVlID0gZmVuY2VkLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmNsb3NlQXR0cik7Cisg
ICAgaWYgKGNsb3NlVmFsdWUubGVuZ3RoKCkgPiAwKQorICAgICAgICBtX2Nsb3NlID0gY2xvc2VW
YWx1ZVswXTsKKyAgICAKKyAgICBBdG9taWNTdHJpbmcgc2VwYXJhdG9ycyA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihmZW5jZWQpLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnNlcGFyYXRvcnNB
dHRyKTsKKyAgICBpZiAoIXNlcGFyYXRvcnMuaXNOdWxsKCkpIHsKKyAgICAgICAgVmVjdG9yPFVD
aGFyPiBjaGFyYWN0ZXJzOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNl
cGFyYXRvcnMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXds
aW5lKHNlcGFyYXRvcnNbaV0pKQorICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuYXBwZW5kKHNl
cGFyYXRvcnNbaV0pOworICAgICAgICB9CisgICAgICAgIG1fc2VwYXJhdG9ycyA9ICFzZXBhcmF0
b3JzLmxlbmd0aCgpID8gMCA6IFN0cmluZ0ltcGw6OmNyZWF0ZShjaGFyYWN0ZXJzLmRhdGEoKSAs
IGNoYXJhY3RlcnMuc2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGUgc2VwYXJh
dG9yIGRlZmF1bHRzIHRvIGEgc2luZ2xlIGNvbW1hCisgICAgICAgIG1fc2VwYXJhdG9ycyA9IFN0
cmluZ0ltcGw6OmNyZWF0ZSgiLCIpOworICAgIH0KKyAgICAKKyAgICBpZiAoaXNFbXB0eSgpKQor
ICAgICAgICBtYWtlRmVuY2VzKCk7Cit9CisKK1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTWF0
aE1MRmVuY2VkOjptYWtlT3BlcmF0b3JTdHlsZSgpIAoreworICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgbmV3U3R5bGUtPmluaGVy
aXRGcm9tKHN0eWxlKCkpOworICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7
CisgICAgbmV3U3R5bGUtPnNldEhlaWdodChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKKyAgICBu
ZXdTdHlsZS0+c2V0VmVydGljYWxBbGlnbihNSURETEUpOworICAgIHJldHVybiBuZXdTdHlsZTsK
K30KKwordm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6Om1ha2VGZW5jZXMoKQoreworICAgIFJlbmRl
ck9iamVjdCogb3BlbkZlbmNlID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxPcGVy
YXRvcihub2RlKCksIG1fb3Blbik7CisgICAgb3BlbkZlbmNlLT5zZXRTdHlsZShtYWtlT3BlcmF0
b3JTdHlsZSgpLnJlbGVhc2UoKSk7CisgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKG9wZW5GZW5j
ZSwgZmlyc3RDaGlsZCgpKTsKKyAgICBSZW5kZXJPYmplY3QqIGNsb3NlRmVuY2UgPSBuZXcgKHJl
bmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJhdG9yKG5vZGUoKSwgbV9jbG9zZSk7CisgICAg
Y2xvc2VGZW5jZS0+c2V0U3R5bGUobWFrZU9wZXJhdG9yU3R5bGUoKS5yZWxlYXNlKCkpOworICAg
IFJlbmRlckJsb2NrOjphZGRDaGlsZChjbG9zZUZlbmNlKTsKK30KKwordm9pZCBSZW5kZXJNYXRo
TUxGZW5jZWQ6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogKQor
eworICAgIC8vIG1ha2UgdGhlIGZlbmNlcyBpZiB0aGUgcmVuZGVyIG9iamVjdCBpcyBlbXB0eQor
ICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgCisg
ICAgaWYgKG1fc2VwYXJhdG9ycy5nZXQoKSkgeworICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQg
PSAwOworICAgICAgICBmb3IgKE5vZGUqIHBvc2l0aW9uID0gY2hpbGQtPm5vZGUoKTsgcG9zaXRp
b247IHBvc2l0aW9uID0gcG9zaXRpb24tPnByZXZpb3VzU2libGluZygpKSAKKyAgICAgICAgICAg
IGlmIChwb3NpdGlvbi0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUpCisgICAgICAg
ICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKGNvdW50PjEp
IHsKKyAgICAgICAgICAgIFVDaGFyIHNlcGFyYXRvcjsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gdXNlIHRoZSBsYXN0IHNlcGFyYXRvciBpZiB3ZSd2ZSBydW4gb3V0IG9mIHNwZWNpZmll
ZCBzZXBhcmF0b3JzCisgICAgICAgICAgICBpZiAoKGNvdW50IC0gMSkgPj0gbV9zZXBhcmF0b3Jz
LmdldCgpLT5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBzZXBhcmF0b3IgPSAoKm1fc2VwYXJh
dG9ycy5nZXQoKSlbbV9zZXBhcmF0b3JzLmdldCgpLT5sZW5ndGgoKSAtIDFdOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9ICgqbV9zZXBhcmF0b3JzLmdldCgp
KVtjb3VudCAtIDFdOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiBzZXBhcmF0b3JPYmogPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJhdG9y
KG5vZGUoKSwgc2VwYXJhdG9yKTsKKyAgICAgICAgICAgIHNlcGFyYXRvck9iai0+c2V0U3R5bGUo
bWFrZU9wZXJhdG9yU3R5bGUoKS5yZWxlYXNlKCkpOworICAgICAgICAgICAgUmVuZGVyQmxvY2s6
OmFkZENoaWxkKHNlcGFyYXRvck9iaiwgbGFzdENoaWxkKCkpOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIC8vIGlmIHdlIGhhdmUgYSBibG9jaywgd2UnbGwgd3JhcCBpdCBpbiBhbiBpbmxp
bmUtYmxvY2sKKyAgICBpZiAoY2hpbGQtPmlzQmxvY2tGbG93KCkgJiYgY2hpbGQtPnN0eWxlKCkt
PmRpc3BsYXkoKSAhPSBJTkxJTkVfQkxPQ0spIHsKKworICAgICAgICAvLyBibG9jayBvYmplY3Rz
IHdyYXBwZXIKKworICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBuZXcgKHJlbmRlckFyZW5h
KCkpIFJlbmRlckJsb2NrKG5vZGUoKSk7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIG5ld1N0eWxlLT5pbmhlcml0
RnJvbShzdHlsZSgpKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NL
KTsKKyAgICAgICAgYmxvY2stPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CisgICAgICAg
IAorICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoYmxvY2ssIGxhc3RDaGlsZCgpKTsKKyAg
ICAgICAgYmxvY2stPmFkZENoaWxkKGNoaWxkKTsgICAgCisgICAgICAgIAorICAgIH0gZWxzZQor
ICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoY2hpbGQsIGxhc3RDaGlsZCgpKTsKK30KKwor
dm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6OmxheW91dCgpIAoreworCisgICAgUmVuZGVyTWF0aE1M
Um93OjpsYXlvdXQoKTsKKyAgICAKKyAgICBpbnQgd2lkdGggPSAwOworICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY3VycmVudC0+aXNCb3hNb2RlbE9iamVj
dCgpKSB7CisKKyAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KGN1cnJlbnQpOworICAgICAgICAgICAgd2lkdGggKz0gYm94LT5vZmZz
ZXRXaWR0aCgpOworICAgICAgICB9CisgICAgfQorICAgIHdpZHRoKys7CisgICAgc3R5bGUoKS0+
c2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOworCisgICAgc2V0TmVlZHNMYXlvdXRBbmRQ
cmVmV2lkdGhzUmVjYWxjKCk7CisgICAgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsK
KyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CisgICAgCit9CisKK30gICAgCisKKyNlbmRpZgpJ
bmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93
c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFJlbmRlck1hdGhNTEZlbmNlZF9oCisjZGVmaW5lIFJlbmRlck1hdGhNTEZlbmNlZF9oCisK
KyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MUm93LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFJlbmRlck1hdGhNTEZlbmNlZCA6IHB1Ymxp
YyBSZW5kZXJNYXRoTUxSb3cgeworcHVibGljOgorICAgIFJlbmRlck1hdGhNTEZlbmNlZChOb2Rl
ICpmcmFjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRnJvbUVsZW1lbnQoKTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7
Citwcml2YXRlOgorICAgIHZvaWQgbWFrZUZlbmNlcygpOworICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gbWFrZU9wZXJhdG9yU3R5bGUoKTsKKyAgICBVQ2hhciBtX29wZW47CisgICAgVUNoYXIgbV9j
bG9zZTsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9zZXBhcmF0b3JzOworfTsKKyAgICAKK30K
KworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisKKyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxGZW5j
ZWRfaApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBN
aWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkK
KworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEZyYWN0aW9uLmgiCisKKyNpbmNsdWRlICJNYXRoTUxO
YW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxO
YW1lczsKKyAgICAKK3N0YXRpYyBjb25zdCBkb3VibGUgaG9yaXpvbnRhbFBhZCA9IDAuMjsKK3N0
YXRpYyBjb25zdCBpbnQgYm9yZGVyVGhpbiA9IDE7CitzdGF0aWMgY29uc3QgaW50IGJvcmRlck1l
ZGl1bSA9IDM7CitzdGF0aWMgY29uc3QgaW50IGJvcmRlclRoaWNrID0gNTsKKyAgICAKK1JlbmRl
ck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbihOb2RlKiBmcmFjdGlvbikgCisg
ICAgOiBSZW5kZXJNYXRoTUxCbG9jayhmcmFjdGlvbikgCit7CisgICAgc2V0Q2hpbGRyZW5Jbmxp
bmUoZmFsc2UpOworfQorCit2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxl
bWVudCgpCit7CisgICAgLy8gRklYTUU6IG1mcmFjIHdoZXJlIGJldmVsbGVkPXRydWUgd2lsbCBu
ZWVkIHRvIHJlb3JnYW5pemUgdGhlIGRlc2NlbmRhbnRzCisgICAgCisgICAgaWYgKGlzRW1wdHko
KSkgCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBFbGVtZW50KiBmcmFjdGlvbiA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihub2RlKCkpOworICAgIAorICAgIFJlbmRlck9iamVjdCogbnVtZXJh
dG9yID0gZmlyc3RDaGlsZCgpOworICAgIFN0cmluZyBuYWxpZ24gPSBmcmFjdGlvbi0+Z2V0QXR0
cmlidXRlKE1hdGhNTE5hbWVzOjpudW1hbGlnbkF0dHIpOworICAgIC8vIEZJWE1FOiB0aGVzZSBj
b25zdGFudHMgc2hvdWxkIGJlIGRlZmluZWQgc29tZXdoZXJlCisgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbGlnbiwgImxlZnQiKSkKKyAgICAgICAgbnVtZXJhdG9yLT5zdHlsZSgpLT5zZXRU
ZXh0QWxpZ24oTEVGVCk7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFsaWduLCAi
cmlnaHQiKSkKKyAgICAgICAgbnVtZXJhdG9yLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oUklHSFQp
OworICAgIGVsc2UKKyAgICAgICAgbnVtZXJhdG9yLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oQ0VO
VEVSKTsKKworICAgIFJlbmRlck9iamVjdCogZGVub21pbmF0b3IgPSBudW1lcmF0b3ItPm5leHRT
aWJsaW5nKCk7CisgICAgaWYgKCFkZW5vbWluYXRvcikKKyAgICAgICByZXR1cm47CisgICAgCisg
ICAgU3RyaW5nIGRhbGlnbiA9IGZyYWN0aW9uLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmRl
bm9tYWxpZ25BdHRyKTsKKyAgICAvLyBGSVhNRTogdGhlc2UgY29uc3RhbnRzIHNob3VsZCBiZSBk
ZWZpbmVkIHNvbWV3aGVyZQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkYWxpZ24sICJsZWZ0
IikpCisgICAgICAgIGRlbm9taW5hdG9yLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oTEVGVCk7Cisg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGFsaWduLCAicmlnaHQiKSkKKyAgICAgICAg
ZGVub21pbmF0b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihSSUdIVCk7CisgICAgZWxzZQorICAg
ICAgICBkZW5vbWluYXRvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKENFTlRFUik7CisgICAgICAg
IAorICAgIC8vIEZJWE1FOiBwYXJzZSB1bml0cworICAgIC8vIEZJWE1FOiB0aGVzZSBjb25zdGFu
dHMgc2hvdWxkIGJlIGRlZmluZWQgc29tZXdoZXJlCisgICAgU3RyaW5nIHRoaWNrbmVzcyA9IGZy
YWN0aW9uLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmxpbmV0aGlja25lc3NBdHRyKTsKKyAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodGhpY2tuZXNzLCAidGhpbiIpKQorICAgICAgICBkZW5v
bWluYXRvci0+c3R5bGUoKS0+c2V0Qm9yZGVyVG9wV2lkdGgoYm9yZGVyVGhpbik7CisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodGhpY2tuZXNzLCAibWVkaXVtIikpCisgICAgICAgIGRl
bm9taW5hdG9yLT5zdHlsZSgpLT5zZXRCb3JkZXJUb3BXaWR0aChib3JkZXJNZWRpdW0pOworICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHRoaWNrbmVzcywgInRoaWNrIikpCisgICAgICAg
IGRlbm9taW5hdG9yLT5zdHlsZSgpLT5zZXRCb3JkZXJUb3BXaWR0aChib3JkZXJUaGljayk7ICAg
IAorfQorCit2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjphZGRDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQoreworICAgIFJlbmRlckJsb2NrKiBy
b3cgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTEJsb2NrKG5vZGUoKSk7CisgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiByb3dTdHlsZSA9IG1ha2VCbG9ja1N0eWxlKCk7CisKKyAgICBy
b3dTdHlsZS0+c2V0VGV4dEFsaWduKENFTlRFUik7CisgICAgTGVuZ3RoIHBhZChzdGF0aWNfY2Fz
dDxpbnQ+KHJvd1N0eWxlLT5mb250U2l6ZSgpICogaG9yaXpvbnRhbFBhZCksIEZpeGVkKTsKKyAg
ICByb3dTdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFkKTsKKyAgICByb3dTdHlsZS0+c2V0UGFkZGlu
Z1JpZ2h0KHBhZCk7CisgICAgCisgICAgLy8gQWRkIGEgYm9yZGVyIHRvcCBpZiB0aGlzIGlzIHRo
ZSBkZW5vbWluYXRvci4KKyAgICBib29sIGlzTnVtZXJhdG9yID0gaXNFbXB0eSgpOworICAgIGlm
ICghaXNOdW1lcmF0b3IpIHsKKyAgICAgICAgLy8gZGVub21pbmF0b3IsIHNvIGFkZCBhIGJvcmRl
cgorICAgICAgICByb3dTdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgoYm9yZGVyVGhpbik7CisgICAg
ICAgIHJvd1N0eWxlLT5zZXRCb3JkZXJUb3BTdHlsZShTT0xJRCk7CisgICAgICAgIHJvd1N0eWxl
LT5zZXRCb3JkZXJUb3BDb2xvcihDb2xvcigwLCAwLCAwKSk7CisgICAgICAgIHJvd1N0eWxlLT5z
ZXRQYWRkaW5nVG9wKExlbmd0aCgzLCBGaXhlZCkpOworICAgIH0KKyAgICAKKyAgICByb3ctPnNl
dFN0eWxlKHJvd1N0eWxlLnJlbGVhc2UoKSk7CisgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJv
dywgYmVmb3JlQ2hpbGQpOworICAgIHJvdy0+YWRkQ2hpbGQoY2hpbGQpOworICAgIHVwZGF0ZUZy
b21FbGVtZW50KCk7Cit9CisKK30KKworCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKSW5kZXg6
IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxv
d3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBSZW5kZXJNYXRoTUxGcmFjdGlvbl9oCisjZGVmaW5lIFJlbmRlck1hdGhNTEZyYWN0aW9u
X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck1hdGhNTEZyYWN0aW9uIDog
cHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNYXRoTUxGcmFj
dGlvbihOb2RlKiBmcmFjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShN
QVRITUwpCisKKyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxGcmFjdGlvbl9oCkluZGV4OiBXZWJDb3Jl
L21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGht
bC9SZW5kZXJNYXRoTUxNYXRoLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1Jl
bmRlck1hdGhNTE1hdGguY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxNYXRoLmgi
CisKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworUmVuZGVyTWF0aE1MTWF0aDo6UmVuZGVyTWF0
aE1MTWF0aChOb2RlKiBtYXRoKQorICAgIDogUmVuZGVyTWF0aE1MUm93KG1hdGgpCit7Cit9CisK
K30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1Jl
bmRlck1hdGhNTE1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRo
TUxNYXRoLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRo
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJNYXRoTUxNYXRoX2gKKyNkZWZp
bmUgUmVuZGVyTWF0aE1MTWF0aF9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAi
UmVuZGVyTWF0aE1MUm93LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFJl
bmRlck1hdGhNTE1hdGggOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKK3B1YmxpYzoKKyAgICBS
ZW5kZXJNYXRoTUxNYXRoKE5vZGUqIGNvbnRhaW5lcik7CisgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyTWF0aE1MTWF0aCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KK307CisgICAgCit9CisKKwor
I2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisjZW5kaWYgLy8gUmVuZGVyTWF0aE1MTWF0aF9oCklu
ZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tp
IChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5j
bHVkZSAiUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCIKKworI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5o
IgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CisK
K1JlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihOb2RlKiBjb250YWlu
ZXIpCisgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhjb250YWluZXIpLAorICAgICAgbV9zdHJldGNo
SGVpZ2h0KDApLAorICAgICAgbV9vcGVyYXRvcigwKQoreworfQorICAgIAorUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKE5vZGUqIGNvbnRhaW5lciwgVUNoYXIgb3Bl
cmF0b3JDaGFyKQorICAgIDogUmVuZGVyTWF0aE1MQmxvY2soY29udGFpbmVyKSwKKyAgICAgIG1f
c3RyZXRjaEhlaWdodCgwKSwKKyAgICAgIG1fb3BlcmF0b3Iob3BlcmF0b3JDaGFyKQoreworfQor
ICAgIAorYm9vbCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6aXNDaGlsZEFsbG93ZWQoUmVuZGVyT2Jq
ZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCAgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnN0cmV0Y2hUb0hlaWdodChpbnQgaGVpZ2h0KQorewor
ICAgIGlmIChoZWlnaHQgPT0gbV9zdHJldGNoSGVpZ2h0KQorICAgICAgICByZXR1cm47CisgICAg
bV9zdHJldGNoSGVpZ2h0ID0gaGVpZ2h0OworICAgIAorICAgIHVwZGF0ZUJveE1vZGVsSW5mb0Zy
b21TdHlsZSgpOworICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAg
IG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OmxheW91dCgpIAoreworICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3Vs
ZG4ndCBiZSBjYWxsZWQgaGVyZSBidXQgd2hlbiB0aGUgb3BlcmF0b3IKKyAgICAvLyBpc24ndCBz
dHJldGNoZWQgKGUuZy4gb3V0c2lkZSBvZiBhIG1yb3cpLCBpdCBuZWVkcyB0byBiZSBjYWxsZWQg
c29tZWhvdworICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgUmVuZGVyQmxvY2s6OmxheW91
dCgpOworfQorCisvLyBUaGlzIGlzIGEgdGFibGUgb2Ygc3RyZXRjaHkgY2hhcmFjdGVycy4KKy8v
IEZJWE1FOiBTaG91bGQgdGhpcyBiZSByZWFkIGZyb20gdGhlIHVuaWNvZGUgY2hhcmFjdGVyaXN0
aWNzIHNvbWVob3c/CisvLyB0YWJsZTogIHN0cmV0Y2h5IG9wZXJhdG9yLCB0b3AgY2hhciwgZXh0
ZW5zaW9uIGNoYXIsIGJvdHRvbSBjaGFyLCBtaWRkbGUgY2hhcgorc3RhdGljIGNvbnN0IFVDaGFy
IHN0cmV0Y2h5WzldWzVdID0geworeyAweDI4ICAsIDB4MjM5YiwgMHgyMzljLCAweDIzOWQsIDB4
MCAgICB9LCAvLyBsZWZ0IHBhcmVudGhlc2lzCit7IDB4MjkgICwgMHgyMzllLCAweDIzOWYsIDB4
MjNhMCwgMHgwICAgIH0sIC8vIHJpZ2h0IHBhcmVudGhlc2lzCit7IDB4NWIgICwgMHgyM2ExLCAw
eDIzYTIsIDB4MjNhMywgMHgwICAgIH0sIC8vIGxlZnQgc3F1YXJlIGJyYWNrZXQKK3sgMHg1ZCAg
LCAweDIzYTQsIDB4MjNhNSwgMHgyM2E2LCAweDAgICAgfSwgLy8gcmlnaHQgc3F1YXJlIGJyYWNr
ZXQKK3sgMHg3YiAgLCAweDIzYTcsIDB4MjNhYSwgMHgyM2E5LCAweDIzYTggfSwgLy8gbGVmdCBj
dXJseSBicmFja2V0Cit7IDB4N2MgICwgMHgyM2QwLCAweDIzZDAsIDB4MjNkMCwgMHgwICAgIH0s
IC8vIHZlcnRpY2FsIGJhcgoreyAweDdkICAsIDB4MjNhYiwgMHgyM2FhLCAweDIzYWQsIDB4MjNh
YyB9LCAvLyByaWdodCBjdXJseSBicmFja2V0Cit7IDB4MjIyYiwgMHgyMzIwLCAweDIzYWUsIDB4
MjMyMSwgMHgwICAgIH0sIC8vIGludGVncmFsIHNpZ24KK3sgMHgwICAgLCAweDAsICAgIDB4MCwg
ICAgMHgwLCAgICAweDAgICAgfQorfTsKKwordm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBk
YXRlRnJvbUVsZW1lbnQoKQoreworICAgIHdoaWxlIChmaXJzdENoaWxkKCkpIHsKKyAgICAgICBS
ZW5kZXJPYmplY3QqIG9iaiA9IGZpcnN0Q2hpbGQoKTsKKyAgICAgICByZW1vdmVDaGlsZChvYmop
OworICAgIH0KKyAgICAKKyAgICBVQ2hhciBmaXJzdENoYXIgPSBtX29wZXJhdG9yOworICAgICAg
ICAKKyAgICBFbGVtZW50KiBtbyA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOworICAg
IGlmICghZmlyc3RDaGFyICYmIG1vKSB7CisgICAgICAgIC8vIEZpbmQgdGhlIG9wZXJhdG9yIGNo
YXJhY3RlciBpbiB0aGUgdGV4dCBjb250ZW50CisgICAgICAgIAorICAgICAgICBTdHJpbmcgb3BU
ZXh0ID0gbW8tPnRleHRDb250ZW50KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyAhZmlyc3RDaGFyICYmIGkgPCBvcFRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAg
aWYgKCFpc1NwYWNlT3JOZXdsaW5lKG9wVGV4dFtpXSkpCisgICAgICAgICAgICAgICBmaXJzdENo
YXIgPSBvcFRleHRbaV07CisgICAgICAgIH0KKyAgICB9CisgICAgaW50IGluZGV4ID0gLTE7Cisg
ICAgaWYgKGZpcnN0Q2hhcikgeworICAgICAgICBmb3IgKGluZGV4Kys7IHN0cmV0Y2h5W2luZGV4
XVswXTsgaW5kZXgrKykgeworICAgICAgICAgICAgaWYgKHN0cmV0Y2h5W2luZGV4XVswXSA9PSBm
aXJzdENoYXIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgYm9vbCBub1N0cmV0Y2ggPSBmYWxzZTsKKyAgICBpZiAobW8pIHsKKyAgICAgICAgQXRv
bWljU3RyaW5nIHN0cmV0Y2h5QXR0ciA9IG1vLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnN0
cmV0Y2h5QXR0cik7CisgICAgICAgIG5vU3RyZXRjaCA9IGVxdWFsSWdub3JpbmdDYXNlKHN0cmV0
Y2h5QXR0ciwgImZhbHNlIik7CisgICAgfQorICAgIAorICAgIC8vIGVpdGhlciB3ZSBoYXZlIG5v
IGNoYXJhY3RlcnMsIHRoZSBzdHJldGNoIGhlaWdodCBpcyBzbWFsbCwgb3Igd2UgaGF2ZSBhIG5v
bi1zdHJldGNoYWJsZSBjaGFyYWN0ZXIKKyAgICAvLyBJZiBzbywgdGhlbiB3ZSBqdXN0IHNldCB0
aGUgZm9udCBzaXplIGFuZCB3cmFwIHRoZSB0ZXh0CisgICAgYm9vbCBjYW5TdHJldGNoID0gaW5k
ZXggPj0gMCAmJiBzdHJldGNoeVtpbmRleF1bMF07CisgICAgaWYgKG5vU3RyZXRjaCB8fCAhZmly
c3RDaGFyIHx8IG1fc3RyZXRjaEhlaWdodCA8PSAyNCB8fCAhY2FuU3RyZXRjaCkgeworCisgICAg
ICAgIG1faXNTdGFja2VkID0gZmFsc2U7CisgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluZXIg
PSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKG5vZGUoKSk7CisgICAgICAgIAorICAg
ICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgp
OworICAgICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CisgICAgICAgIG5ld1N0
eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKworICAgICAgICBpbnQgY3VycmVudEZvbnRTaXplID0g
c3R5bGUoKS0+Zm9udFNpemUoKTsKKyAgICAgICAgaWYgKCFub1N0cmV0Y2ggJiYgbV9zdHJldGNo
SGVpZ2h0ID4gMCAmJiBtX3N0cmV0Y2hIZWlnaHQgPD0gMjQgICYmIG1fc3RyZXRjaEhlaWdodCA+
IGN1cnJlbnRGb250U2l6ZSAmJiBjYW5TdHJldGNoKSB7CisgICAgICAgICAgICBGb250RGVzY3Jp
cHRpb24qIGRlc2MgPSBuZXcgRm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgICAgICBkZXNjLT5z
ZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKKyAgICAgICAgICAgIGRlc2MtPnNldFNwZWNpZmllZFNp
emUobV9zdHJldGNoSGVpZ2h0KTsKKyAgICAgICAgICAgIGRlc2MtPnNldENvbXB1dGVkU2l6ZSht
X3N0cmV0Y2hIZWlnaHQpOworICAgICAgICAgICAgbmV3U3R5bGUtPnNldEZvbnREZXNjcmlwdGlv
bigqZGVzYyk7CisgICAgICAgICAgICBuZXdTdHlsZS0+Zm9udCgpLnVwZGF0ZShuZXdTdHlsZS0+
Zm9udCgpLmZvbnRTZWxlY3RvcigpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmV3
U3R5bGUtPnNldFZlcnRpY2FsQWxpZ24oQkFTRUxJTkUpOworICAgICAgICBjb250YWluZXItPnNl
dFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIGFkZENoaWxkKGNvbnRhaW5lcik7
CisgICAgIAorICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBS
ZW5kZXJUZXh0KG5vZGUoKSwgbV9vcGVyYXRvciA/IFN0cmluZ0ltcGw6OmNyZWF0ZSgmbV9vcGVy
YXRvciwgMSkgOiBTdHJpbmdJbXBsOjpjcmVhdGUobW8tPnRleHRDb250ZW50KCkpKTsKKyAgICAg
ICAgdGV4dC0+c2V0U3R5bGUoY29udGFpbmVyLT5zdHlsZSgpKTsKKyAgICAgICAgY29udGFpbmVy
LT5hZGRDaGlsZCh0ZXh0KTsKKyAgICAKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBidWlsZCBz
dHJldGNoYWJsZSBjaGFyYWN0ZXJzCisgICAgICAgIG1faXNTdGFja2VkID0gdHJ1ZTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChzdHJldGNoeVtpbmRleF1bNF0pIHsKKyAgICAgICAgCisgICAgICAg
ICAgICAvLyB3ZSBoYXZlIGEgbWlkZGxlIGdseXBoIChlLmcuIGEgY3VybHkgYnJhY2tldCkKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaW50IGhhbGYgPSAobV9zdHJldGNoSGVpZ2h0IC0gMTAp
IC8gMjsKKyAgICAgICAgICAgIGlmIChoYWxmIDw9IDEwKSB7CisgICAgICAgICAgICAgICAgLy8g
d2Ugb25seSBoYXZlIGVub3VnaCBzcGFjZSBmb3IgdGhlIHRvcCAmIGJvdHRvbSBnbHlwaAorICAg
ICAgICAgICAgICAgIG1ha2VHbHlwaChzdHJldGNoeVtpbmRleF1bMV0sIGhhbGYpOworICAgICAg
ICAgICAgICAgIG1ha2VHbHlwaChzdHJldGNoeVtpbmRleF1bNF0sIDEwLCAtMik7CisgICAgICAg
ICAgICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVszXSwgMCwgLTQpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIHRvIGV4dGVuZCBib3RoIHRo
ZSB0b3AgYW5kIGJvdHRvbSB0byB0aGUgbWlkZGxlCisgICAgICAgICAgICAgICAgbWFrZUdseXBo
KHN0cmV0Y2h5W2luZGV4XVsxXSwgMTApOworICAgICAgICAgICAgICAgIGludCByZW1haW5pbmcg
PSBoYWxmLTEwOworICAgICAgICAgICAgICAgIHdoaWxlIChyZW1haW5pbmcgPiAwKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPCAxMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVsyXSwgcmVtYWluaW5nKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzJd
LCAxMCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgLT0gMTA7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgLy8gVGhlIG1pZGRsZSBnbHlwaAorICAgICAgICAgICAgICAgIG1ha2VHbHlw
aChzdHJldGNoeVtpbmRleF1bNF0sIDEwLCAtMik7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgcmVtYWluaW5nID0gaGFsZi0xMDsKKyAgICAgICAgICAgICAgICAvLyBtYWtlIHN1
cmUgd2UgaGF2ZSB0aGUgZnVsbCBoZWlnaHQgaW4gY2FzZSB0aGUgaGVpZ2h0IGlzIG9kZAorICAg
ICAgICAgICAgICAgIGlmIChtX3N0cmV0Y2hIZWlnaHQgJSAyID09IDEpCisgICAgICAgICAgICAg
ICAgICAgIHJlbWFpbmluZysrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICB3aGlsZSAocmVtYWluaW5nID4gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVtYWlu
aW5nIDwgMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VHbHlwaChzdHJldGNoeVtp
bmRleF1bMl0sIHJlbWFpbmluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcg
PSAwOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgbWFrZUdseXBoKHN0cmV0Y2h5W2luZGV4XVsyXSwgMTApOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmVtYWluaW5nIC09IDEwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIG1ha2VHbHlwaChzdHJldGNoeVtpbmRleF1bM10sIDAs
IC00KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgCisgICAgICAg
ICAgICAvLyB3ZSBkbyBub3QgaGF2ZSBhIG1pZGRsZSBnbHlwaAorICAgICAgICAgICAgCisgICAg
ICAgICAgICBpbnQgcmVtYWluaW5nID0gbV9zdHJldGNoSGVpZ2h0IC0gMjA7CisgICAgICAgICAg
ICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzFdLCAxMCk7CisgICAgICAgICAgICB3aGlsZSAo
cmVtYWluaW5nID4gMCkgeworICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPCAxMCkgewor
ICAgICAgICAgICAgICAgICAgICBtYWtlR2x5cGgoc3RyZXRjaHlbaW5kZXhdWzJdLCByZW1haW5p
bmcpOworICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSAwOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1ha2VHbHlwaChzdHJldGNoeVtpbmRleF1b
Ml0sIDEwKTsKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nIC09IDEwOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1ha2VHbHlwaChzdHJldGNoeVtp
bmRleF1bM10sIDAsIC00KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAKK30KKworUmVmUHRy
PFJlbmRlclN0eWxlPiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6bWFrZVN0YWNrYWJsZVN0eWxlKGlu
dCBzaXplLCBpbnQgdG9wUmVsYXRpdmUpCit7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdT
dHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20o
c3R5bGUoKSk7CisgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworCisgICAgLy8gMTRw
eCBpcyB0aGUgc2l6ZSB3ZSdsbCB1c2UgZm9yIGFsbCBjaGFyYWN0ZXJzCisgICAgRm9udERlc2Ny
aXB0aW9uKiBkZXNjID0gbmV3IEZvbnREZXNjcmlwdGlvbigpOworICAgIGRlc2MtPnNldElzQWJz
b2x1dGVTaXplKHRydWUpOworICAgIGRlc2MtPnNldFNwZWNpZmllZFNpemUoMTQpOworICAgIGRl
c2MtPnNldENvbXB1dGVkU2l6ZSgxNCk7CisgICAgbmV3U3R5bGUtPnNldEZvbnREZXNjcmlwdGlv
bigqZGVzYyk7CisgICAgbmV3U3R5bGUtPmZvbnQoKS51cGRhdGUobmV3U3R5bGUtPmZvbnQoKS5m
b250U2VsZWN0b3IoKSk7CisgICAgbmV3U3R5bGUtPnNldExpbmVIZWlnaHQoTGVuZ3RoKDEyLCBG
aXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKFRPUCk7CisgICAgCisgICAg
aWYgKHNpemUgPiAwKQorICAgICAgICBuZXdTdHlsZS0+c2V0TWF4SGVpZ2h0KExlbmd0aChzaXpl
LCBGaXhlZCkpOworICAgICAgICAKKyAgICBuZXdTdHlsZS0+c2V0T3ZlcmZsb3dZKE9ISURERU4p
OworICAgIG5ld1N0eWxlLT5zZXRPdmVyZmxvd1goT0hJRERFTik7CisgICAgaWYgKHRvcFJlbGF0
aXZlKSB7CisgICAgICAgIG5ld1N0eWxlLT5zZXRUb3AoTGVuZ3RoKHRvcFJlbGF0aXZlLCBGaXhl
ZCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0UG9zaXRpb24oUmVsYXRpdmVQb3NpdGlvbik7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBuZXdTdHlsZTsKK30KKworUmVuZGVyQmxvY2sqIFJlbmRl
ck1hdGhNTE9wZXJhdG9yOjptYWtlR2x5cGgoVUNoYXIgZ2x5cGgsIGludCBzaXplLCBpbnQgY2hh
clJlbGF0aXZlLCBpbnQgdG9wUmVsYXRpdmUpCit7CisgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5l
ciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2sobm9kZSgpKTsKKyAgICBjb250YWlu
ZXItPnNldFN0eWxlKG1ha2VTdGFja2FibGVTdHlsZShzaXplLCB0b3BSZWxhdGl2ZSkucmVsZWFz
ZSgpKTsKKyAgICBhZGRDaGlsZChjb250YWluZXIpOworICAgIFJlbmRlckJsb2NrKiBwYXJlbnQg
PSBjb250YWluZXI7CisgICAgaWYgKGNoYXJSZWxhdGl2ZSkgeworICAgICAgICBSZW5kZXJCbG9j
ayogY2hhckJsb2NrID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhub2RlKCkpOwor
ICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGNoYXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGUoKTsKKyAgICAgICAgY2hhclN0eWxlLT5pbmhlcml0RnJvbShjb250YWluZXItPnN0eWxlKCkp
OworICAgICAgICBjaGFyU3R5bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKKyAgICAgICAg
Y2hhclN0eWxlLT5zZXRUb3AoTGVuZ3RoKGNoYXJSZWxhdGl2ZSwgRml4ZWQpKTsKKyAgICAgICAg
Y2hhclN0eWxlLT5zZXRQb3NpdGlvbihSZWxhdGl2ZVBvc2l0aW9uKTsKKyAgICAgICAgY2hhckJs
b2NrLT5zZXRTdHlsZShjaGFyU3R5bGUpOworICAgICAgICBwYXJlbnQtPmFkZENoaWxkKGNoYXJC
bG9jayk7CisgICAgICAgIHBhcmVudCA9IGNoYXJCbG9jazsKKyAgICB9CisgICAgIAorICAgIFJl
bmRlclRleHQqIHRleHQgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHQobm9kZSgpLCBT
dHJpbmdJbXBsOjpjcmVhdGUoJmdseXBoLCAxKSk7CisgICAgdGV4dC0+c2V0U3R5bGUoY29udGFp
bmVyLT5zdHlsZSgpKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKHRleHQpOworICAgIHJldHVybiBj
b250YWluZXI7Cit9CisKK2ludCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6YmFzZWxpbmVQb3NpdGlv
bihib29sIGZpcnN0TGluZSwgYm9vbCBpc1Jvb3RMaW5lQm94KSBjb25zdAoreworICAgIHJldHVy
biAhbV9pc1N0YWNrZWQgJiYgZmlyc3RDaGlsZCgpID8gZmlyc3RDaGlsZCgpLT5iYXNlbGluZVBv
c2l0aW9uKGZpcnN0TGluZSwgaXNSb290TGluZUJveCkgOiBvZmZzZXRIZWlnaHQoKTsKK30KKwor
fQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBN
aWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJNYXRoTUxPcGVyYXRvcl9oCisjZGVmaW5lIFJl
bmRlck1hdGhNTE9wZXJhdG9yX2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJS
ZW5kZXJNYXRoTUxCbG9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBS
ZW5kZXJNYXRoTUxPcGVyYXRvciA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CitwdWJsaWM6
CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoTm9kZSogY29udGFpbmVyKTsKKyAgICBSZW5kZXJN
YXRoTUxPcGVyYXRvcihOb2RlKiBjb250YWluZXIsIFVDaGFyIG9wZXJhdG9yQ2hhcik7CisgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCB2b2lkIHN0cmV0Y2hUb0hlaWdodChpbnQgcGl4ZWxIZWlnaHQpOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOyAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGJvb2wgLCBib29sKSBjb25zdDsgICAgCisgICAg
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgUmVm
UHRyPFJlbmRlclN0eWxlPiBtYWtlU3RhY2thYmxlU3R5bGUoaW50IHNpemUsIGludCB0b3BSZWxh
dGl2ZSk7CisgICAgdmlydHVhbCBSZW5kZXJCbG9jayogbWFrZUdseXBoKFVDaGFyIGdseXBoLCBp
bnQgc2l6ZSA9IDAsIGludCBjaGFyUmVsYXRpdmUgPSAwLCBpbnQgdG9wUmVsYXRpdmUgPSAwKTsK
KyAgICAKK3ByaXZhdGU6CisgICAgaW50IG1fc3RyZXRjaEhlaWdodDsKKyAgICBib29sIG1faXNT
dGFja2VkOworICAgIFVDaGFyIG1fb3BlcmF0b3I7Cit9OworCitpbmxpbmUgUmVuZGVyTWF0aE1M
T3BlcmF0b3IqIHRvUmVuZGVyTWF0aE1MT3BlcmF0b3IoUmVuZGVyTWF0aE1MQmxvY2sqIGJsb2Nr
KQoreyAKKyAgICBBU1NFUlQoIWJsb2NrIHx8IGJsb2NrLT5pc1JlbmRlck1hdGhNTE9wZXJhdG9y
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJNYXRoTUxPcGVyYXRvcio+KGJsb2Nr
KTsKK30KKworaW5saW5lIGNvbnN0IFJlbmRlck1hdGhNTE9wZXJhdG9yKiB0b1JlbmRlck1hdGhN
TE9wZXJhdG9yKGNvbnN0IFJlbmRlck1hdGhNTEJsb2NrKiBibG9jaykKK3sgCisgICAgQVNTRVJU
KCFibG9jayB8fCBibG9jay0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyTWF0aE1MT3BlcmF0b3IqPihibG9jayk7Cit9CisgICAg
Cit9CisKKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisjZW5kaWYgLy8gUmVuZGVyTWF0aE1M
T3BlcmF0b3JfaApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3Nr
aSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2lu
Y2x1ZGUgIlJlbmRlck1hdGhNTFJvb3QuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
K3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworY29uc3QgaW50IHJhZGljYWxCYXNlUGFk
ID0gMzsKKworUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChOb2RlICpleHByZXNz
aW9uKSAKKzogUmVuZGVyTWF0aE1MQmxvY2soZXhwcmVzc2lvbikgCit7Cit9CisKK3ZvaWQgUmVu
ZGVyTWF0aE1MUm9vdDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0
KiApCit7CisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBBZGQgYSBibG9jayBmb3Ig
dGhlIGluZGV4CisgICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IG5ldyAocmVuZGVyQXJlbmEo
KSkgUmVuZGVyQmxvY2sobm9kZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBpbmRl
eFN0eWxlID0gbWFrZUJsb2NrU3R5bGUoKTsKKyAgICAgICAgaW5kZXhTdHlsZS0+c2V0RGlzcGxh
eShJTkxJTkVfQkxPQ0spOworICAgICAgICBpbmRleFN0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKFRP
UCk7CisgICAgICAgIGJsb2NrLT5zZXRTdHlsZShpbmRleFN0eWxlLnJlbGVhc2UoKSk7CisgICAg
ICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChibG9jayk7CisgICAgICAgIAorICAgICAgICAvLyB0
aGlzIGlzIHRoZSBiYXNlLCBzbyB3cmFwIGl0IHNvIHdlIGNhbiBwYWQgaXQKKyAgICAgICAgYmxv
Y2sgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKG5vZGUoKSk7CisgICAgICAgIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gYmFzZVN0eWxlID0gbWFrZUJsb2NrU3R5bGUoKTsKKyAgICAgICAg
YmFzZVN0eWxlLT5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAgIGJhc2VTdHlsZS0+
c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKDAuNSAqIDAuNzUgLCBQZXJjZW50KSk7CisgICAgICAgIGJs
b2NrLT5zZXRTdHlsZShiYXNlU3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgUmVuZGVyQmxvY2s6
OmFkZENoaWxkKGJsb2NrKTsKKyAgICAgICAgYmxvY2stPmFkZENoaWxkKGNoaWxkKTsKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBhbHdheXMgYWRkIHRvIHRoZSBpbmRleAorICAgICAgICBmaXJz
dENoaWxkKCktPmFkZENoaWxkKGNoaWxkKTsKKyAgICB9Cit9Cit2b2lkIFJlbmRlck1hdGhNTFJv
b3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgaW50IHR4LCBpbnQgdHkpCit7CisgICAgUmVuZGVy
TWF0aE1MQmxvY2s6OnBhaW50KGluZm8gLCB0eCAsIHR5KTsKKyAgICAKKyAgICB0eCArPSB4KCk7
CisgICAgdHkgKz0geSgpOworICAgIAorICAgIGludCBtYXhIZWlnaHQgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KGxhc3RDaGlsZCgpKS0+b2Zmc2V0SGVpZ2h0KCk7CisgICAgaWYgKCFtYXhIZWln
aHQpIHsKKyAgICAgICAgLy8gZGVmYXVsdCB0byB0aGUgZm9udCBzaXplIGluIHBpeGVscyBpZiB3
ZSdyZSBlbXB0eQorICAgICAgICBtYXhIZWlnaHQgPSBzdHlsZSgpLT5mb250U2l6ZSgpOworICAg
IH0KKyAgICBpbnQgd2lkdGggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGxhc3RDaGlsZCgpKS0+
b2Zmc2V0V2lkdGgoKTsKKyAgICAKKyAgICBpbnQgaW5kZXhXaWR0aCA9IDA7CisgICAgUmVuZGVy
T2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChjdXJyZW50ICE9IGxh
c3RDaGlsZCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50LT5pc0JveE1vZGVsT2JqZWN0KCkpIHsK
KyAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KGN1cnJlbnQpOworICAgICAgICAgICAgaW5kZXhXaWR0aCArPSBib3gtPm9mZnNldFdp
ZHRoKCk7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5n
KCk7CisgICAgfQorICAgIAorICAgIGludCBzdGFydCA9IHR4ICsgaW5kZXhXaWR0aCtyYWRpY2Fs
QmFzZVBhZDsKKyAgICBJbnRQb2ludCB0b3BTdGFydChzdGFydCAsIHR5KTsKKyAgICBJbnRQb2lu
dCBib3R0b21MZWZ0KHN0YXRpY19jYXN0PGludD4oc3RhcnQgLSAwLjUgKiAwLjc1ICogc3R5bGUo
KS0+Zm9udFNpemUoKSkgLCB0eSArIG1heEhlaWdodCArIHJhZGljYWxCYXNlUGFkKTsKKyAgICBJ
bnRQb2ludCB0b3BMZWZ0KHN0YXRpY19jYXN0PGludD4oc3RhcnQgLSAwLjggKiAwLjc1ICogc3R5
bGUoKS0+Zm9udFNpemUoKSkgLCBzdGF0aWNfY2FzdDxpbnQ+KHR5ICsgbWF4SGVpZ2h0IC8gMS42
KSk7CisgICAgSW50UG9pbnQgbGVmdEVuZChzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0IC0gMC43NSAq
IHN0eWxlKCktPmZvbnRTaXplKCkpICwgc3RhdGljX2Nhc3Q8aW50Pih0eSArIG1heEhlaWdodCAv
IDEuNikpOworICAgIAorICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYp
OworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIGlu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS0+Y29sb3IoKSwgc1JHQkNvbG9yU3Bh
Y2UpOworICAgIAorICAgIC8vIGRyYXcgdG9wCisgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZSh0
b3BTdGFydCAsIEludFBvaW50KHRvcFN0YXJ0LngoKSArIHdpZHRoICwgdHkpKTsKKyAgICAvLyBk
cmF3IGZyb20gdG9wIGxlZnQgY29ybmVyIHRvIGJvdHRvbSBwb2ludCBvZiByYWRpY2FsCisgICAg
aW5mby5jb250ZXh0LT5kcmF3TGluZSh0b3BTdGFydCAsIGJvdHRvbUxlZnQpOworICAgIC8vIGRy
YXcgZnJvbSBib3R0b20gcG9pbnQgdG8gdG9wIG9mIGxlZnQgcGFydCBvZiByYWRpY2FsIGJhc2Ug
InBvY2tldCIKKyAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKGJvdHRvbUxlZnQgLCB0b3BMZWZ0
KTsKKyAgICAvLyBkcmF3IHRvIGVuZAorICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUodG9wTGVm
dCAsIGxlZnRFbmQpOworICAgIAorfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQor
CisKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3Nr
aS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBSZW5kZXJNYXRoTUxSb290X2gKKyNkZWZpbmUgUmVuZGVyTWF0aE1MUm9vdF9oCisKKyNpZiBF
TkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgUmVuZGVyTWF0aE1MUm9vdCA6IHB1YmxpYyBSZW5k
ZXJNYXRoTUxCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyTWF0aE1MUm9vdChOb2RlKiBmcmFj
dGlvbik7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFp
bnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworfTsKKyAgICAKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNQVRITUwpCisKKyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxSb290X2gKSW5kZXg6IFdlYkNvcmUv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwv
UmVuZGVyTWF0aE1MUm93LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxSb3cuaCIKKwor
I2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7
CisKK1JlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KE5vZGUqIHJvdykKKyAgICA6IFJl
bmRlck1hdGhNTEJsb2NrKHJvdykKK3sKK30KKworaW50IFJlbmRlck1hdGhNTFJvdzo6bm9uT3Bl
cmF0b3JIZWlnaHQoKSBjb25zdAoreworICAgIGludCBtYXhIZWlnaHQgPSAwOworICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY3VycmVudC0+aXNSZW5kZXJN
YXRoTUxCbG9jaygpKSB7CisgICAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayogYmxvY2sgPSB0
b1JlbmRlck1hdGhNTEJsb2NrKGN1cnJlbnQpOworICAgICAgICAgICAgaW50IGJsb2NrSGVpZ2h0
ID0gYmxvY2stPm5vbk9wZXJhdG9ySGVpZ2h0KCk7CisgICAgICAgICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgdGhpcyBib3ggaGFzIGEgbGFyZ2VyIGhlaWdodAorICAgICAgICAgICAgaWYgKGJsb2Nr
SGVpZ2h0ID4gbWF4SGVpZ2h0KQorICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGJsb2NrSGVp
Z2h0OworICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkgewor
CisgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdChjdXJyZW50KTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMg
Ym94IGhhcyBhIGxhcmdlciBoZWlnaHQKKyAgICAgICAgICAgIGlmIChib3gtPm9mZnNldEhlaWdo
dCgpID4gbWF4SGVpZ2h0KQorICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGJveC0+b2Zmc2V0
SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgfQor
ICAgIHJldHVybiBtYXhIZWlnaHQ7Cit9CisKKworCit2b2lkIFJlbmRlck1hdGhNTFJvdzo6bGF5
b3V0KCkgCit7CisgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworICAgIAorICAgIC8vIGNhbGN1
bGF0ZSB0aGUgbWF4aW11bSBoZWlnaHQKKyAgICBpbnQgbWF4SGVpZ2h0ID0gbm9uT3BlcmF0b3JI
ZWlnaHQoKTsKKyAgICBzdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKG1heEhlaWdodCwgRml4ZWQp
KTsKKworICAgIC8vIG5vdGlmeSBjb250YWluZWQgb3BlcmF0b3JzIHRoZXkgbWF5IG5lZWQgdG8g
cmVsYXlvdXQgdGhlaXIgc3RyZXRjaGVkIG9wZXJhdG9ycworICAgIGludCBjaGlsZENvdW50ID0g
MDsKKyAgICBpbnQgb3BlcmF0b3JDb3VudCA9IDA7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1
cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2li
bGluZygpKSB7CisgICAgICAgIGNoaWxkQ291bnQrKzsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlz
UmVuZGVyTWF0aE1MQmxvY2soKSkgeworICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sqIGJs
b2NrID0gdG9SZW5kZXJNYXRoTUxCbG9jayhjdXJyZW50KTsKKyAgICAgICAgICAgIGJsb2NrLT5z
dHJldGNoVG9IZWlnaHQobWF4SGVpZ2h0KTsKKyAgICAgICAgICAgIGlmIChibG9jay0+aXNSZW5k
ZXJNYXRoTUxPcGVyYXRvcigpKSAKKyAgICAgICAgICAgICAgICBvcGVyYXRvckNvdW50Kys7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVj
YWxjKCk7CisgICAgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsKKyAgICBSZW5kZXJC
bG9jazo6bGF5b3V0KCk7CisKKyAgICAvLyBtYWtlIGEgc2Vjb25kIHBhc3Mgd2l0aCB0aGUgcmVh
bCBoZWlnaHQgb2YgdGhlIG9wZXJhdG9ycworICAgIGludCBvcGVyYXRvckhlaWdodCA9IDA7Cisg
ICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1cnJlbnQ7IGN1
cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChjdXJyZW50LT5p
c1JlbmRlck1hdGhNTEJsb2NrKCkpIHsKKyAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrKiBi
bG9jayA9IHRvUmVuZGVyTWF0aE1MQmxvY2soY3VycmVudCk7CisgICAgICAgICAgICBpZiAoIWJs
b2NrLT5oYXNCYXNlKCkgJiYgIWJsb2NrLT5pc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkpIHsKKwor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGJveCBoYXMgYSBsYXJnZXIg
aGVpZ2h0CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5vZmZzZXRIZWlnaHQoKSA+IG1heEhl
aWdodCkKKyAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gYmxvY2stPm9mZnNldEhlaWdo
dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJsb2NrLT5pc1JlbmRlck1hdGhN
TE9wZXJhdG9yKCkpCisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5vZmZzZXRIZWlnaHQoKSA+
IG9wZXJhdG9ySGVpZ2h0KQorICAgICAgICAgICAgICAgICAgICBvcGVyYXRvckhlaWdodCA9IGJs
b2NrLT5vZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50LT5pc0JveE1v
ZGVsT2JqZWN0KCkpIHsKKworICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9
IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3VycmVudCk7CisKKyAgICAgICAgICAgIC8vIENoZWNr
IHRvIHNlZSBpZiB0aGlzIGJveCBoYXMgYSBsYXJnZXIgaGVpZ2h0CisgICAgICAgICAgICBpZiAo
Ym94LT5vZmZzZXRIZWlnaHQoKSA+IG1heEhlaWdodCkKKyAgICAgICAgICAgICAgICBtYXhIZWln
aHQgPSBib3gtPm9mZnNldEhlaWdodCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGlmIChjaGlsZENvdW50ID4gMCAmJiBjaGlsZENvdW50ID09IG9wZXJh
dG9yQ291bnQpIHsKKyAgICAgICAgLy8gd2UgaGF2ZSBvbmx5IG9wZXJhdG9ycywgc28gc2V0IHRo
ZSBtYXggaGVpZ2h0CisgICAgICAgIG1heEhlaWdodCA9IG9wZXJhdG9ySGVpZ2h0OworICAgIH0K
KyAgICAKKyAgICBpbnQgc3RyZXRjaEhlaWdodCA9IG1heEhlaWdodDsKKyAgICAKKyAgICAvLyBz
dHJldGNoIHRoZSBvcGVyYXRvcnMgYWdhaW4KKyAgICAvLyBhbHNvLCBjYWxjdWxhdGUgdGhlIHJv
dyBoZWlnaHQgbWF4aW11bQorICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RD
aGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBpZiAoY3VycmVudC0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKSB7CisgICAgICAgICAgICBS
ZW5kZXJNYXRoTUxCbG9jayogYmxvY2sgPSB0b1JlbmRlck1hdGhNTEJsb2NrKGN1cnJlbnQpOwor
ICAgICAgICAgICAgaWYgKGJsb2NrLT5pc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkpIHsKKyAgICAg
ICAgICAgICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogbWF0aG9wID0gdG9SZW5kZXJNYXRoTUxP
cGVyYXRvcihibG9jayk7CisgICAgICAgICAgICAgICAgbWF0aG9wLT5zdHJldGNoVG9IZWlnaHQo
c3RyZXRjaEhlaWdodCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJs
b2NrLT5zdHJldGNoVG9IZWlnaHQoc3RyZXRjaEhlaWdodCk7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QoY3VycmVudCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8g
Q2hlY2sgdG8gc2VlIGlmIHRoaXMgYm94IGhhcyBhIGxhcmdlciBoZWlnaHQKKyAgICAgICAgICAg
ICAgICBpZiAoYm94LT5vZmZzZXRIZWlnaHQoKSA+IG1heEhlaWdodCkKKyAgICAgICAgICAgICAg
ICAgICAgbWF4SGVpZ2h0ID0gYm94LT5vZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIGlmIChjdXJyZW50LT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKworICAgICAg
ICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
Y3VycmVudCk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGJveCBoYXMg
YSBsYXJnZXIgaGVpZ2h0CisgICAgICAgICAgICBpZiAoYm94LT5vZmZzZXRIZWlnaHQoKSA+IG1h
eEhlaWdodCkKKyAgICAgICAgICAgICAgICBtYXhIZWlnaHQgPSBib3gtPm9mZnNldEhlaWdodCgp
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0eWxlKCktPnNldEhlaWdodChMZW5ndGgo
bWF4SGVpZ2h0LCBGaXhlZCkpOworICAgIAorICAgIC8vIERvIHRoZSBmaW5hbCBsYXlvdXQKKyAg
ICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICBtYXJrQ29udGFpbmlu
Z0Jsb2Nrc0ZvckxheW91dCgpOworICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKyAgICAKK30K
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKwpJbmRleDogV2ViQ29yZS9tYXRobWwv
UmVuZGVyTWF0aE1MUm93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0
aE1MUm93LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlck1hdGhNTFJvd19oCisjZGVmaW5l
IFJlbmRlck1hdGhNTFJvd19oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVu
ZGVyTWF0aE1MQmxvY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgUmVu
ZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKK3B1YmxpYzoKKyAgICBS
ZW5kZXJNYXRoTUxSb3coTm9kZSogY29udGFpbmVyKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJNYXRoTUxSb3coKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBpbnQgbm9u
T3BlcmF0b3JIZWlnaHQoKSBjb25zdDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCk7Cit9OworICAgIAorfQorCisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQorI2VuZGlm
IC8vIFJlbmRlck1hdGhNTFJvd19oCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxT
cXVhcmVSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxT
cXVhcmVSb290LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhN
TFNxdWFyZVJvb3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxTcXVhcmVSb290
LmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJNYXRoTUxOYW1l
cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgTWF0aE1M
TmFtZXM7CisKK2NvbnN0IGludCByYWRpY2FsQmFzZVBhZCA9IDM7CisgICAgCitSZW5kZXJNYXRo
TUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KE5vZGUgKmV4cHJlc3Npb24pIAor
ICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZXhwcmVzc2lvbikgCit7Cit9CisKK3ZvaWQgUmVuZGVy
TWF0aE1MU3F1YXJlUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBpbnQgdHgsIGludCB0eSkK
K3sKKyAgICBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoaW5mbywgdHgsIHR5KTsKKyAgIAorICAg
IHR4ICs9IHgoKTsKKyAgICB0eSArPSB5KCk7CisKKyAgICBpbnQgbWF4SGVpZ2h0ID0gMDsKKyAg
ICBpbnQgd2lkdGggPSAwOworICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQo
KTsKKyAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICBpZiAoY3VycmVudC0+aXNCb3hNb2Rl
bE9iamVjdCgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBib3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnJlbnQpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhpcyBib3ggaGFzIGEgbGFyZ2VyIGhl
aWdodAorICAgICAgICAgICAgaWYgKGJveC0+b2Zmc2V0SGVpZ2h0KCkgPiBtYXhIZWlnaHQpCisg
ICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gYm94LT5vZmZzZXRIZWlnaHQoKTsKKyAgICAgICAg
ICAgIHdpZHRoICs9IGJveC0+b2Zmc2V0V2lkdGgoKTsKKyAgICAgICAgfQorICAgICAgICBjdXJy
ZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAgLy8gZGVmYXVsdCB0byB0
aGUgZm9udCBzaXplIGluIHBpeGVscyBpZiB3ZSdyZSBlbXB0eQorICAgIGlmICghbWF4SGVpZ2h0
KQorICAgICAgICBtYXhIZWlnaHQgPSBzdHlsZSgpLT5mb250U2l6ZSgpOworICAgIAorICAgIGlu
dCBmcm9udFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5mb250U2l6ZSgpICogMC43
NSk7CisgICAgSW50UG9pbnQgdG9wU3RhcnQodHggKyBmcm9udFdpZHRoICwgdHkpOworICAgIElu
dFBvaW50IGJvdHRvbUxlZnQoc3RhdGljX2Nhc3Q8aW50Pih0eCArIGZyb250V2lkdGggKiAwLjUp
ICwgdHkgKyBtYXhIZWlnaHQgKyByYWRpY2FsQmFzZVBhZCk7CisgICAgSW50UG9pbnQgdG9wTGVm
dChzdGF0aWNfY2FzdDxpbnQ+KHR4ICsgZnJvbnRXaWR0aCAqIDAuMikgLCB0eSArIHN0YXRpY19j
YXN0PGludD4obWF4SGVpZ2h0IC8gMi4wKSk7CisgICAgSW50UG9pbnQgbGVmdEVuZCh0eCAsIHR5
ICsgc3RhdGljX2Nhc3Q8aW50PihtYXhIZWlnaHQgLyAyLjApKTsKKyAgICAKKyAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0
cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KHN0eWxlKCktPmNvbG9yKCksIHNSR0JDb2xvclNwYWNlKTsKKyAgICAKKyAgICAvLyBkcmF3IHRv
cAorICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUodG9wU3RhcnQgLCBJbnRQb2ludCh0b3BTdGFy
dC54KCkgKyB3aWR0aCAsIHR5KSk7CisgICAgLy8gZHJhdyBmcm9tIHRvcCBsZWZ0IGNvcm5lciB0
byBib3R0b20gcG9pbnQgb2YgcmFkaWNhbAorICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUodG9w
U3RhcnQgLCBib3R0b21MZWZ0KTsKKyAgICAvLyBkcmF3IGZyb20gYm90dG9tIHBvaW50IHRvIHRv
cCBvZiBsZWZ0IHBhcnQgb2YgcmFkaWNhbCBiYXNlICJwb2NrZXQiCisgICAgaW5mby5jb250ZXh0
LT5kcmF3TGluZShib3R0b21MZWZ0ICwgdG9wTGVmdCk7CisgICAgLy8gZHJhdyB0byBlbmQKKyAg
ICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKHRvcExlZnQgLCBsZWZ0RW5kKTsKKyAgICAKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKworICAgICAgICAKSW5kZXg6IFdlYkNvcmUv
bWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3Nr
aS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZm5k
ZWYgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdF9oCisjZGVmaW5lIFJlbmRlck1hdGhNTFNxdWFyZVJv
b3RfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2Nr
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFJlbmRlck1hdGhNTFNxdWFy
ZVJvb3QgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgeworcHVibGljOgorICAgIFJlbmRlck1h
dGhNTFNxdWFyZVJvb3QoTm9kZSogZnJhY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8gRU5B
QkxFKE1BVEhNTCkKKworI2VuZGlmIC8vIFJlbmRlck1hdGhNTFNxdWFyZVJvb3RfaAorCisKKwpJ
bmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxl
eEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUg
IlJlbmRlck1hdGhNTFN1YlN1cC5oIgorCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5j
bHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRl
ICJSZW5kZXJUYWJsZS5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgorI2luY2x1ZGUg
IlJlbmRlclRhYmxlUm93LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCisjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBu
YW1lc3BhY2UgTWF0aE1MTmFtZXM7CisKK3N0YXRpYyBjb25zdCBpbnQgdG9wQWRqdXN0RGl2aXNv
ciA9IDM7CitzdGF0aWMgY29uc3QgaW50IHN1YnN1cFNjcmlwdE1hcmdpbiA9IDE7CisKKyAgICAK
K1JlbmRlck1hdGhNTFN1YlN1cDo6UmVuZGVyTWF0aE1MU3ViU3VwKE5vZGUgKnN1YnN1cCkgCisg
ICAgOiBSZW5kZXJNYXRoTUxCbG9jayhzdWJzdXApCisgICAgLCBtX3NjcmlwdHMoMCkKK3sKKyAg
ICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHN1YnN1cCk7CisgICAg
Ly8gRGV0ZXJtaW5lIHdoYXQga2luZCBvZiB1bmRlci9vdmVyIGV4cHJlc3Npb24gd2UgaGF2ZSBi
eSBlbGVtZW50IG5hbWUKKyAgICBtX2tpbmQgPSBTdWJTdXA7CisgICAgaWYgKGVsZW1lbnQtPmhh
c0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bXN1YlRhZykpCisgICAgICAgIG1fa2luZCA9IFN1YjsK
KyAgICBlbHNlIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1zdXBUYWcp
KQorICAgICAgICBtX2tpbmQgPSBTdXA7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1MU3ViU3VwOjph
ZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQor
eworICAgIGlmIChmaXJzdENoaWxkKCkpIHsKKyAgICAgICAgLy8gd2UgYWxyZWFkeSBoYXZlIGEg
YmFzZSwgc28gdGhpcyBpcyB0aGUgc3VwZXIvc3Vic2NyaXB0cworICAgICAgICAKKyAgICAgICAg
aWYgKG1fa2luZCA9PSBTdWJTdXApIHsKKyAgICAgICAgICAgIGlmICghbV9zY3JpcHRzKSB7Cisg
ICAgICAgICAgICAgICAgbV9zY3JpcHRzID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRo
TUxCbG9jayhub2RlKCkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc2Ny
aXB0c1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIHNjcmlw
dHNTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CisgICAgICAgICAgICAgICAgc2NyaXB0c1N0
eWxlLT5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAgICAgICAgICAgc2NyaXB0c1N0
eWxlLT5zZXRWZXJ0aWNhbEFsaWduKE1JRERMRSk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIGluIGVtcworICAgICAgICAgICAgICAgIHNjcmlwdHNTdHlsZS0+c2V0
TWFyZ2luTGVmdChMZW5ndGgoc3Vic3VwU2NyaXB0TWFyZ2luLCBGaXhlZCkpOworICAgICAgICAg
ICAgICAgIHNjcmlwdHNTdHlsZS0+c2V0VGV4dEFsaWduKExFRlQpOworICAgICAgICAgICAgICAg
IG1fc2NyaXB0cy0+c2V0U3R5bGUoc2NyaXB0c1N0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmFkZENoaWxkKG1fc2NyaXB0cywgYmVmb3JlQ2hpbGQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBSZW5kZXJCbG9jayog
c2NyaXB0ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayhub2RlKCkpOwor
ICAgICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzY3JpcHRTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHNjcmlwdFN0eWxlLT5pbmhlcml0RnJvbShtX3Njcmlw
dHMtPnN0eWxlKCkpOworICAgICAgICAgICAgc2NyaXB0U3R5bGUtPnNldERpc3BsYXkoQkxPQ0sp
OworICAgICAgICAgICAgc2NyaXB0LT5zZXRTdHlsZShzY3JpcHRTdHlsZS5yZWxlYXNlKCkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBtX3NjcmlwdHMtPmFkZENoaWxkKHNjcmlwdCwgbV9z
Y3JpcHRzLT5maXJzdENoaWxkKCkpOworICAgICAgICAgICAgc2NyaXB0LT5hZGRDaGlsZChjaGls
ZCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmFkZENo
aWxkKGNoaWxkLCBiZWZvcmVDaGlsZCk7CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAg
IFJlbmRlck1hdGhNTEJsb2NrKiB3cmFwcGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJN
YXRoTUxCbG9jayhub2RlKCkpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHdyYXBwZXJT
dHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgd3JhcHBlclN0eWxlLT5pbmhl
cml0RnJvbShzdHlsZSgpKTsKKyAgICAgICAgd3JhcHBlclN0eWxlLT5zZXREaXNwbGF5KElOTElO
RV9CTE9DSyk7CisgICAgICAgIHdyYXBwZXJTdHlsZS0+c2V0VmVydGljYWxBbGlnbihNSURETEUp
OworICAgICAgICB3cmFwcGVyLT5zZXRTdHlsZSh3cmFwcGVyU3R5bGUucmVsZWFzZSgpKTsKKyAg
ICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmFkZENoaWxkKHdyYXBwZXIsIGJlZm9yZUNoaWxkKTsK
KyAgICAgICAgd3JhcHBlci0+YWRkQ2hpbGQoY2hpbGQpOworICAgIH0KK30KKwordm9pZCAgUmVu
ZGVyTWF0aE1MU3ViU3VwOjpzdHJldGNoVG9IZWlnaHQoaW50IGhlaWdodCkKK3sKKyAgICBSZW5k
ZXJPYmplY3QqIGJhc2UgPSBmaXJzdENoaWxkKCk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKGJhc2UtPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkgeworICAg
ICAgICBSZW5kZXJNYXRoTUxCbG9jayogYmxvY2sgPSB0b1JlbmRlck1hdGhNTEJsb2NrKGJhc2Up
OworICAgICAgICBibG9jay0+c3RyZXRjaFRvSGVpZ2h0KHN0YXRpY19jYXN0PGludD4oMS4yICog
aGVpZ2h0KSk7CisgICAgfQorICAgIGlmIChoZWlnaHQgPiAwICYmIG1fa2luZCA9PSBTdWJTdXAg
JiYgbV9zY3JpcHRzKSB7CisKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBzY3JpcHQgPSBtX3Njcmlw
dHMtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgaWYgKHNjcmlwdCkgeworICAgICAgICAgICAgLy8g
Y2FsY3VsYXRlIHRoZSBzY3JpcHQgaGVpZ2h0IHdpdGhvdXQgdGhlIGNvbnRhaW5lciBtYXJnaW5z
CisgICAgICAgICAgICBpbnQgdG9wSGVpZ2h0ID0gMDsKKyAgICAgICAgICAgIFJlbmRlck9iamVj
dCogdG9wID0gc2NyaXB0OworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHRvcC0+
Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLT5pc0JveE1vZGVs
T2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChjaGlsZCk7CisgICAgICAgICAgICAgICAgdG9wSGVpZ2h0
ID0gYm94LT5vZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBi
b3R0b21IZWlnaHQgPSAwOworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBib3R0b20gPSBzY3Jp
cHQ7CisgICAgICAgICAgICBjaGlsZCA9IGJvdHRvbS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAg
ICAgaWYgKGNoaWxkICYmIGNoaWxkLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgICAg
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChj
aGlsZCk7CisgICAgICAgICAgICAgICAgYm90dG9tSGVpZ2h0ID0gYm94LT5vZmZzZXRIZWlnaHQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHRvcEFkanVz
dCA9IHRvcEhlaWdodCAvIHRvcEFkanVzdERpdmlzb3I7CisgICAgICAgICAgICB0b3AtPnN0eWxl
KCktPnNldE1hcmdpblRvcChMZW5ndGgoLXRvcEFkanVzdCwgRml4ZWQpKTsKKyAgICAgICAgICAg
IHRvcC0+c3R5bGUoKS0+c2V0TWFyZ2luQm90dG9tKExlbmd0aChoZWlnaHQgLSB0b3BIZWlnaHQg
KyB0b3BBZGp1c3QsIEZpeGVkKSk7CisgICAgICAgICAgICBpZiAodG9wLT5pc0JveE1vZGVsT2Jq
ZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogdG9wQm94ID0g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0b3ApOworICAgICAgICAgICAgICAgIHRvcEJveC0+dXBk
YXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X3NjcmlwdHMtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgICAgICAg
ICAgbV9zY3JpcHRzLT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOworICAgICAgICB9
CisgICAgfQorICAgIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworICAgIHNldE5lZWRz
TGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgIG1hcmtDb250YWluaW5nQmxvY2tzRm9y
TGF5b3V0KCk7Cit9CisKK2ludCBSZW5kZXJNYXRoTUxTdWJTdXA6Om5vbk9wZXJhdG9ySGVpZ2h0
KCkgY29uc3QgCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aE1MU3ViU3Vw
OjpsYXlvdXQoKSAKK3sKKworICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKyAgICAKKyAgICBp
ZiAobV9raW5kID09IFN1YlN1cCkgeworICAgICAgICBpbnQgd2lkdGggPSAwOworICAgICAgICBS
ZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChjdXJy
ZW50KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CisK
KyAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChjdXJyZW50KTsKKyAgICAgICAgICAgICAgICB3aWR0aCArPSBib3gtPm9mZnNl
dFdpZHRoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+
bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgfQorICAgICAgICB3aWR0aCsrOworICAgICAgICAvLyAx
ICsgbWFyZ2luIG9mIHNjcmlwdHMKKyAgICAgICAgaWYgKG1fc2NyaXB0cykgCisgICAgICAgICAg
ICB3aWR0aCArPSBzdWJzdXBTY3JpcHRNYXJnaW47CisgICAgICAgIHN0eWxlKCktPnNldFdpZHRo
KExlbmd0aCh3aWR0aCwgRml4ZWQpKTsKKworICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZX
aWR0aHNSZWNhbGMoKTsKKyAgICAgICAgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsK
KyAgICAgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworICAgIH0gICAgCit9CisKK2ludCBSZW5k
ZXJNYXRoTUxTdWJTdXA6OmJhc2VsaW5lUG9zaXRpb24oYm9vbCAsIGJvb2wpIGNvbnN0Cit7Cisg
ICAgUmVuZGVyT2JqZWN0KiBiYXNlID0gZmlyc3RDaGlsZCgpOworICAgIGlmICghYmFzZSkgCisg
ICAgICAgIHJldHVybiBvZmZzZXRIZWlnaHQoKTsKKyAgICBiYXNlID0gYmFzZS0+Zmlyc3RDaGls
ZCgpOworICAgIGlmICghYmFzZSkgCisgICAgICAgIHJldHVybiBvZmZzZXRIZWlnaHQoKTsKKyAg
ICAKKyAgICBpbnQgYmFzZWxpbmUgPSBvZmZzZXRIZWlnaHQoKTsKKyAgICAKKyAgICBzd2l0Y2gg
KG1fa2luZCkgeworICAgIGNhc2UgU3ViU3VwOgorICAgICAgICBpZiAobV9zY3JpcHRzKSB7Cisg
ICAgICAgICAgICBpbnQgdG9wQWRqdXN0ID0gMDsKKyAgICAgICAgICAgIGlmIChiYXNlLT5pc0Jv
eE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
Ym94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChiYXNlKTsKKyAgICAgICAgICAgICAgICB0b3BB
ZGp1c3QgPSAobV9zY3JpcHRzLT5vZmZzZXRIZWlnaHQoKSAtIGJveC0+b2Zmc2V0SGVpZ2h0KCkp
IC8gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0b3BBZGp1c3QgKyAoYmFz
ZSA/IGJhc2UtPmJhc2VsaW5lUG9zaXRpb24odHJ1ZSkgOiAwKSArIDQ7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTdXA6CisgICAgICAgIGlmIChiYXNlKSB7CisgICAgICAg
ICAgICBiYXNlbGluZSA9IGJhc2UtPmJhc2VsaW5lUG9zaXRpb24odHJ1ZSkgKyA0OworICAgICAg
ICAgICAgLy8gRklYTUU6IFRoZSBleHRyYSBhbW91bnQgb2YgdGhlIHN1cGVyc2NyaXB0IGFzY2Vu
ZGluZyBhYm92ZSB0aGUgYmFzZSdzIGJveAorICAgICAgICAgICAgLy8gaXNuJ3QgdGFrZW4gaW50
byBhY2NvdW50LiAgVGhpcyBzaG91bGQgYmUgY2FsY3VsYXRlZCBpbiBhIG1vcmUgcmVsaWFibGUK
KyAgICAgICAgICAgIC8vIHdheS4KKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogc3VwID0gYmFz
ZS0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIGlmIChzdXAgJiYgc3VwLT5pc0JveE1vZGVs
T2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChzdXApOworICAgICAgICAgICAgICAgIGJhc2VsaW5lICs9
IHN0YXRpY19jYXN0PGludD4oYm94LT5vZmZzZXRIZWlnaHQoKSAqIDAuNSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBiYXNlbGluZSsrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU3ViOgorICAgICAgICBpZiAoYmFzZSkgCisgICAgICAgICAgICBiYXNlbGluZSA9
IGJhc2UtPmJhc2VsaW5lUG9zaXRpb24odHJ1ZSkgKyA0OworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gYmFzZWxpbmU7CisgICAgCit9CisgICAgCit9ICAgIAorCisjZW5kaWYgLy8gRU5BQkxFKE1B
VEhNTCkKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxl
eEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworCisjaWZuZGVmIFJlbmRlck1hdGhNTFN1YlN1cF9oCisjZGVmaW5lIFJlbmRlck1hdGhNTFN1
YlN1cF9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxv
Y2suaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCitjbGFzcyBSZW5kZXJNYXRoTUxTdWJTdXAgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sg
eworcHVibGljOgorICAgIFJlbmRlck1hdGhNTFN1YlN1cChOb2RlKiBmcmFjdGlvbik7CisgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQmFzZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGludCBub25PcGVyYXRvckhlaWdodCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBzdHJldGNoVG9IZWlnaHQoaW50IHBpeGVsSGVpZ2h0KTsKKyAgICB2
aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGJvb2wgLCBib29sKSBjb25zdDsgICAgCisKK3By
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgCitwcml2YXRlOgorICAg
IGVudW0gU3ViU3VwVHlwZSB7IFN1YiwgU3VwLCBTdWJTdXAgfTsKKyAgICBTdWJTdXBUeXBlIG1f
a2luZDsKKyAgICBSZW5kZXJCbG9jayogbV9zY3JpcHRzOworfTsKKyAgICAKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNQVRITUwpCisKKyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxTdWJTdXBfaAorCklu
ZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93
c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisj
aW5jbHVkZSAiUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgiCisKKyNpbmNsdWRlICJGb250U2VsZWN0
b3IuaCIKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKyAgICAKK3N0YXRpYyBjb25zdCBkb3VibGUg
dW5kZXJOb3JtYWxBZGp1c3QgPSAtMC40Oworc3RhdGljIGNvbnN0IGRvdWJsZSBmb250QWRqdXN0
ID0gMC43NTsKKyAgICAKK1JlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJP
dmVyKE5vZGUqIGV4cHJlc3Npb24pIAorICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZXhwcmVzc2lv
bikgCit7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihleHBy
ZXNzaW9uKTsKKyAgICAvLyBEZXRlcm1pbmUgd2hhdCBraW5kIG9mIHVuZGVyL292ZXIgZXhwcmVz
c2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQorICAgIG1fa2luZCA9IFVuZGVyOworICAgIGlm
IChlbGVtZW50LT5oYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1vdmVyVGFnKSkKKyAgICAgICAg
bV9raW5kID0gT3ZlcjsKKyAgICBlbHNlIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoTWF0aE1M
TmFtZXM6Om11bmRlcm92ZXJUYWcpKQorICAgICAgICBtX2tpbmQgPSBVbmRlck92ZXI7Cit9CisK
K3ZvaWQgUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQoreworICAgIAorICAgIFJlbmRlck1hdGhNTEJs
b2NrKiByb3cgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTEJsb2NrKG5vZGUoKSk7
CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByb3dTdHlsZSA9IG1ha2VCbG9ja1N0eWxlKCk7Cisg
ICAgcm93LT5zZXRTdHlsZShyb3dTdHlsZS5yZWxlYXNlKCkpOworICAgIAorICAgIC8vIGxvb2sg
dGhyb3VnaCB0aGUgY2hpbGRyZW4gZm9yIHJlbmRlcmVkIGVsZW1lbnRzCisgICAgaW50IGJsb2Nr
cyA9IDA7CisgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gdGhpcy0+Zmlyc3RDaGlsZCgpOwor
ICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIGJsb2NrcysrOworICAgICAgICBjdXJyZW50
ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAgCisgICAgc3dpdGNoIChibG9j
a3MpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIC8vIHRoaXMgaXMgdGhlIGJhc2Ugc28ganVzdCBh
cHBlbmQgaXQKKyAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdywgYmVmb3JlQ2hpbGQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIC8vIHRoZSB1bmRlciBvciBv
dmVyCisgICAgICAgIC8vIEZJWE1FOiB0ZXh0LWFsaWduOiBjZW50ZXIgZG9lcyBub3Qgd29yawor
ICAgICAgICByb3ctPnN0eWxlKCktPnNldFRleHRBbGlnbihDRU5URVIpOworICAgICAgICBpZiAo
bV9raW5kID09IE92ZXIpIHsKKyAgICAgICAgICAgIC8vIGFkZCB0aGUgb3ZlciBhcyBmaXJzdAor
ICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdywgZmlyc3RDaGlsZCgpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGFkZCB0aGUgdW5kZXIgYXMgbGFzdAorICAg
ICAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdywgYmVmb3JlQ2hpbGQpOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgLy8gdGhlIHVuZGVyIG9y
IG92ZXIKKyAgICAgICAgLy8gRklYTUU6IHRleHQtYWxpZ246IGNlbnRlciBkb2VzIG5vdCB3b3Jr
CisgICAgICAgIHJvdy0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKENFTlRFUik7CisgICAgICAgIGlm
IChtX2tpbmQgPT0gVW5kZXJPdmVyKSB7CisgICAgICAgICAgICAvLyBhZGQgdGhlIG92ZXIgYXMg
Zmlyc3QKKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGZpcnN0Q2hpbGQo
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB3ZSByZWFsbHkgc2hvdWxkbid0
IGdldCBoZXJlIGFzIG9ubHkgbXVuZGVyb3ZlciBzaG91bGQgaGF2ZSB0aHJlZSBjaGlsZHJlbgor
ICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdywgYmVmb3JlQ2hpbGQpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIG1zdWJzdXAg
c2hvdWxkbid0IGhhdmUgbW9yZSB0aGFuIHRocmVlIGNoaWxkcmVuLiAgSW4gdGhlb3J5IHdlIHNo
b3VsZG4ndCAKKyAgICAgICAgLy8gZ2V0IGhlcmUgaWYgdGhlIE1hdGhNTCBpcyBjb3JyZWN0bHkg
Zm9ybWVkLCBidXQgdGhhdCBpc24ndCBhIGd1YXJhbnRlZS4KKyAgICAgICAgLy8gV2Ugd2lsbCB0
cmVhdCB0aGlzIGFzIGFub3RoZXIgdW5kZXIgZWxlbWVudCBhbmQgdGhleSdsbCBnZXQgc29tZXRo
aW5nIGZ1bmt5LgorICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93LCBiZWZvcmVDaGls
ZCk7CisgICAgfQorICAgIHJvdy0+YWRkQ2hpbGQoY2hpbGQpOyAgICAKK30KKworaW5saW5lIGlu
dCBnZXRPZmZzZXRIZWlnaHQoUmVuZGVyT2JqZWN0KiBvYmopIAoreworICAgIGlmIChvYmotPmlz
Qm94TW9kZWxPYmplY3QoKSkgeworICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChvYmopOworICAgICAgICByZXR1cm4gYm94LT5vZmZzZXRI
ZWlnaHQoKTsKKyAgICB9CisgICAKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCAgUmVuZGVyTWF0
aE1MVW5kZXJPdmVyOjpzdHJldGNoVG9IZWlnaHQoaW50IGhlaWdodCkKK3sKKworICAgIFJlbmRl
ck9iamVjdCogYmFzZSA9IGZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAobV9raW5kICE9IFVuZGVyKSAKKyAgICAgICAgYmFzZSA9IGJhc2UtPm5l
eHRTaWJsaW5nKCk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm47CisgICAgLy8gdXNl
IHRoZSBjaGlsZCBvZiB0aGUgcm93IHdoaWNoIGlzIHRoZSBhY3R1YWwgYmFzZQorICAgIGJhc2Ug
PSBiYXNlLT5maXJzdENoaWxkKCk7CisgICAgCisgICAgaWYgKGJhc2UgJiYgYmFzZS0+aXNSZW5k
ZXJNYXRoTUxCbG9jaygpKSB7CisgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrKiBibG9jayA9IHRv
UmVuZGVyTWF0aE1MQmxvY2soYmFzZSk7CisgICAgICAgIGJsb2NrLT5zdHJldGNoVG9IZWlnaHQo
aGVpZ2h0KTsKKyAgICAgICAgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgICAg
IHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgICAgICBtYXJrQ29udGFp
bmluZ0Jsb2Nrc0ZvckxheW91dCgpOworICAgIH0KK30KKworCit2b2lkIFJlbmRlck1hdGhNTFVu
ZGVyT3Zlcjo6bGF5b3V0KCkgCit7CisKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CisgICAg
UmVuZGVyT2JqZWN0KiBvdmVyID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIGJhc2UgPSAwOworICAg
IHN3aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBPdmVyOgorICAgICAgICAvLyBXZSBuZWVkIHRv
IGNhbGN1bGF0ZSB0aGUgYmFzZWxpbmUgb3ZlciB0aGUgb3ZlciB2ZXJzdXMgdGhlIHN0YXJ0IG9m
IHRoZSBiYXNlIGFuZCAKKyAgICAgICAgLy8gYWRqdXN0IHRoZSBwbGFjZW1lbnQgb2YgdGhlIGJh
c2UuCisgICAgICAgIG92ZXIgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIGlmIChvdmVyKSB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogZGVzY2VuZGluZyBnbHlwaHMgaW50cnVkZSBpbnRvIGJhc2Ug
KGUuZy4gbG93ZXJjYXNlIHkgb3ZlciBiYXNlKQorICAgICAgICAgICAgLy8gRklYTUU6IGJhc2Vz
IHRoYXQgYXNjZW5kIGhpZ2hlciB0aGFuIHRoZSBsaW5lIGJveCBpbnRydWRlIGludG8gdGhlIG92
ZXIKKyAgICAgICAgICAgIGludCBvdmVyU3BhY2luZyA9IHN0YXRpY19jYXN0PGludD4oMC42Njcg
KiAoZ2V0T2Zmc2V0SGVpZ2h0KG92ZXIpIC0gb3Zlci0+Zmlyc3RDaGlsZCgpLT5iYXNlbGluZVBv
c2l0aW9uKHRydWUpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGJhc2Ugcm93IHdy
YXBwZXIKKyAgICAgICAgICAgIGJhc2UgPSBvdmVyLT5uZXh0U2libGluZygpOworICAgICAgICAg
ICAgaWYgKGJhc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAob3ZlclNwYWNpbmc+MCkgCisgICAg
ICAgICAgICAgICAgICAgIGJhc2UtPnN0eWxlKCktPnNldE1hcmdpblRvcChMZW5ndGgoLW92ZXJT
cGFjaW5nLCBGaXhlZCkpOworICAgICAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgICAg
ICAgIGJhc2UtPnN0eWxlKCktPnNldE1hcmdpblRvcChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVW5kZXI6CisgICAgICAgIC8vIEZJWE1FOiBOb24tYXNjZW5kaW5nIGdseXBocyBpbiB0aGUg
dW5kZXIgc2hvdWxkIGJlIG1vdmVkIGNsb3NlciB0byB0aGUgYmFzZQorCisgICAgICAgIC8vIFdl
IG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBiYXNlbGluZSBvZiB0aGUgYmFzZSB2ZXJzdXMgdGhlIHN0
YXJ0IG9mIHRoZSB1bmRlciBibG9jayBhbmQKKyAgICAgICAgLy8gYWRqdXN0IHRoZSBwbGFjZW1l
bnQgb2YgdGhlIHVuZGVyIGJsb2NrLgorICAgICAgICAKKyAgICAgICAgLy8gYmFzZSByb3cgd3Jh
cHBlcgorICAgICAgICBiYXNlID0gZmlyc3RDaGlsZCgpOworICAgICAgICBpZiAoYmFzZSkgewor
ICAgICAgICAgICAgaW50IGJhc2VIZWlnaHQgPSBnZXRPZmZzZXRIZWlnaHQoYmFzZSk7CisgICAg
ICAgICAgICAvLyBhY3R1YWwgYmFzZQorICAgICAgICAgICAgYmFzZSA9IGJhc2UtPmZpcnN0Q2hp
bGQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGxvb2sgYXQgdGhlIHNwYWNl
IGJldHdlZW4gYSBzaW5nbGUgbWF4aW11bSBoZWlnaHQgb2YKKyAgICAgICAgICAgIC8vICAgICAg
ICB0aGUgbGluZSBib3hlcyBhbmQgdGhlIGJhc2VsaW5lIGFuZCBzcXVlZXplIHRoZW0gdG9nZXRo
ZXIKKyAgICAgICAgICAgIGludCB1bmRlclNwYWNpbmcgPSBiYXNlSGVpZ2h0IC0gYmFzZS0+YmFz
ZWxpbmVQb3NpdGlvbih0cnVlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gYWRqdXN0
IHRoZSBiYXNlJ3MgaW50cnVzaW9uIGludG8gdGhlIHVuZGVyCisgICAgICAgICAgICBSZW5kZXJP
YmplY3QqIHVuZGVyID0gbGFzdENoaWxkKCk7CisgICAgICAgICAgICBpZiAodW5kZXIgJiYgdW5k
ZXJTcGFjaW5nID4gMCkKKyAgICAgICAgICAgICAgICB1bmRlci0+c3R5bGUoKS0+c2V0TWFyZ2lu
VG9wKExlbmd0aCgtdW5kZXJTcGFjaW5nLCBGaXhlZCkpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVW5kZXJPdmVyOgorICAgICAgICAvLyBGSVhNRTogTm9uLWRlc2NlbmRp
bmcgZ2x5cGhzIGluIHRoZSBvdmVyIHNob3VsZCBiZSBtb3ZlZCBjbG9zZXIgdG8gdGhlIGJhc2UK
KyAgICAgICAgLy8gRklYTUU6IE5vbi1hc2NlbmRpbmcgZ2x5cGhzIGluIHRoZSB1bmRlciBzaG91
bGQgYmUgbW92ZWQgY2xvc2VyIHRvIHRoZSBiYXNlCisgICAgICAgIAorICAgICAgICAvLyBXZSBu
ZWVkIHRvIGNhbGN1bGF0ZSB0aGUgYmFzZWxpbmUgb2YgdGhlIG92ZXIgdmVyc3VzIHRoZSBzdGFy
dCBvZiB0aGUgYmFzZSBhbmQgCisgICAgICAgIC8vIGFkanVzdCB0aGUgcGxhY2VtZW50IG9mIHRo
ZSBiYXNlLgorICAgICAgICAKKyAgICAgICAgb3ZlciA9IGZpcnN0Q2hpbGQoKTsKKyAgICAgICAg
aWYgKG92ZXIpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkZXNjZW5kaW5nIGdseXBocyBpbnRy
dWRlIGludG8gYmFzZSAoZS5nLiBsb3dlcmNhc2UgeSBvdmVyIGJhc2UpCisgICAgICAgICAgICAv
LyBGSVhNRTogYmFzZXMgdGhhdCBhc2NlbmQgaGlnaGVyIHRoYW4gdGhlIGxpbmUgYm94IGludHJ1
ZGUgaW50byB0aGUgb3ZlcgorICAgICAgICAgICAgaW50IG92ZXJTcGFjaW5nID0gc3RhdGljX2Nh
c3Q8aW50PigwLjY2NyAqIChnZXRPZmZzZXRIZWlnaHQob3ZlcikgLSBvdmVyLT5maXJzdENoaWxk
KCktPmJhc2VsaW5lUG9zaXRpb24odHJ1ZSkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gYmFzZSByb3cgd3JhcHBlcgorICAgICAgICAgICAgYmFzZSA9IG92ZXItPm5leHRTaWJsaW5n
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChiYXNlKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG92ZXJTcGFjaW5nID4gMCkKKyAgICAgICAgICAgICAgICAgICAgYmFzZS0+c3R5bGUo
KS0+c2V0TWFyZ2luVG9wKExlbmd0aCgtb3ZlclNwYWNpbmcsIEZpeGVkKSk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGJhc2Vs
aW5lIG9mIHRoZSBiYXNlIHZlcnN1cyB0aGUgc3RhcnQgb2YgdGhlIHVuZGVyIGJsb2NrIGFuZAor
ICAgICAgICAgICAgICAgIC8vIGFkanVzdCB0aGUgcGxhY2VtZW50IG9mIHRoZSB1bmRlciBibG9j
ay4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpbnQgYmFzZUhlaWdodCA9IGdl
dE9mZnNldEhlaWdodChiYXNlKTsKKyAgICAgICAgICAgICAgICAvLyBhY3R1YWwgYmFzZQorICAg
ICAgICAgICAgICAgIGJhc2UgPSBiYXNlLT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIG5lZWQgdG8gbG9vayBhdCB0aGUgc3BhY2UgYmV0d2VlbiBhIHNpbmdsZSBt
YXhpbXVtIGhlaWdodCBvZgorICAgICAgICAgICAgICAgIC8vICAgICAgICB0aGUgbGluZSBib3hl
cyBhbmQgdGhlIGJhc2VsaW5lIGFuZCBzcXVlZXplIHRoZW0gdG9nZXRoZXIKKyAgICAgICAgICAg
ICAgICBpbnQgdW5kZXJTcGFjaW5nID0gYmFzZUhlaWdodCAtIGJhc2UtPmJhc2VsaW5lUG9zaXRp
b24odHJ1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiB1bmRlciA9IGxhc3RDaGlsZCgpOworICAgICAgICAgICAgICAgIGlmICh1bmRlciAmJiB1bmRl
ci0+Zmlyc3RDaGlsZCgpLT5pc1JlbmRlcklubGluZSgpICYmIHVuZGVyU3BhY2luZyA+IDApCisg
ICAgICAgICAgICAgICAgICAgIHVuZGVyLT5zdHlsZSgpLT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKC11
bmRlclNwYWNpbmcsIEZpeGVkKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOworICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKK30KKworaW50IFJl
bmRlck1hdGhNTFVuZGVyT3Zlcjo6YmFzZWxpbmVQb3NpdGlvbihib29sICwgYm9vbCkgY29uc3QK
K3sKKyAgICBpbnQgYmFzZWxpbmUgPSAwOworICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IDA7
CisgICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBjYXNlIFVuZGVyT3ZlcjoKKyAgICBjYXNlIE92
ZXI6CisgICAgICAgIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIGJhc2VsaW5lICs9
IGdldE9mZnNldEhlaWdodChjdXJyZW50KTsKKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5l
eHRTaWJsaW5nKCk7CisgICAgICAgIGlmIChjdXJyZW50KSB7CisgICAgICAgICAgICAvLyBhY3R1
YWwgYmFzZQorICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBiYXNlID0gY3VycmVudC0+Zmlyc3RD
aGlsZCgpOworICAgICAgICAgICAgYmFzZWxpbmUgKz0gYmFzZS0+YmFzZWxpbmVQb3NpdGlvbih0
cnVlKTsKKyAgICAgICAgICAgIC8vIGFkZGVkIHRoZSBuZWdhdGl2ZSB0b3AgbWFyZ2luCisgICAg
ICAgICAgICBiYXNlbGluZSArPSBjdXJyZW50LT5zdHlsZSgpLT5tYXJnaW5Ub3AoKS52YWx1ZSgp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVW5kZXI6CisgICAgICAgIGN1
cnJlbnQgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIGlmIChjdXJyZW50KSB7CisgICAgICAgICAg
ICBSZW5kZXJPYmplY3QqIGJhc2UgPSBjdXJyZW50LT5maXJzdENoaWxkKCk7CisgICAgICAgICAg
ICBiYXNlbGluZSArPSBiYXNlLT5iYXNlbGluZVBvc2l0aW9uKHRydWUpOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBiYXNlbGluZTsKK30KKworCitpbnQgUmVuZGVyTWF0aE1MVW5kZXJP
dmVyOjpub25PcGVyYXRvckhlaWdodCgpIGNvbnN0IAoreworICAgIHJldHVybiAwOworfQorCit9
CisKKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJNYXRoTUxVbmRlck92ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJN
YXRoTUxVbmRlck92ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1h
dGhNTFVuZGVyT3Zlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBSZW5kZXJNYXRo
TUxVbmRlck92ZXJfaAorI2RlZmluZSBSZW5kZXJNYXRoTUxVbmRlck92ZXJfaAorCisjaWYgRU5B
QkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciA6IHB1YmxpYyBS
ZW5kZXJNYXRoTUxCbG9jayB7CitwdWJsaWM6CisgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyKE5v
ZGUqIGV4cHJlc3Npb24pOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOworICAgIHZpcnR1YWwgYm9vbCBoYXNCYXNlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgaW50IG5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3Q7CisgICAgdmly
dHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihib29sICwgYm9vbCkgY29uc3Q7ICAgIAorICAgIHZp
cnR1YWwgdm9pZCBzdHJldGNoVG9IZWlnaHQoaW50IHBpeGVsSGVpZ2h0KTsKK3ByaXZhdGU6Cisg
ICAgZW51bSBVbmRlck92ZXJUeXBlIHsgVW5kZXIsIE92ZXIsIFVuZGVyT3ZlciB9OworICAgIFVu
ZGVyT3ZlclR5cGUgbV9raW5kOworfTsKKyAgICAKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRI
TUwpCisKKyNlbmRpZiAvLyBSZW5kZXJNYXRoTUxVbmRlck92ZXJfaApJbmRleDogV2ViQ29yZS9t
YXRobWwvbWF0aHRhZ3MuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3Mu
aW4JKHJldmlzaW9uIDU0NjA2KQorKysgV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTEyLDkgKzEyLDEyIEBAIG11bmRlciBpbnRlcmZhY2VOYW1lPU1hdGhNTElu
bGluZUNvbnRhaW4KIG11bmRlcm92ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50CiBtc3FydCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQKIG1yb290IGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAotbWkg
aW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVXaXRoTmV3Ci1tbiBpbnRlcmZhY2VO
YW1lPU1hdGhNTEVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKLW1vIGludGVyZmFjZU5hbWU9TWF0aE1M
RWxlbWVudCwgY3JlYXRlV2l0aE5ldwotbXN1YiBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQs
IGNyZWF0ZVdpdGhOZXcKLW1zdXAgaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVX
aXRoTmV3CittaSBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50CittbiBpbnRlcmZhY2VO
YW1lPU1hdGhNTFRleHRFbGVtZW50CittbyBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50
CittdGV4dCBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50Cittcm9vdCBpbnRlcmZhY2VO
YW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK21zcXJ0IGludGVyZmFjZU5hbWU9TWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbXN1YiBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKK21zdXAgaW50ZXJmYWNlTmFtZT1NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LCBjcmVhdGVXaXRoTmV3CiAKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDU0NjA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTAtMDItMTAgIEFsZXggTWlsb3dza2kgIDxhbGV4QG1pbG93c2tpLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcg
dGVzdHMgZm9yIE1hdGhNTAorCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQu
eGh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnho
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL21vLWludGVncmFsLnho
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL292ZXIueGh0bWw6IEFk
ZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vcm9vdHMueGh0bWw6IEFkZGVkLgor
ICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1sOiBBZGRlZC4KKyAgICAgICAg
KiBtYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRtbDogQWRkZWQuCisgICAgICAgICogbWF0
aG1sL3ByZXNlbnRhdGlvbi90YWJsZXMueGh0bWw6CisgICAgICAgICogbWF0aG1sL3ByZXNlbnRh
dGlvbi91bmRlci54aHRtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi91
bmRlcm92ZXIueGh0bWw6IEFkZGVkLgorCiAyMDEwLTAyLTEwICBOYXRlIENoYXBpbiAgPGphcGhl
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6
IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vZmVuY2VkLnhodG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vZmVuY2VkLnhodG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sJz4KKzxoZWFkPgorPHRpdGxlPlJvd3MgYW5kIE9wZXJhdG9yczwvdGl0bGU+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorbW8geworICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDIwMCwyMDAsMjAwKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+
Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZl
bmNlZD48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlz
cGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO2hlaWdodDogNDhweDsg
d2lkdGg6IDQ4cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxkaXYgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7aGVpZ2h0OiA0OHB4OyB3aWR0aDogNDhweDsgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxp
Z246IG1pZGRsZTtoZWlnaHQ6IDQ4cHg7IHdpZHRoOiA0OHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMCwyNTUsMCknLz48L21mZW5jZWQ+Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2ZyYWN0aW9ucy54aHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2ZyYWN0aW9ucy54
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vZnJh
Y3Rpb25zLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACis8aHRtbCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzx0aXRsZT5GcmFjdGlvbnM8
L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0ndDEnPnNpbXBsZTogPG1hdGggeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPjxtZnJhYz48bW4+MTwvbW4+YmFk
PG1uPjI8L21uPjwvbWZyYWM+PC9tYXRoPjwvcD4KKzxwIGlkPSd0Mic+bW9yZSBjb21wbGV4OiAK
KzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJh
Yz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+YmFkPG1uPjE8L21uPjwvbXJvdz4KKzxtcm93
PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjI8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21hdGg+
Cis8L3A+Cis8cCBpZD0ndDMnPnRleHQ6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWM+Cis8bXRleHQ+bnVtYmVyIG9mIGJ1Z3M8L210ZXh0
PgorPG10ZXh0Pm51bWJlciBvZiBjaGFuZ2VzPC9tdGV4dD4KKzwvbWZyYWM+Cis8L21hdGg+Cis8
L3A+Cis8cCBpZD0ndDQnPmxpbmUgdGhpY2tuZXNzIGJ5IGtleXdvcmQ6Cis8bWF0aCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+PG1mcmFjIGxpbmV0aGlja25lc3M9
J3RoaW4nPjxtbj4xPC9tbj48bW4+MjwvbW4+PC9tZnJhYz48L21hdGg+PG1hdGggeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPjxtZnJhYyBsaW5ldGhpY2tuZXNzPSdt
ZWRpdW0nPjxtbj4xPC9tbj48bW4+MjwvbW4+PC9tZnJhYz48L21hdGg+PG1hdGggeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPjxtZnJhYyBsaW5ldGhpY2tuZXNzPSd0
aGljayc+PG1uPjE8L21uPjxtbj4yPC9tbj48L21mcmFjPjwvbWF0aD48L3A+Cis8cCBpZD0ndDUn
Pm51bWVyYXRvciBhbGlnbm1lbnQ6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgbnVtYWxpZ249ImxlZnQiPgorPG1pPng8L21pPgorPG1y
b3c+PG1uPjE8L21uPjxtbz4rPC9tbz48bW4+MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48bW8+
KzwvbW8+PG1uPjQ8L21uPjxtbz4rPC9tbz48bW4+NTwvbW4+PC9tcm93PgorPC9tZnJhYz4KKzwv
bWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4K
KzxtZnJhYyBudW1hbGlnbj0iY2VudGVyIj4KKzxtaT54PC9taT4KKzxtcm93Pjxtbj4xPC9tbj48
bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9tbz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9t
bj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgbnVtYWxp
Z249InJpZ2h0Ij4KKzxtaT54PC9taT4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8
L21uPjxtbz4rPC9tbz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1u
PjU8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDYnPmRlbm9t
aW5hdG9yIGFsaWdubWVudDoKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MJz4KKzxtZnJhYyBkZW5vbWFsaWduPSJsZWZ0Ij4KKzxtcm93Pjxtbj4xPC9tbj48
bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9tbz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9t
bj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJvdz4KKzxtaT54PC9taT4KKzwvbWZyYWM+Cis8L21h
dGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8
bWZyYWMgZGVub21hbGlnbj0iY2VudGVyIj4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1u
PjI8L21uPjxtbz4rPC9tbz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+
PG1uPjU8L21uPjwvbXJvdz4KKzxtaT54PC9taT4KKzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgZGVub21h
bGlnbj0icmlnaHQiPgorPG1yb3c+PG1uPjE8L21uPjxtbz4rPC9tbz48bW4+MjwvbW4+PG1vPis8
L21vPjxtbj4zPC9tbj48bW8+KzwvbW8+PG1uPjQ8L21uPjxtbz4rPC9tbz48bW4+NTwvbW4+PC9t
cm93PgorPG1pPng8L21pPgorPC9tZnJhYz4KKzwvbWF0aD4KKzwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbWkueGh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9taS54aHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbWkueGh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sJz4KKzxoZWFkPgorPHRpdGxlPk92ZXI8L3RpdGxlPgorPHN0eWxlIHR5cGU9J3Rl
eHQvY3NzJz4KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+b3BlcmF0b3I6
IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1p
IG1hdGhzaXplPSdzbWFsbCc+eTwvbWk+Cis8L21hdGg+CitvcGVyYXRvcjoKKzxtYXRoIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtaSBtYXRoc2l6ZT0nc21h
bGwnPkI8L21pPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3QyJz5vcGVyYXRvcjogCis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWkgbWF0aHNpemU9
J25vcm1hbCc+eTwvbWk+Cis8L21hdGg+CitvcGVyYXRvcjoKKzxtYXRoIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtaSBtYXRoc2l6ZT0nbm9ybWFsJz5CPC9t
aT4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0Myc+b3BlcmF0b3I6IAorPG1hdGggeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1pIG1hdGhzaXplPSdiaWcnPnk8
L21pPgorPC9tYXRoPgorb3BlcmF0b3I6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MTk5OC9NYXRoL01hdGhNTCc+Cis8bWkgbWF0aHNpemU9J2JpZyc+QjwvbWk+Cis8L21hdGg+Cis8
L3A+Cis8cCBpZD0ndDQnPm9wZXJhdG9yOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtaSBtYXRoc2l6ZT0nc21hbGwnPnk8L21pPgorPG1pIG1h
dGhzaXplPSdub3JtYWwnPnk8L21pPgorPG1pIG1hdGhzaXplPSdiaWcnPnk8L21pPgorPC9tYXRo
Pgorb3BlcmF0b3I6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01h
dGhNTCc+Cis8bWkgbWF0aHNpemU9J3NtYWxsJz5CPC9taT4KKzxtaSBtYXRoc2l6ZT0nbm9ybWFs
Jz5CPC9taT4KKzxtaSBtYXRoc2l6ZT0nYmlnJz5CPC9taT4KKzwvbWF0aD4KKzwvcD4KKzxwIGlk
PSd0NSc+b3BlcmF0b3I6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnPgorPG1pPnk8L21pPgorPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2Nr
OyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgdmVy
dGljYWwtYWxpZ246IG1pZGRsZTsiLz4KKzwvbWF0aD4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbW8taW50ZWdyYWwueGh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tby1pbnRlZ3Jh
bC54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24v
bW8taW50ZWdyYWwueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzxodG1sIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgorPHRpdGxlPlN1YnNj
cmlwdCBhbmQgU3VwZXJzY3JpcHRzPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+QW4gaW50
ZWdyYWwgd2l0aCBub3JtYWwgaGVpZ2h0IGNvbnRlbnQ6IAorICAgIDxtYXRoIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIj4KKyAgICAgIDxtc3Vic3VwPjxtbz7iiKs8
L21vPjxtbj4wPC9tbj48bW4+MjwvbW4+PC9tc3Vic3VwPjxtbj40Ljk8L21uPjxtaT5keDwvbWk+
CisgICAgPC9tYXRoPjwvcD4KKzxwIHN0eWxlPSJmb250LXNpemU6IDJlbSI+QW4gaW50ZWdyYWwg
d2l0aCBub3JtYWwgaGVpZ2h0IGNvbnRlbnQ6IAorICAgIDxtYXRoIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIj4KKyAgICAgIDxtc3Vic3VwPjxtbz7iiKs8L21vPjxt
bj4wPC9tbj48bW4+MjwvbW4+PC9tc3Vic3VwPjxtbj40Ljk8L21uPjxtaT5keDwvbWk+CisgICAg
PC9tYXRoPjwvcD4KKzxwPkFuIGludGVncmFsIHdpdGggbm9ybWFsIGhlaWdodCBjb250ZW50OiAK
KyAgICA8bWF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI+Cisg
ICAgICA8bXN1YnN1cD48bW8+4oirPC9tbz48bW4+MDwvbW4+PG1uPjI8L21uPjwvbXN1YnN1cD48
ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiAtOHB4OyBo
ZWlnaHQ6IDQ4cHg7IHdpZHRoOiA0OHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsiLz48bWk+
ZHg8L21pPgorICAgIDwvbWF0aD48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21vLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21hdGhtbC9wcmVzZW50YXRpb24vbW8ueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21vLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU1IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVh
ZD4KKzx0aXRsZT5PdmVyPC90aXRsZT4KKzxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0ndDEnPm9wZXJhdG9yOiAKKzxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtbyBtYXRoc2l6ZT0nc21hbGwn
PiYjeDIyMTE7PC9tbz4KKzwvbWF0aD4KK29wZXJhdG9yOgorPG1hdGggeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1vIG1hdGhzaXplPSdzbWFsbCc+QjwvbW8+
Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDInPm9wZXJhdG9yOiAKKzxtYXRoIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtbyBtYXRoc2l6ZT0nbm9ybWFsJz4m
I3gyMjExOzwvbW8+Cis8L21hdGg+CitvcGVyYXRvcjoKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtbyBtYXRoc2l6ZT0nbm9ybWFsJz5CPC9tbz4K
KzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0Myc+b3BlcmF0b3I6IAorPG1hdGggeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1vIG1hdGhzaXplPSdiaWcnPiYjeDIy
MTE7PC9tbz4KKzwvbWF0aD4KK29wZXJhdG9yOgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1vIG1hdGhzaXplPSdiaWcnPiYjeDIyMTE7PC9tbz4K
KzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0NCc+b3BlcmF0b3I6IAorPG1hdGggeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1vIG1hdGhzaXplPSdzbWFsbCc+JiN4
MjIxMTs8L21vPgorPG1vIG1hdGhzaXplPSdub3JtYWwnPiYjeDIyMTE7PC9tbz4KKzxtbyBtYXRo
c2l6ZT0nYmlnJz4mI3gyMjExOzwvbW8+Cis8L21hdGg+CitvcGVyYXRvcjoKKzxtYXRoIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtbyBtYXRoc2l6ZT0nc21h
bGwnPkI8L21vPgorPG1vIG1hdGhzaXplPSdub3JtYWwnPkI8L21vPgorPG1vIG1hdGhzaXplPSdi
aWcnPkI8L21vPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q1Jz5vcGVyYXRvcjogCis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bW8+4oirPC9tbz4K
KzxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgaGVpZ2h0OiA0MHB4OyB3aWR0aDog
NDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ii8+
Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tYXRo
bWwvcHJlc2VudGF0aW9uL292ZXIueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0
aG1sL3ByZXNlbnRhdGlvbi9vdmVyLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9vdmVyLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUw
IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4K
Kzx0aXRsZT5PdmVyPC90aXRsZT4KKzxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0ndDEnPm92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1vdmVyPgorPG1pPkI8L21pPgorPG1pPng8
L21pPgorPC9tb3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0Mic+b3ZlcjogCis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bW92ZXI+Cis8bWk+
QjwvbWk+Cis8bWk+eTwvbWk+Cis8L21vdmVyPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3QzJz5v
dmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4K
Kzxtb3Zlcj4KKzxtaSBtYXRoc2l6ZT0nYmlnJz5CPC9taT4KKzxtaT55PC9taT4KKzwvbW92ZXI+
Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDQnPm92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1vdmVyPgorPG1vIG1hdGhzaXplPSdiaWcn
PiYjeDIyMTE7PC9tbz4KKzxtaT55PC9taT4KKzwvbW92ZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBp
ZD0ndDUnPm92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPgorPG1vdmVyPgorPG1vPuKIqzwvbW8+Cis8bWk+eTwvbWk+Cis8L21vdmVyPgorPGRp
diBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4
Ii8+Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9t
YXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21hdGhtbC9wcmVzZW50YXRpb24vcm9vdHMueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ4IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8
aGVhZD4KKzx0aXRsZT5Sb290czwvdGl0bGU+Cis8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPgorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz5zcXVhcmUgcm9vdDogCis8bWF0aCB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXNxcnQ+PG1uPjI8
L21uPjwvbXNxcnQ+Cis8L21hdGg+PC9wPgorPHAgaWQ9J3QyJz5sb25nIHNxdWFyZSByb290OiAK
KzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3Fy
dD48bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4xPC9tbj48L21yb3c+PC9tc3FydD4KKzwv
bWF0aD48L3A+Cis8cCBpZD0ndDMnPmxvbmcgc3F1YXJlIHJvb3Qgd2l0aCBpbXBsaWVkIHJvdzog
Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXNx
cnQ+PG1zdXA+PG1pPng8L21pPjxtbj4yPC9tbj48L21zdXA+PG1vPis8L21vPjxtbj4xPC9tbj48
L21zcXJ0PgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0NCc+cm9vdCBvZiBhIGZyYWN0aW9uOiAKKzxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3FydD4K
KzxtZnJhYz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjE8L21uPjwvbXJvdz4KKzxt
cm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjI8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21z
cXJ0PgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0NSc+Y3ViZSByb290OiAKKzxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm9vdD48bW4+MjwvbW4+PG1u
PjM8L21uPjwvbXJvb3Q+Cis8L21hdGg+PC9wPgorPHAgaWQ9J3Q2Jz5sb25nIGluZGV4OiAKKzxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm9vdD48
bW4+MjwvbW4+PG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxt
aT56PC9taT48L21yb3c+PC9tcm9vdD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDYnPmxvbmcgaW5k
ZXggdy8gY29tcGxleCBiYXNlOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4
L01hdGgvTWF0aE1MJz4KKzxtcm9vdD4KKzxtZnJhYz4KKzxtcm93PjxtaT54PC9taT48bW8+Kzwv
bW8+PG1uPjE8L21uPjwvbXJvdz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjI8L21u
PjwvbXJvdz4KKzwvbWZyYWM+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPjxtaT55PC9taT48
bW8+KzwvbW8+PG1pPno8L21pPjwvbXJvdz4KKzwvbXJvb3Q+Cis8L21hdGg+PC9wPgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3Rz
L21hdGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21hdGhtbC9wcmVzZW50YXRpb24vcm93LnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9yb3cueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE4IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVh
ZD4KKzx0aXRsZT5Sb3dzIGFuZCBPcGVyYXRvcnM8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KK21vIHsKKyAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMDAsMjAwLDIwMCk7Cit9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4xPC9tbj48L21h
dGg+Cis8L3A+Cis8cCBpZD0ndDEnPgorMTZweDoKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz57PC9tbz48ZGl2IHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2
ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO2hlaWdodDogMTZweDsgd2lkdGg6IDE2cHg7IGJhY2tncm91
bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz59PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0
aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+
WzwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rp
c3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTtoZWlnaHQ6IDE2cHg7
IHdpZHRoOiAxNnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+XTwvbW8+
PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnPgorPG1yb3c+PG1vPig8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWdu
OiBtaWRkbGU7IGhlaWdodDogMTZweDsgd2lkdGg6IDE2cHg7IGJhY2tncm91bmQtY29sb3I6IHJn
YigwLDI1NSwwKScvPjxtbz4pPC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+fDwvbW8+PGRpdiB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGlu
ZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZw
eDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPnw8L21vPjwvbXJvdz4KKzwv
bWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4K
Kzxtcm93Pjxtbz4mI3gyMjJiOzwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1p
ZGRsZTsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApOycvPjwvbXJvdz4KKzwvbWF0aD4KKzwvcD4K
KzxwIGlkPSd0MSc+CisyNHB4OgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgv
TWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPns8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFs
aWduOiBtaWRkbGU7IGhlaWdodDogMjRweDsgd2lkdGg6IDI0cHg7IGJhY2tncm91bmQtY29sb3I6
IHJnYigwLDI1NSwwKScvPjxtbz59PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+WzwvbW8+PGRp
diB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlu
bGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiAyNHB4OyB3aWR0aDog
MjRweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPl08L21vPjwvbXJvdz4K
KzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1M
Jz4KKzxtcm93Pjxtbz4oPC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxl
OyBoZWlnaHQ6IDI0cHg7IHdpZHRoOiAyNHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUs
MCknLz48bW8+KTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPnw8L21vPjxkaXYgeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMjRweDsgd2lkdGg6IDI0cHg7IGJhY2tn
cm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz58PC9tbz48L21yb3c+Cis8L21hdGg+Cis8
bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48
bW8+JiN4MjIyYjs8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwn
IHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhl
aWdodDogMjRweDsgd2lkdGg6IDI0cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScv
PjwvbXJvdz4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0MSc+CiszMnB4OgorPG1hdGggeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPns8L21vPjxk
aXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMzJweDsgd2lkdGg6
IDMycHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz59PC9tbz48L21yb3c+
Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhN
TCc+Cis8bXJvdz48bW8+WzwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRs
ZTsgaGVpZ2h0OiAzMnB4OyB3aWR0aDogMzJweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1
LDApJy8+PG1vPl08L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz4oPC9tbz48ZGl2IHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2Nr
OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAzMnB4OyBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+KTwvbW8+PC9tcm93PgorPC9tYXRoPgor
PG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+
PG1vPnw8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxl
PSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDog
MzJweDsgd2lkdGg6IDMycHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz58
PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+JiN4MjIyYjs8L21vPjxkaXYgeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZl
cnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMzJweDsgd2lkdGg6IDMycHg7IGJhY2tncm91
bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjwvbXJvdz4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0
MSc+Cis0OHB4OgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRo
TUwnPgorPG1yb3c+PG1vPns8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRk
bGU7IGhlaWdodDogNDhweDsgd2lkdGg6IDQ4cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1
NSwwKScvPjxtbz59PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+WzwvbW8+PGRpdiB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9j
azsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVpZ2h0OiA0OHB4OyB3aWR0aDogNDhweDsgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPl08L21vPjwvbXJvdz4KKzwvbWF0aD4K
KzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93
Pjxtbz4oPC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHls
ZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6
IDQ4cHg7IHdpZHRoOiA0OHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCknLz48bW8+
KTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPnw8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2Fs
LWFsaWduOiBtaWRkbGU7IGhlaWdodDogNDhweDsgd2lkdGg6IDQ4cHg7IGJhY2tncm91bmQtY29s
b3I6IHJnYigwLDI1NSwwKScvPjxtbz58PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+JiN4MjIy
Yjs8L21vPjxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogNDhw
eDsgd2lkdGg6IDQ4cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjwvbXJvdz4K
KzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0MSc+CisxMjBweDoKKzxtYXRoIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxtbz57PC9tbz48ZGl2IHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJs
b2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDEyMHB4OyB3aWR0aDogMTIwcHg7
IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz59PC9tbz48L21yb3c+Cis8L21h
dGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8
bXJvdz48bW8+WzwvbW8+PGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcg
c3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgaGVp
Z2h0OiAxMjBweDsgd2lkdGg6IDEyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUsMCkn
Lz48bW8+XTwvbW8+PC9tcm93PgorPC9tYXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb3c+PG1vPig8L21vPjxkaXYgeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZl
cnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMTIwcHg7IHdpZHRoOiAxMjBweDsgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PG1vPik8L21vPjwvbXJvdz4KKzwvbWF0aD4KKzxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm93Pjxt
bz58PC9tbz48ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyBzdHlsZT0n
ZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBoZWlnaHQ6IDEy
MHB4OyB3aWR0aDogMTIwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSwwKScvPjxtbz58
PC9tbz48L21yb3c+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OC9NYXRoL01hdGhNTCc+Cis8bXJvdz48bW8+JiN4MjIyYjs8L21vPjxkaXYgeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZl
cnRpY2FsLWFsaWduOiBtaWRkbGU7IGhlaWdodDogMTIwcHg7IHdpZHRoOiAxMjBweDsgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsMjU1LDApJy8+PC9tcm93PgorPC9tYXRoPgorPC9wPgorPHAgaWQ9
J3Q1Jz4KKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4K
Kzxtcm93PgorPG1vPig8L21vPgorPGRpdiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCcgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRs
ZTsgaGVpZ2h0OiA0MHB4OyB3aWR0aDogNDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjU1
LDApJy8+Cis8bW8+LDwvbW8+Cis8ZGl2IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxl
OyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyNTUs
MCknLz4KKzxtbz4sPC9tbz4KKzxkaXYgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7
IGhlaWdodDogNDBweDsgd2lkdGg6IDQwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigwLDI1NSww
KScvPgorPG1vPik8L21vPgorPC9tcm93PgorPC9tYXRoPgorPC9wPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zdWJzdXAueGh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zdWJzdXAueGh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+U3Vic2NyaXB0IGFuZCBTdXBl
cnNjcmlwdHM8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0ndDEnPmJvdGg6IAorPG1h
dGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1zdWJzdXA+
PG1pPng8L21pPjxtbj4xPC9tbj48bWk+azwvbWk+PC9tc3Vic3VwPgorPC9tYXRoPgorPC9wPgor
PHAgaWQ9J3QyJz5sb25nIHN1YnNjcmlwdCB3LyBib3RoOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3Vic3VwPgorPG1pPlo8L21pPgorPG1y
b3c+PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56PC9taT48L21y
b3c+Cis8bWk+ajwvbWk+Cis8L21zdWJzdXA+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMnPmxv
bmcgc3VwZXJzY3JpcHQgdy8gYm90aDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1YnN1cD4KKzxtaT5aPC9taT4KKzxtaT54PC9taT4KKzxt
cm93PjxtaT5rPC9taT48bW8+KzwvbW8+PG1pPmo8L21pPjwvbXJvdz4KKzwvbXN1YnN1cD4KKzwv
bWF0aD4KKzwvcD4KKzxwIGlkPSd0NCc+bG9uZyB3LyBib3RoOiAKKzxtYXRoIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3Vic3VwPgorPG1pPlo8L21pPgor
PG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56PC9taT48
L21yb3c+Cis8bXJvdz48bWk+azwvbWk+PG1vPis8L21vPjxtaT5qPC9taT48L21yb3c+Cis8L21z
dWJzdXA+Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9tYXRobWwvcHJlc2VudGF0aW9uL3RhYmxlcy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3RhYmxlcy54aHRtbAkocmV2aXNpb24gNTQ2MDYpCisr
KyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3RhYmxlcy54aHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNSw2ICs1LDcgQEAKIDxib2R5PgogPHAgaWQ9J3QxJz5zaW1wbGU6IAogPG1hdGgg
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1mZW5jZWQgb3Bl
bj0iWyIgY2xvc2U9Il0iPgogPG10YWJsZT4KIDxtdHI+CiA8bXRkPjxtc3ViPjxtaT5hPC9taT48
bW4+MTE8L21uPjwvbXN1Yj48L210ZD4KQEAgLTIyLDYgKzIzLDcgQEAKIDxtdGQ+PG1zdWI+PG1p
PmM8L21pPjxtbj4zMzwvbW4+PC9tc3ViPjwvbXRkPgogPC9tdHI+CiA8L210YWJsZT4KKzwvbWZl
bmNlZD4KIDwvbWF0aD4KIDwvcD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9w
cmVzZW50YXRpb24vdW5kZXIueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1s
L3ByZXNlbnRhdGlvbi91bmRlci54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21h
dGhtbC9wcmVzZW50YXRpb24vdW5kZXIueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMg
QEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgor
PHRpdGxlPlVuZGVyPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz51bmRlcjog
Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXVu
ZGVyPgorPG1pPkI8L21pPgorPG1pPng8L21pPgorPC9tdW5kZXI+Cis8L21hdGg+Cis8L3A+Cis8
cCBpZD0ndDInPnVuZGVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MJz4KKzxtdW5kZXI+Cis8bWk+QjwvbWk+Cis8bWk+WDwvbWk+Cis8L211bmRlcj4K
KzwvbWF0aD4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21hdGht
bC9wcmVzZW50YXRpb24vdW5kZXJvdmVyLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21hdGhtbC9wcmVzZW50YXRpb24vdW5kZXJvdmVyLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDMgQEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sJz4KKzxoZWFkPgorPHRpdGxlPlVuZGVyL092ZXI8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0ndDEnPnVuZGVyICZhbXA7IG92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG11bmRlcm92ZXI+Cis8bWk+QjwvbWk+Cis8bWk+
eDwvbWk+Cis8bWk+eTwvbWk+Cis8L211bmRlcm92ZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0n
dDInPnVuZGVyICZhbXA7IG92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwnPgorPG11bmRlcm92ZXI+Cis8bWk+QjwvbWk+Cis8bWk+WDwvbWk+Cis8
bWk+eTwvbWk+Cis8L211bmRlcm92ZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMnPnVuZGVy
ICZhbXA7IG92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPgorPG11bmRlcm92ZXI+Cis8bW8gbWF0aHNpemU9J2JpZyc+JiN4MjIxMTs8L21vPgor
PG1yb3c+PG1pPmk8L21pPjxtbz49PC9tbz48bWk+MDwvbWk+PC9tcm93PgorPG1yb3c+PG1pPng8
L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PC9tcm93PgorPC9tdW5kZXJvdmVyPgorPC9tYXRoPgor
PC9wPgorPHAgaWQ9J3Q0Jz51bmRlciAmYW1wOyBvdmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtdW5kZXJvdmVyPgorPG1vIG1hdGhzaXpl
PSdiaWcnPiYjeDIyMTE7PC9tbz4KKzxtcm93PjxtaT5JPC9taT48bW8+PTwvbW8+PG1pPjA8L21p
PjwvbXJvdz4KKzxtcm93PjxtaT5YPC9taT48bW8+KzwvbW8+PG1pPnk8L21pPjwvbXJvdz4KKzwv
bXVuZGVyb3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>