<?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>112057</bug_id>
          
          <creation_ts>2013-03-11 13:06:48 -0700</creation_ts>
          <short_desc>Factor HTMLTreeBuilderSimulator out of BackgroundHTMLParser</short_desc>
          <delta_ts>2013-03-13 23:49:19 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          <blocked>106127</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852632</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-11 13:06:48 -0700</bug_when>
    <thetext>Factor HTMLTreeBuilderSimulator out of BackgroundHTMLParser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852639</commentid>
    <comment_count>1</comment_count>
      <attachid>192537</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-11 13:11:19 -0700</bug_when>
    <thetext>Created attachment 192537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852642</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 13:14:33 -0700</bug_when>
    <thetext>Attachment 192537 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.gypi&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.cpp&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilderSimulator.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilderSimulator.h&apos;]&quot; exit_code: 1
Source/WebCore/html/parser/HTMLTreeBuilderSimulator.h:42:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/parser/HTMLTreeBuilderSimulator.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/html/parser/HTMLTreeBuilderSimulator.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852644</commentid>
    <comment_count>3</comment_count>
      <attachid>192537</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 13:17:54 -0700</bug_when>
    <thetext>Comment on attachment 192537
Patch

This is so much cleaner!  This opens up a bunch of interesting possibilities for re-use of this code. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852655</commentid>
    <comment_count>4</comment_count>
      <attachid>192541</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-11 13:28:58 -0700</bug_when>
    <thetext>Created attachment 192541
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852659</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 13:33:15 -0700</bug_when>
    <thetext>Attachment 192541 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.gypi&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.cpp&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilderSimulator.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilderSimulator.h&apos;]&quot; exit_code: 1
Source/WebCore/html/parser/HTMLTreeBuilderSimulator.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/html/parser/HTMLTreeBuilderSimulator.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852687</commentid>
    <comment_count>6</comment_count>
      <attachid>192541</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 13:55:58 -0700</bug_when>
    <thetext>Comment on attachment 192541
Patch for landing

Clearing flags on attachment: 192541

Committed r145398: &lt;http://trac.webkit.org/changeset/145398&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852688</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 13:56:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855000</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-13 23:49:19 -0700</bug_when>
    <thetext>Mac build fix landed in http://trac.webkit.org/changeset/145781. (I forgot to mention it in the change log :()</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192537</attachid>
            <date>2013-03-11 13:11:19 -0700</date>
            <delta_ts>2013-03-11 13:28:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112057-20130311130719.patch</filename>
            <type>text/plain</type>
            <size>26380</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE5NGRmMTMxNzgwMWI0
MTEyNDM0ZWMxOTc2ZjMxZDVlMDE4OTVjNy4uY2RkZjQ5YjEyMWNjYTg4YTQ2ZTVjNWM4MWM5MTQx
NzEyNWU2NjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAzLTExICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRmFjdG9yIEhUTUxUcmVlQnVp
bGRlclNpbXVsYXRvciBvdXQgb2YgQmFja2dyb3VuZEhUTUxQYXJzZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXVsYXRpbmcgdGhlIEhUTUwgdHJl
ZSBidWlsZGVyIGlzIGEgc2VwYXJhdGUgY29uY2VybiBmcm9tIHBhcnNpbmcgb24KKyAgICAgICAg
dGhlIGJhY2tncm91bmQgdGhyZWFkLiBXZSBwbGFuIHRvIHJlLXVzZSB0aGUgdHJlZSBidWlsZGVy
IHNpbXVsYXRvciBmb3IKKyAgICAgICAgdGhlIHZpZXctc291cmNlIHBhcnNlciwgZm9yIGV4YW1w
bGUuIEFsc28sIGhhdmluZyB0aGUgc2ltdWxhdG9yIGFzIGEKKyAgICAgICAgc2VwYXJhdGUgb2Jq
ZWN0IHdpbGwgbWFrZSBpdCBlYXNpZXIgdG8gZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NjQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQ
YXJzZXI6OkJhY2tncm91bmRIVE1MUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91
bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTFBhcnNlci5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxQYXJzZXIpOgorCiAy
MDEzLTAzLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU09VUF0gUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZSBkb2Vzbid0
IHVwZGF0ZSB0aGUgVVJJIG9mIHRoZSBzb3VwIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggNjQ1YmJmZGU0NDJmNGZjYTkyOGUyZWEyM2JiMzg4ZTc1Yjc0YTBmNi4uOTQyZGVjOTUzNTA5
ZDY2MWIzZmJiMWNkNDgwZmU3ZDJjN2YwNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1
NjIsNiArMTU2Miw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3BhcnNlci9IVE1M
U291cmNlVHJhY2tlci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAogICAg
IGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKyAgICBodG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXJTaW11bGF0b3IuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJz
ZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAogICAgIGh0bWwv
cGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMzA4NzdkNjU4MmQyMGI4OTQ5YjAzYTcyZGQxMmU5NjA1NjY4M2U1MC4uZTk4Mzc1
YWRiNzY1MzNmNDIzMTY1ZmJmNDU1NGE3Mjk0MjRjYTE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zNjQ0LDYgKzM2NDQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlclNpbXVsYXRvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlclNpbXVsYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMjQ0YmNiMWEzMGNm
NzdhNzA2YjIxMmZmZGZmNTZmMzg5MDkzMzA5Zi4uMGNiMWM2NjcxZmY3YmNkOWNkMTQzZDY2N2Yx
OWZiN2FjMWNkMTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC03NDcsNiArNzQ3LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwIFwKICAgICBodG1sL3Bh
cnNlci9IVE1MVG9rZW5pemVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcCBcCisgICAgaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcCBcCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwKICAgICBodG1sL3BhcnNl
ci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJj
ZVBhcnNlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDk4ZDNhZWZmMTg4ZmZjMTMyYTIzMjg4
YTdmNmYxZDBlZjE2YWY4NDcuLjFhMzJlODI0MjY4MGY5YTgwM2U1MDgwMDZlMzkyYTE2ODJlZGEz
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1MzIsNiArMzUzMiw4IEBACiAgICAgICAgICAgICAn
aHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxh
dG9yLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxh
dG9yLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNw
cCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9wYXJzZXIvSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGM2NGJlYTk2
NjIwODk3YWJlNTE3MmZmM2U2ZjNiM2NmNjJhMTA3OGQuLjk2OTUwZTNhMTNjMDM4NzJlZmZjNzE2
NGZhMzg0MzUxZjZkYzIzNzUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC02NTIwMiw2ICs2NTIwMiwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxwYXJzZXJcSFRNTFRyZWVC
dWlsZGVyU2ltdWxhdG9yLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvci5o
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxwYXJzZXJcSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJz
ZXIuY3BwCmluZGV4IGVlZjI5M2FhNWVjZTVlMjU1Yzg0NDZiOWY3MzFiYjZhZGU5YjFlOGMuLjU5
ZGMyZjRlM2Q2NzIyNWFkMDY1YzYzMGIwYmZkMGJlMTQwZWZkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTMwLDIx
ICszMCwxNSBAQAogI2luY2x1ZGUgIkJhY2tncm91bmRIVE1MUGFyc2VyLmgiCiAKICNpbmNsdWRl
ICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgogI2lu
Y2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKLSNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgotI2luY2x1
ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7Ci0KICNpZm5kZWYgTkRFQlVHCiAKIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFRv
a2Vuc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoY29uc3QgQ29tcGFjdEhUTUxUb2tlblN0
cmVhbSogdG9rZW5zKQpAQCAtNjcsODEgKzYxLDExIEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhT
U0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4
CiAKICNlbmRpZgogCi1zdGF0aWMgYm9vbCB0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQoY29uc3Qg
Q29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgY29waWVk
IGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50IGFuZCBj
aGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2guCi0gICAgY29uc3QgSFRNTElk
ZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7Ci0gICAgcmV0dXJuIHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgYmlnVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGJvZHlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBiclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIGNlbnRlclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIGNvZGVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBkZFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIGRpdlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGRsVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwg
ZHRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBlbVRh
ZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGVtYmVkVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDFUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoMlRhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGgzVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDRUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoNVRhZykKLSAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGg2VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGhyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIGltZ1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIGxpVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgbGlzdGluZ1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIG1lbnVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCBtZXRhVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgbm9iclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IG9sVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgcFRh
ZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHByZVRhZykK
LSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHJ1YnlUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzVGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc21hbGxUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzcGFuVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3Ryb25nVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3RyaWtlVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3ViVGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3VwVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCi0gICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0dFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCB1bFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIHZhclRhZykKLSAgICAgICAgfHwgKHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0QXR0cmlidXRlSXRlbShjb2xvckF0
dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0dHIpIHx8IHRva2VuLmdldEF0dHJp
YnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7Ci19Ci0KLXN0YXRpYyBib29sIHRva2VuRXhpdHNTVkcoY29u
c3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgLy8gRklYTUU6IEl0J3MgdmVyeSBm
cmFnaWxlIHRoYXQgd2Ugc3BlY2lhbCBjYXNlIGZvcmVpZ25PYmplY3QgaGVyZSB0byBiZSBjYXNl
LWluc2Vuc2l0aXZlLgotICAgIC8vIEZJWE1FOiBVc2luZyBDYXNlRm9sZGluZ0hhc2g6OmVxdWFs
IGluc3RlYWQgb2YgZXF1YWxJZ25vcmluZ0Nhc2UsIGFzIGVxdWFsSWdub3JpbmdDYXNlCi0gICAg
Ly8gd2FudHMgbm9uLWNvbnN0IFN0cmluZ0ltcGwqIChldmVuIHRob3VnaCBpdCBuZXZlciBtb2Rp
ZmllcyB0aGVtKS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExODkyIGlzIGZvciBmaXhpbmcgZXF1YWxJZ25vcmluZ0Nhc2UuCi0gICAgcmV0dXJuIENh
c2VGb2xkaW5nSGFzaDo6ZXF1YWwodG9rZW4uZGF0YSgpLmFzU3RyaW5nSW1wbCgpLCBTVkdOYW1l
czo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwotfQotCi1zdGF0aWMgYm9v
bCB0b2tlbkV4aXRzTWF0aChjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKLXsKLSAgICAv
LyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MRWxlbWVudFN0YWNrOjppc01hdGhNTFRl
eHRJbnRlZ3JhdGlvblBvaW50IGFuZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlTWF0Y2guCi0g
ICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7Ci0gICAgcmV0
dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWlUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bW9UYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bW5UYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bXNUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bXRleHRUYWcpOwotfQot
CiBzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKIAogQmFja2dy
b3VuZEhUTUxQYXJzZXI6OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVy
ZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NPd25QdHI8Q29uZmln
dXJhdGlvbj4gY29uZmlnKQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCisg
ICAgLCBtX3RyZWVCdWlsZGVyU2ltdWxhdG9yKGNvbmZpZy0+b3B0aW9ucykKICAgICAsIG1fdG9r
ZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCiAgICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5p
emVyOjpjcmVhdGUoY29uZmlnLT5vcHRpb25zKSkKICAgICAsIG1fb3B0aW9ucyhjb25maWctPm9w
dGlvbnMpCkBAIC0xNTAsNyArNzQsNiBAQCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3Vu
ZEhUTUxQYXJzZXIoUGFzc1JlZlB0cjxXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVAogICAgICwg
bV94c3NBdWRpdG9yKGNvbmZpZy0+eHNzQXVkaXRvci5yZWxlYXNlKCkpCiAgICAgLCBtX3ByZWxv
YWRTY2FubmVyKGNvbmZpZy0+cHJlbG9hZFNjYW5uZXIucmVsZWFzZSgpKQogewotICAgIG1fbmFt
ZXNwYWNlU3RhY2suYXBwZW5kKEhUTUwpOwogfQogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjphcHBlbmQoY29uc3QgU3RyaW5nJiBpbnB1dCkKQEAgLTIwMyw1NyArMTI2LDYgQEAgdm9pZCBC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiAgICAgbV9pbnB1dC5jbG9zZSgp
OwogfQogCi1ib29sIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNv
bnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQotewotICAgIGlmICh0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuOjpTdGFydFRhZykgewotICAgICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFn
TmFtZSA9IHRva2VuLmRhdGEoKTsKLSAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBTVkdOYW1lczo6c3ZnVGFnKSkKLSAgICAgICAgICAgIG1fbmFtZXNwYWNlU3RhY2suYXBwZW5k
KFNWRyk7Ci0gICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6
Om1hdGhUYWcpKQotICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQoTWF0aE1MKTsK
LSAgICAgICAgaWYgKGluRm9yZWlnbkNvbnRlbnQoKSAmJiB0b2tlbkV4aXRzRm9yZWlnbkNvbnRl
bnQodG9rZW4pKQotICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5yZW1vdmVMYXN0KCk7Ci0g
ICAgICAgIGlmICgobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gU1ZHICYmIHRva2VuRXhpdHNT
VkcodG9rZW4pKQotICAgICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IE1h
dGhNTCAmJiB0b2tlbkV4aXRzTWF0aCh0b2tlbikpKQotICAgICAgICAgICAgbV9uYW1lc3BhY2VT
dGFjay5hcHBlbmQoSFRNTCk7Ci0gICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKSB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgY29weSBvZiBUb2tlbml6ZXI6OnVw
ZGF0ZVN0YXRlRm9yIHdoaWNoIHVzZXMgdGhyZWFkU2FmZU1hdGNoZXMuCi0gICAgICAgICAgICBp
ZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHRleHRhcmVhVGFnKSB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGl0bGVUYWcpKQotICAgICAgICAgICAgICAg
IG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZSk7Ci0gICAg
ICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgcGxhaW50
ZXh0VGFnKSkKLSAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2Vu
aXplcjo6UExBSU5URVhUU3RhdGUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCi0gICAgICAgICAgICAgICAgbV90b2tl
bml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcp
Ci0gICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGlm
cmFtZVRhZykKLSAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgeG1wVGFnKQotICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBsdWdpbnNFbmFibGVkKQotICAg
ICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2ZyYW1l
c1RhZykKLSAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCi0gICAgICAgICAg
ICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
RW5kVGFnKSB7Ci0gICAgICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4u
ZGF0YSgpOwotICAgICAgICBpZiAoKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IFNWRyAmJiB0
aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykpCi0gICAgICAgICAgICB8
fCAobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gTWF0aE1MICYmIHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCi0gICAgICAgICAgICB8fCAobV9uYW1lc3Bh
Y2VTdGFjay5jb250YWlucyhTVkcpICYmIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IEhUTUwg
JiYgdG9rZW5FeGl0c1NWRyh0b2tlbikpCi0gICAgICAgICAgICB8fCAobV9uYW1lc3BhY2VTdGFj
ay5jb250YWlucyhNYXRoTUwpICYmIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IEhUTUwgJiYg
dG9rZW5FeGl0c01hdGgodG9rZW4pKSkKLSAgICAgICAgICAgIG1fbmFtZXNwYWNlU3RhY2sucmVt
b3ZlTGFzdCgpOwotICAgICAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IHNjcmlwdFRhZykpIHsKLSAgICAgICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKQotICAg
ICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpEYXRhU3Rh
dGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gRklYTUU6IEFsc28gc2V0Rm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQgd2hlbiBpbiB0
ZXh0IG1vZGUuCi0gICAgbV90b2tlbml6ZXItPnNldEZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2Vt
ZW50KGluRm9yZWlnbkNvbnRlbnQoKSk7Ci0gICAgbV90b2tlbml6ZXItPnNldFNob3VsZEFsbG93
Q0RBVEEoaW5Gb3JlaWduQ29udGVudCgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiB7CiAgICAgd2hpbGUgKHRydWUp
IHsKQEAgLTI3OSw3ICsxNTEsNyBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9r
ZW5pemVyKCkKIAogICAgICAgICBtX3Rva2VuLT5jbGVhcigpOwogCi0gICAgICAgIGlmICghc2lt
dWxhdGVUcmVlQnVpbGRlcihtX3BlbmRpbmdUb2tlbnMtPmxhc3QoKSkgfHwgbV9wZW5kaW5nVG9r
ZW5zLT5zaXplKCkgPj0gcGVuZGluZ1Rva2VuTGltaXQpCisgICAgICAgIGlmICghbV90cmVlQnVp
bGRlclNpbXVsYXRvci5zaW11bGF0ZShtX3BlbmRpbmdUb2tlbnMtPmxhc3QoKSwgbV90b2tlbml6
ZXIuZ2V0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+c2l6ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0
KQogICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKaW5kZXgg
Mjg1NWI3YTc4MjM5YzQ1MmI0NTRkY2MwYjVjZTI1NDYzMjMxZWUzNC4uYWE2MGIwOWM0NzdlM2I0
ZjEwYWQ4MTU2ZmViNjJjOTJkNDRlOTc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiSFRNTFNvdXJjZVRyYWNrZXIuaCIKICNpbmNsdWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRl
ICJIVE1MVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmgi
CiAjaW5jbHVkZSAiWFNTQXVkaXRvckRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Myw3ICs0NCw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBjb25zdCB2b2lkKiBQYXJzZXJJZGVudGlmaWVyOwog
Y2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOwogY2xhc3MgWFNTQXVkaXRvcjsKIApAQCAtODEsMjUg
KzgxLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcmNlUGxhaW50ZXh0Rm9yVGV4dERvY3VtZW50
KCk7CiAKIHByaXZhdGU6Ci0gICAgZW51bSBOYW1lc3BhY2UgewotICAgICAgICBIVE1MLAotICAg
ICAgICBTVkcsCi0gICAgICAgIE1hdGhNTAotICAgIH07Ci0KICAgICBCYWNrZ3JvdW5kSFRNTFBh
cnNlcihQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+ID4sIFBh
c3NPd25QdHI8Q29uZmlndXJhdGlvbj4pOwogCiAgICAgdm9pZCBtYXJrRW5kT2ZGaWxlKCk7CiAg
ICAgdm9pZCBwdW1wVG9rZW5pemVyKCk7Ci0gICAgYm9vbCBzaW11bGF0ZVRyZWVCdWlsZGVyKGNv
bnN0IENvbXBhY3RIVE1MVG9rZW4mKTsKLQogICAgIHZvaWQgc2VuZFRva2Vuc1RvTWFpblRocmVh
ZCgpOwotICAgIGJvb2wgaW5Gb3JlaWduQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZXNw
YWNlU3RhY2subGFzdCgpICE9IEhUTUw7IH0KIAotICAgIFZlY3RvcjxOYW1lc3BhY2UsIDE+IG1f
bmFtZXNwYWNlU3RhY2s7CiAgICAgV2Vha1B0ckZhY3Rvcnk8QmFja2dyb3VuZEhUTUxQYXJzZXI+
IG1fd2Vha0ZhY3Rvcnk7CiAgICAgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSBtX2lucHV0Owog
ICAgIEhUTUxTb3VyY2VUcmFja2VyIG1fc291cmNlVHJhY2tlcjsKKyAgICBIVE1MVHJlZUJ1aWxk
ZXJTaW11bGF0b3IgbV90cmVlQnVpbGRlclNpbXVsYXRvcjsKICAgICBPd25QdHI8SFRNTFRva2Vu
PiBtX3Rva2VuOwogICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiBtX3Rva2VuaXplcjsKICAgICBI
VE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzQ5
MTU0NTc1ODY5OTJkMzk5NzkwOGRmNWM1ZGYxMGZkYmEzMzJlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcApA
QCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
R09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRN
TF9QQVJTRVIpCisKKyNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuaCIKKworI2lu
Y2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCisj
aW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3N0YXRpYyBib29s
IHRva2VuRXhpdHNGb3JlaWduQ29udGVudChjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikK
K3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaC4KKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2Vu
LmRhdGEoKTsKKyAgICByZXR1cm4gdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiaWdUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBibG9ja3F1b3Rl
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYm9keVRh
ZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJyVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgY2VudGVyVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgY29kZVRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGRkVGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGl2VGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGxUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkdFRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGVtVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZW1iZWRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoMVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGgyVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgaDNUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBoNFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIGg1VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgaDZUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBo
ZWFkVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaHJU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBpVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW1nVGFnKQorICAg
ICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbGlUYWcpCisgICAgICAg
IHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBsaXN0aW5nVGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbWVudVRhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG1ldGFUYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2JyVGFnKQorICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgb2xUYWcpCisgICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBwVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgcHJlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgcnVieVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIHNUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBzbWFsbFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIHNwYW5UYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBzdHJvbmdUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBzdHJpa2VUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBzdWJUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBzdXBUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCB0YWJsZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIHR0VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwg
dVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVsVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdmFyVGFnKQor
ICAgICAgICB8fCAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGZvbnRUYWcpICYm
ICh0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKGNvbG9yQXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRl
SXRlbShmYWNlQXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRlSXRlbShzaXplQXR0cikpKTsKK30K
Kworc3RhdGljIGJvb2wgdG9rZW5FeGl0c1NWRyhjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tl
bikKK3sKKyAgICAvLyBGSVhNRTogSXQncyB2ZXJ5IGZyYWdpbGUgdGhhdCB3ZSBzcGVjaWFsIGNh
c2UgZm9yZWlnbk9iamVjdCBoZXJlIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUuCisgICAgLy8gRklY
TUU6IFVzaW5nIENhc2VGb2xkaW5nSGFzaDo6ZXF1YWwgaW5zdGVhZCBvZiBlcXVhbElnbm9yaW5n
Q2FzZSwgYXMgZXF1YWxJZ25vcmluZ0Nhc2UKKyAgICAvLyB3YW50cyBub24tY29uc3QgU3RyaW5n
SW1wbCogKGV2ZW4gdGhvdWdoIGl0IG5ldmVyIG1vZGlmaWVzIHRoZW0pLgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE4OTIgaXMgZm9yIGZpeGluZyBl
cXVhbElnbm9yaW5nQ2FzZS4KKyAgICByZXR1cm4gQ2FzZUZvbGRpbmdIYXNoOjplcXVhbCh0b2tl
bi5kYXRhKCkuYXNTdHJpbmdJbXBsKCksIFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLmxvY2Fs
TmFtZSgpLmltcGwoKSk7Cit9CisKK3N0YXRpYyBib29sIHRva2VuRXhpdHNNYXRoKGNvbnN0IENv
bXBhY3RIVE1MVG9rZW4mIHRva2VuKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNvcGllZCBm
cm9tIEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQgYW5kIGNo
YW5nZWQgdG8gdXNlIHRocmVhZFNhZmVNYXRjaC4KKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYg
dGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICByZXR1cm4gdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIE1hdGhNTE5hbWVzOjptaVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIE1hdGhNTE5hbWVzOjptb1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIE1hdGhNTE5hbWVzOjptblRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIE1hdGhNTE5hbWVzOjptc1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIE1hdGhNTE5hbWVzOjptdGV4dFRhZyk7Cit9CisKK0hUTUxUcmVlQnVpbGRlclNpbXVsYXRv
cjo6SFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRp
b25zKQorICAgIDogbV9vcHRpb25zKG9wdGlvbnMpCit7CisgICAgbV9uYW1lc3BhY2VTdGFjay5h
cHBlbmQoSFRNTCk7Cit9CisKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzaW11bGF0
ZShjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbiwgSFRNTFRva2VuaXplciogdG9rZW5pemVy
KQoreworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykgeworICAg
ICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAg
ICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSkKKyAgICAg
ICAgICAgIG1fbmFtZXNwYWNlU3RhY2suYXBwZW5kKFNWRyk7CisgICAgICAgIGlmICh0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQorICAgICAgICAgICAgbV9u
YW1lc3BhY2VTdGFjay5hcHBlbmQoTWF0aE1MKTsKKyAgICAgICAgaWYgKGluRm9yZWlnbkNvbnRl
bnQoKSAmJiB0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQodG9rZW4pKQorICAgICAgICAgICAgbV9u
YW1lc3BhY2VTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmICgobV9uYW1lc3BhY2VTdGFj
ay5sYXN0KCkgPT0gU1ZHICYmIHRva2VuRXhpdHNTVkcodG9rZW4pKQorICAgICAgICAgICAgfHwg
KG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IE1hdGhNTCAmJiB0b2tlbkV4aXRzTWF0aCh0b2tl
bikpKQorICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQoSFRNTCk7CisgICAgICAg
IGlmICghaW5Gb3JlaWduQ29udGVudCgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBqdXN0IGEgY29weSBvZiBUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yIHdoaWNoIHVzZXMgdGhy
ZWFkU2FmZU1hdGNoZXMuCisgICAgICAgICAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIHRleHRhcmVhVGFnKSB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgdGl0bGVUYWcpKQorICAgICAgICAgICAgICAgIHRva2VuaXplci0+c2V0U3RhdGUoSFRNTFRv
a2VuaXplcjo6UkNEQVRBU3RhdGUpOworICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHBsYWludGV4dFRhZykpCisgICAgICAgICAgICAgICAgdG9r
ZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFn
KSkKKyAgICAgICAgICAgICAgICB0b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNj
cmlwdERhdGFTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpCisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGlmcmFtZVRhZykKKyAgICAgICAgICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgeG1wVGFnKQorICAgICAgICAgICAgICAgIHx8
ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRp
b25zLnBsdWdpbnNFbmFibGVkKQorICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBub2ZyYW1lc1RhZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2Ny
aXB0RW5hYmxlZCkpCisgICAgICAgICAgICAgICAgdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyOjpSQVdURVhUU3RhdGUpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZykgeworICAgICAgICBjb25zdCBIVE1MSWRlbnRp
ZmllciYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgaWYgKChtX25hbWVzcGFjZVN0
YWNrLmxhc3QoKSA9PSBTVkcgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpz
dmdUYWcpKQorICAgICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IE1hdGhN
TCAmJiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQorICAg
ICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2suY29udGFpbnMoU1ZHKSAmJiBtX25hbWVzcGFj
ZVN0YWNrLmxhc3QoKSA9PSBIVE1MICYmIHRva2VuRXhpdHNTVkcodG9rZW4pKQorICAgICAgICAg
ICAgfHwgKG1fbmFtZXNwYWNlU3RhY2suY29udGFpbnMoTWF0aE1MKSAmJiBtX25hbWVzcGFjZVN0
YWNrLmxhc3QoKSA9PSBIVE1MICYmIHRva2VuRXhpdHNNYXRoKHRva2VuKSkpCisgICAgICAgICAg
ICBtX25hbWVzcGFjZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKSB7CisgICAgICAgICAgICBpZiAoIWlu
Rm9yZWlnbkNvbnRlbnQoKSkKKyAgICAgICAgICAgICAgICB0b2tlbml6ZXItPnNldFN0YXRlKEhU
TUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogQWxzbyBzZXRGb3JjZU51bGxDaGFyYWN0ZXJS
ZXBsYWNlbWVudCB3aGVuIGluIHRleHQgbW9kZS4KKyAgICB0b2tlbml6ZXItPnNldEZvcmNlTnVs
bENoYXJhY3RlclJlcGxhY2VtZW50KGluRm9yZWlnbkNvbnRlbnQoKSk7CisgICAgdG9rZW5pemVy
LT5zZXRTaG91bGRBbGxvd0NEQVRBKGluRm9yZWlnbkNvbnRlbnQoKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlclNpbXVs
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxh
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTQ3MzIxNzA1OTZlYzFlNzkwZTNlNTY4ODgyYjQ5OWJiNjU1Zjli
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlclNpbXVsYXRvci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1MVHJlZUJ1aWxkZXJTaW11
bGF0b3JfaAorI2RlZmluZSBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3JfaAorCisjaWYgRU5BQkxF
KFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisjaW5jbHVkZSAiSFRNTFBhcnNlck9wdGlvbnMuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q29tcGFjdEhUTUxUb2tlbjsKK2NsYXNzIEhUTUxUb2tlbml6ZXI7CisKK2NsYXNzIEhUTUxUcmVl
QnVpbGRlclNpbXVsYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yKGNvbnN0IEhUTUxQYXJzZXJP
cHRpb25zJiBvcHRpb25zKTsKKyAgICBib29sIHNpbXVsYXRlKGNvbnN0IENvbXBhY3RIVE1MVG9r
ZW4mLCBIVE1MVG9rZW5pemVyKik7CisKK3ByaXZhdGU6CisgICAgZW51bSBOYW1lc3BhY2Ugewor
ICAgICAgICBIVE1MLAorICAgICAgICBTVkcsCisgICAgICAgIE1hdGhNTAorICAgIH07CisKKyAg
ICBib29sIGluRm9yZWlnbkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX25hbWVzcGFjZVN0YWNr
Lmxhc3QoKSAhPSBIVE1MOyB9CisKKyAgICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7Cisg
ICAgVmVjdG9yPE5hbWVzcGFjZSwgMT4gbV9uYW1lc3BhY2VTdGFjazsKK307CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192541</attachid>
            <date>2013-03-11 13:28:58 -0700</date>
            <delta_ts>2013-03-11 13:55:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112057-20130311132458.patch</filename>
            <type>text/plain</type>
            <size>25814</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAzLTExICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRmFjdG9yIEhUTUxUcmVlQnVpbGRl
clNpbXVsYXRvciBvdXQgb2YgQmFja2dyb3VuZEhUTUxQYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFNpbXVsYXRpbmcgdGhlIEhUTUwgdHJlZSBidWls
ZGVyIGlzIGEgc2VwYXJhdGUgY29uY2VybiBmcm9tIHBhcnNpbmcgb24KKyAgICAgICAgdGhlIGJh
Y2tncm91bmQgdGhyZWFkLiBXZSBwbGFuIHRvIHJlLXVzZSB0aGUgdHJlZSBidWlsZGVyIHNpbXVs
YXRvciBmb3IKKyAgICAgICAgdGhlIHZpZXctc291cmNlIHBhcnNlciwgZm9yIGV4YW1wbGUuIEFs
c28sIGhhdmluZyB0aGUgc2ltdWxhdG9yIGFzIGEKKyAgICAgICAgc2VwYXJhdGUgb2JqZWN0IHdp
bGwgbWFrZSBpdCBlYXNpZXIgdG8gZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDk3NjQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6
OkJhY2tncm91bmRIVE1MUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1M
UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5k
SFRNTFBhcnNlci5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxQYXJzZXIpOgorCiAyMDEzLTAz
LTExICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENo
cm9tZUNsaWVudC5oIGRvZXNu4oCZdCBuZWVkIHRvIGluY2x1ZGUgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDUzOTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTU2Miw2ICsxNTYy
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFj
a2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCiAgICAgaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorICAgIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlclNp
bXVsYXRvci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKICAg
ICBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvVGV4
dFZpZXdTb3VyY2VQYXJzZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDE0NTM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTM2NDQsNiArMzY0NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlz
aW9uIDE0NTM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkK
QEAgLTc0Nyw2ICs3NDcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL3BhcnNlci9IVE1MU291
cmNlVHJhY2tlci5jcHAgXAogICAgIGh0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwIFwKICAg
ICBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIFwKKyAgICBodG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXJTaW11bGF0b3IuY3BwIFwKICAgICBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJj
ZVBhcnNlci5jcHAgXAogICAgIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgXAog
ICAgIGh0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiAxNDUzOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTM1MzIsNiArMzUzMiw4IEBACiAgICAgICAgICAgICAnaHRtbC9w
YXJzZXIvSFRNTFRva2VuaXplci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
aCcsCisgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmNw
cCcsCisgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmgn
LAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9wYXJzZXIvSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuaCcsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTQ1
Mzk1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTY1MjAyLDYgKzY1MjAyLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxIVE1MVHJlZUJ1
aWxkZXJTaW11bGF0b3IuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxwYXJzZXJcSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXHBhcnNlclxIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhU
TUxQYXJzZXIuY3BwCShyZXZpc2lvbiAxNDUzOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIxICsz
MCwxNSBAQAogI2luY2x1ZGUgIkJhY2tncm91bmRIVE1MUGFyc2VyLmgiCiAKICNpbmNsdWRlICJI
VE1MRG9jdW1lbnRQYXJzZXIuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgogI2luY2x1
ZGUgIkhUTUxUb2tlbml6ZXIuaCIKLSNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgotI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7Ci0KICNpZm5kZWYgTkRFQlVHCiAKIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFRva2Vu
c0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoY29uc3QgQ29tcGFjdEhUTUxUb2tlblN0cmVh
bSogdG9rZW5zKQpAQCAtNjcsODEgKzYxLDExIEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0lu
Zm9zQXJlU2FmZVRvU2UKIAogI2VuZGlmCiAKLXN0YXRpYyBib29sIHRva2VuRXhpdHNGb3JlaWdu
Q29udGVudChjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKLXsKLSAgICAvLyBGSVhNRTog
VGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWln
bkNvbnRlbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaC4KLSAg
ICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKLSAgICByZXR1
cm4gdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiaWdUYWcpCi0gICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBibG9ja3F1b3RlVGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYm9keVRhZykKLSAgICAgICAgfHwgdGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJyVGFnKQotICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgY2VudGVyVGFnKQotICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgY29kZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGRkVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgZGl2VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgZGxUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBkdFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIGVtVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgZW1iZWRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCBoMVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IGgyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDNU
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoNFRhZykK
LSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGg1VGFnKQotICAg
ICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDZUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoZWFkVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaHJUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBpVGFnKQotICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW1nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbGlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCBsaXN0aW5nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgbWVudVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIG1ldGFUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBub2JyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgb2xUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBwVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgcHJlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgcnVieVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IHNUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzbWFs
bFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNwYW5U
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdHJvbmdU
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdHJpa2VU
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdWJUYWcp
Ci0gICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdXBUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0YWJsZVRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHR0VGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdVRhZykKLSAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVsVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdmFyVGFnKQotICAgICAgICB8fCAodGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGZvbnRUYWcpICYmICh0b2tlbi5nZXRBdHRyaWJ1
dGVJdGVtKGNvbG9yQXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRlSXRlbShmYWNlQXR0cikgfHwg
dG9rZW4uZ2V0QXR0cmlidXRlSXRlbShzaXplQXR0cikpKTsKLX0KLQotc3RhdGljIGJvb2wgdG9r
ZW5FeGl0c1NWRyhjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKLXsKLSAgICAvLyBGSVhN
RTogSXQncyB2ZXJ5IGZyYWdpbGUgdGhhdCB3ZSBzcGVjaWFsIGNhc2UgZm9yZWlnbk9iamVjdCBo
ZXJlIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUuCi0gICAgLy8gRklYTUU6IFVzaW5nIENhc2VGb2xk
aW5nSGFzaDo6ZXF1YWwgaW5zdGVhZCBvZiBlcXVhbElnbm9yaW5nQ2FzZSwgYXMgZXF1YWxJZ25v
cmluZ0Nhc2UKLSAgICAvLyB3YW50cyBub24tY29uc3QgU3RyaW5nSW1wbCogKGV2ZW4gdGhvdWdo
IGl0IG5ldmVyIG1vZGlmaWVzIHRoZW0pLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTE4OTIgaXMgZm9yIGZpeGluZyBlcXVhbElnbm9yaW5nQ2FzZS4K
LSAgICByZXR1cm4gQ2FzZUZvbGRpbmdIYXNoOjplcXVhbCh0b2tlbi5kYXRhKCkuYXNTdHJpbmdJ
bXBsKCksIFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci19
Ci0KLXN0YXRpYyBib29sIHRva2VuRXhpdHNNYXRoKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRv
a2VuKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNvcGllZCBmcm9tIEhUTUxFbGVtZW50U3Rh
Y2s6OmlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVh
ZFNhZmVNYXRjaC4KLSAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2VuLmRh
dGEoKTsKLSAgICByZXR1cm4gdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjpt
aVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjpt
b1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjpt
blRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjpt
c1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjpt
dGV4dFRhZyk7Ci19Ci0KIHN0YXRpYyBjb25zdCBzaXplX3QgcGVuZGluZ1Rva2VuTGltaXQgPSAx
MDAwOwogCiBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJzZXIoUGFzc1Jl
ZlB0cjxXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPiA+IHJlZmVyZW5jZSwgUGFz
c093blB0cjxDb25maWd1cmF0aW9uPiBjb25maWcpCiAgICAgOiBtX3dlYWtGYWN0b3J5KHJlZmVy
ZW5jZSwgdGhpcykKKyAgICAsIG1fdHJlZUJ1aWxkZXJTaW11bGF0b3IoY29uZmlnLT5vcHRpb25z
KQogICAgICwgbV90b2tlbihhZG9wdFB0cihuZXcgSFRNTFRva2VuKSkKICAgICAsIG1fdG9rZW5p
emVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShjb25maWctPm9wdGlvbnMpKQogICAgICwgbV9vcHRp
b25zKGNvbmZpZy0+b3B0aW9ucykKQEAgLTE1MCw3ICs3NCw2IEBAIEJhY2tncm91bmRIVE1MUGFy
c2VyOjpCYWNrZ3JvdW5kSFRNTFBhcnMKICAgICAsIG1feHNzQXVkaXRvcihjb25maWctPnhzc0F1
ZGl0b3IucmVsZWFzZSgpKQogICAgICwgbV9wcmVsb2FkU2Nhbm5lcihjb25maWctPnByZWxvYWRT
Y2FubmVyLnJlbGVhc2UoKSkKIHsKLSAgICBtX25hbWVzcGFjZVN0YWNrLmFwcGVuZChIVE1MKTsK
IH0KIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaW5w
dXQpCkBAIC0yMDMsNTcgKzEyNiw2IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtF
bmRPZkZpbGUKICAgICBtX2lucHV0LmNsb3NlKCk7CiB9CiAKLWJvb2wgQmFja2dyb3VuZEhUTUxQ
YXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4p
Ci17Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7Ci0gICAg
ICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwotICAgICAg
ICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQotICAgICAg
ICAgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQoU1ZHKTsKLSAgICAgICAgaWYgKHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCi0gICAgICAgICAgICBtX25h
bWVzcGFjZVN0YWNrLmFwcGVuZChNYXRoTUwpOwotICAgICAgICBpZiAoaW5Gb3JlaWduQ29udGVu
dCgpICYmIHRva2VuRXhpdHNGb3JlaWduQ29udGVudCh0b2tlbikpCi0gICAgICAgICAgICBtX25h
bWVzcGFjZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgaWYgKChtX25hbWVzcGFjZVN0YWNr
Lmxhc3QoKSA9PSBTVkcgJiYgdG9rZW5FeGl0c1NWRyh0b2tlbikpCi0gICAgICAgICAgICB8fCAo
bV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gTWF0aE1MICYmIHRva2VuRXhpdHNNYXRoKHRva2Vu
KSkpCi0gICAgICAgICAgICBtX25hbWVzcGFjZVN0YWNrLmFwcGVuZChIVE1MKTsKLSAgICAgICAg
aWYgKCFpbkZvcmVpZ25Db250ZW50KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGp1c3QgYSBjb3B5IG9mIFRva2VuaXplcjo6dXBkYXRlU3RhdGVGb3Igd2hpY2ggdXNlcyB0aHJl
YWRTYWZlTWF0Y2hlcy4KLSAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgdGV4dGFyZWFUYWcpIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCB0aXRsZVRhZykpCi0gICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxU
b2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBwbGFpbnRleHRUYWcpKQotICAgICAgICAgICAgICAgIG1f
dG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7Ci0gICAg
ICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0
VGFnKSkKLSAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXpl
cjo6U2NyaXB0RGF0YVN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCBzdHlsZVRhZykKLSAgICAgICAgICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaWZyYW1lVGFnKQotICAgICAgICAgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB4bXBUYWcpCi0gICAgICAgICAgICAg
ICAgfHwgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2VtYmVkVGFnKSAmJiBt
X29wdGlvbnMucGx1Z2luc0VuYWJsZWQpCi0gICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFnKQotICAgICAgICAgICAgICAgIHx8ICh0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbm9zY3JpcHRUYWcpICYmIG1fb3B0aW9u
cy5zY3JpcHRFbmFibGVkKSkKLSAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUo
SFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
ICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKLSAgICAgICAgY29uc3QgSFRN
TElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7Ci0gICAgICAgIGlmICgobV9uYW1l
c3BhY2VTdGFjay5sYXN0KCkgPT0gU1ZHICYmIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdO
YW1lczo6c3ZnVGFnKSkKLSAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmxhc3QoKSA9
PSBNYXRoTUwgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptYXRoVGFn
KSkKLSAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRhaW5zKFNWRykgJiYgbV9u
YW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRzU1ZHKHRva2VuKSkKLSAg
ICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRhaW5zKE1hdGhNTCkgJiYgbV9uYW1l
c3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRzTWF0aCh0b2tlbikpKQotICAg
ICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIGlmICh0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkgewotICAgICAgICAgICAg
aWYgKCFpbkZvcmVpZ25Db250ZW50KCkpCi0gICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNl
dFN0YXRlKEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWxzbyBzZXRGb3JjZU51bGxD
aGFyYWN0ZXJSZXBsYWNlbWVudCB3aGVuIGluIHRleHQgbW9kZS4KLSAgICBtX3Rva2VuaXplci0+
c2V0Rm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQoaW5Gb3JlaWduQ29udGVudCgpKTsKLSAg
ICBtX3Rva2VuaXplci0+c2V0U2hvdWxkQWxsb3dDREFUQShpbkZvcmVpZ25Db250ZW50KCkpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9r
ZW5pemVyKCkKIHsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMjc5LDcgKzE1MSw3IEBAIHZvaWQg
QmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIKIAogICAgICAgICBtX3Rva2VuLT5j
bGVhcigpOwogCi0gICAgICAgIGlmICghc2ltdWxhdGVUcmVlQnVpbGRlcihtX3BlbmRpbmdUb2tl
bnMtPmxhc3QoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkgPj0gcGVuZGluZ1Rva2VuTGlt
aXQpCisgICAgICAgIGlmICghbV90cmVlQnVpbGRlclNpbXVsYXRvci5zaW11bGF0ZShtX3BlbmRp
bmdUb2tlbnMtPmxhc3QoKSwgbV90b2tlbml6ZXIuZ2V0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+
c2l6ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KQogICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFp
blRocmVhZCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCShyZXZpc2lvbiAxNDUzOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCisjaW5jbHVkZSAi
SFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvckRlbGVnYXRl
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CkBAIC00Myw3ICs0NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBjb25z
dCB2b2lkKiBQYXJzZXJJZGVudGlmaWVyOwogY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOwogY2xh
c3MgWFNTQXVkaXRvcjsKIApAQCAtODEsMjUgKzgxLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGZv
cmNlUGxhaW50ZXh0Rm9yVGV4dERvY3VtZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgZW51bSBOYW1l
c3BhY2UgewotICAgICAgICBIVE1MLAotICAgICAgICBTVkcsCi0gICAgICAgIE1hdGhNTAotICAg
IH07Ci0KICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNlcihQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8
QmFja2dyb3VuZEhUTUxQYXJzZXI+ID4sIFBhc3NPd25QdHI8Q29uZmlndXJhdGlvbj4pOwogCiAg
ICAgdm9pZCBtYXJrRW5kT2ZGaWxlKCk7CiAgICAgdm9pZCBwdW1wVG9rZW5pemVyKCk7Ci0gICAg
Ym9vbCBzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mKTsKLQogICAg
IHZvaWQgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwotICAgIGJvb2wgaW5Gb3JlaWduQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpICE9IEhUTUw7IH0KIAot
ICAgIFZlY3RvcjxOYW1lc3BhY2UsIDE+IG1fbmFtZXNwYWNlU3RhY2s7CiAgICAgV2Vha1B0ckZh
Y3Rvcnk8QmFja2dyb3VuZEhUTUxQYXJzZXI+IG1fd2Vha0ZhY3Rvcnk7CiAgICAgQmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbSBtX2lucHV0OwogICAgIEhUTUxTb3VyY2VUcmFja2VyIG1fc291cmNl
VHJhY2tlcjsKKyAgICBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IgbV90cmVlQnVpbGRlclNpbXVs
YXRvcjsKICAgICBPd25QdHI8SFRNTFRva2VuPiBtX3Rva2VuOwogICAgIE93blB0cjxIVE1MVG9r
ZW5pemVyPiBtX3Rva2VuaXplcjsKICAgICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlclNpbXVsYXRvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIp
CisKKyNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuaCIKKworI2luY2x1ZGUgIkhU
TUxEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhU
TUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCisjaW5jbHVkZSAi
TWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3N0YXRpYyBib29sIHRva2VuRXhp
dHNGb3JlaWduQ29udGVudChjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKK3sKKyAgICAv
LyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bkluRm9yZWlnbkNvbnRlbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaC4KKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsK
KyAgICByZXR1cm4gdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJUYWcpCisgICAg
ICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiaWdUYWcpCisgICAgICAg
IHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBibG9ja3F1b3RlVGFnKQorICAg
ICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYm9keVRhZykKKyAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJyVGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgY2VudGVyVGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgY29kZVRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGRkVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGl2VGFnKQorICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGxUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkdFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGVtVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgZW1iZWRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBoMVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIGgyVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgaDNUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBoNFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGg1
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDZUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoZWFkVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaHJUYWcpCisgICAg
ICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBpVGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW1nVGFnKQorICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbGlUYWcpCisgICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBsaXN0aW5nVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbWVudVRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG1ldGFUYWcpCisgICAgICAgIHx8IHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2JyVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgb2xUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCBwVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgcHJlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgcnVieVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIHNUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCBzbWFsbFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIHNwYW5UYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBzdHJvbmdUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBzdHJpa2VUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBzdWJUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBz
dXBUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0YWJs
ZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHR0VGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdVRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVsVGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdmFyVGFnKQorICAgICAgICB8
fCAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGZvbnRUYWcpICYmICh0b2tlbi5n
ZXRBdHRyaWJ1dGVJdGVtKGNvbG9yQXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRlSXRlbShmYWNl
QXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRlSXRlbShzaXplQXR0cikpKTsKK30KKworc3RhdGlj
IGJvb2wgdG9rZW5FeGl0c1NWRyhjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKK3sKKyAg
ICAvLyBGSVhNRTogSXQncyB2ZXJ5IGZyYWdpbGUgdGhhdCB3ZSBzcGVjaWFsIGNhc2UgZm9yZWln
bk9iamVjdCBoZXJlIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUuCisgICAgLy8gRklYTUU6IFVzaW5n
IENhc2VGb2xkaW5nSGFzaDo6ZXF1YWwgaW5zdGVhZCBvZiBlcXVhbElnbm9yaW5nQ2FzZSwgYXMg
ZXF1YWxJZ25vcmluZ0Nhc2UKKyAgICAvLyB3YW50cyBub24tY29uc3QgU3RyaW5nSW1wbCogKGV2
ZW4gdGhvdWdoIGl0IG5ldmVyIG1vZGlmaWVzIHRoZW0pLgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE4OTIgaXMgZm9yIGZpeGluZyBlcXVhbElnbm9y
aW5nQ2FzZS4KKyAgICByZXR1cm4gQ2FzZUZvbGRpbmdIYXNoOjplcXVhbCh0b2tlbi5kYXRhKCku
YXNTdHJpbmdJbXBsKCksIFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSk7Cit9CisKK3N0YXRpYyBib29sIHRva2VuRXhpdHNNYXRoKGNvbnN0IENvbXBhY3RIVE1M
VG9rZW4mIHRva2VuKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNvcGllZCBmcm9tIEhUTUxF
bGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQgYW5kIGNoYW5nZWQgdG8g
dXNlIHRocmVhZFNhZmVNYXRjaC4KKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9
IHRva2VuLmRhdGEoKTsKKyAgICByZXR1cm4gdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptaVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptb1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptblRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptc1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptdGV4dFRhZyk7Cit9CisKK0hUTUxUcmVlQnVpbGRlclNpbXVsYXRvcjo6SFRNTFRy
ZWVCdWlsZGVyU2ltdWxhdG9yKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zKQorICAg
IDogbV9vcHRpb25zKG9wdGlvbnMpCit7CisgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQoSFRN
TCk7Cit9CisKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzaW11bGF0ZShjb25zdCBD
b21wYWN0SFRNTFRva2VuJiB0b2tlbiwgSFRNTFRva2VuaXplciogdG9rZW5pemVyKQoreworICAg
IGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykgeworICAgICAgICBjb25z
dCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgaWYgKHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSkKKyAgICAgICAgICAgIG1f
bmFtZXNwYWNlU3RhY2suYXBwZW5kKFNWRyk7CisgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQorICAgICAgICAgICAgbV9uYW1lc3BhY2VT
dGFjay5hcHBlbmQoTWF0aE1MKTsKKyAgICAgICAgaWYgKGluRm9yZWlnbkNvbnRlbnQoKSAmJiB0
b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQodG9rZW4pKQorICAgICAgICAgICAgbV9uYW1lc3BhY2VT
dGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmICgobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkg
PT0gU1ZHICYmIHRva2VuRXhpdHNTVkcodG9rZW4pKQorICAgICAgICAgICAgfHwgKG1fbmFtZXNw
YWNlU3RhY2subGFzdCgpID09IE1hdGhNTCAmJiB0b2tlbkV4aXRzTWF0aCh0b2tlbikpKQorICAg
ICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQoSFRNTCk7CisgICAgICAgIGlmICghaW5G
b3JlaWduQ29udGVudCgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEg
Y29weSBvZiBUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yIHdoaWNoIHVzZXMgdGhyZWFkU2FmZU1h
dGNoZXMuCisgICAgICAgICAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IHRleHRhcmVhVGFnKSB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGl0bGVU
YWcpKQorICAgICAgICAgICAgICAgIHRva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6
UkNEQVRBU3RhdGUpOworICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIHBsYWludGV4dFRhZykpCisgICAgICAgICAgICAgICAgdG9rZW5pemVyLT5z
ZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgICAgICAgICBlbHNl
IGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkKKyAgICAg
ICAgICAgICAgICB0b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFT
dGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgc3R5bGVUYWcpCisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIGlmcmFtZVRhZykKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgeG1wVGFnKQorICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBsdWdp
bnNFbmFibGVkKQorICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBub2ZyYW1lc1RhZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxl
ZCkpCisgICAgICAgICAgICAgICAgdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpS
QVdURVhUU3RhdGUpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OkVuZFRhZykgeworICAgICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFn
TmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgaWYgKChtX25hbWVzcGFjZVN0YWNrLmxhc3Qo
KSA9PSBTVkcgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQor
ICAgICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IE1hdGhNTCAmJiB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQorICAgICAgICAgICAg
fHwgKG1fbmFtZXNwYWNlU3RhY2suY29udGFpbnMoU1ZHKSAmJiBtX25hbWVzcGFjZVN0YWNrLmxh
c3QoKSA9PSBIVE1MICYmIHRva2VuRXhpdHNTVkcodG9rZW4pKQorICAgICAgICAgICAgfHwgKG1f
bmFtZXNwYWNlU3RhY2suY29udGFpbnMoTWF0aE1MKSAmJiBtX25hbWVzcGFjZVN0YWNrLmxhc3Qo
KSA9PSBIVE1MICYmIHRva2VuRXhpdHNNYXRoKHRva2VuKSkpCisgICAgICAgICAgICBtX25hbWVz
cGFjZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKSB7CisgICAgICAgICAgICBpZiAoIWluRm9yZWlnbkNv
bnRlbnQoKSkKKyAgICAgICAgICAgICAgICB0b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6
ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBGSVhNRTogQWxzbyBzZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVu
dCB3aGVuIGluIHRleHQgbW9kZS4KKyAgICB0b2tlbml6ZXItPnNldEZvcmNlTnVsbENoYXJhY3Rl
clJlcGxhY2VtZW50KGluRm9yZWlnbkNvbnRlbnQoKSk7CisgICAgdG9rZW5pemVyLT5zZXRTaG91
bGRBbGxvd0NEQVRBKGluRm9yZWlnbkNvbnRlbnQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30KKworI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlclNpbXVsYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlclNpbXVsYXRv
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyU2ltdWxhdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1MVHJl
ZUJ1aWxkZXJTaW11bGF0b3JfaAorI2RlZmluZSBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3JfaAor
CisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisjaW5jbHVkZSAiSFRNTFBhcnNl
ck9wdGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ29tcGFjdEhUTUxUb2tlbjsKK2NsYXNzIEhUTUxUb2tlbml6ZXI7CisKK2Ns
YXNzIEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yKGNvbnN0
IEhUTUxQYXJzZXJPcHRpb25zJik7CisgICAgYm9vbCBzaW11bGF0ZShjb25zdCBDb21wYWN0SFRN
TFRva2VuJiwgSFRNTFRva2VuaXplciopOworCitwcml2YXRlOgorICAgIGVudW0gTmFtZXNwYWNl
IHsKKyAgICAgICAgSFRNTCwKKyAgICAgICAgU1ZHLAorICAgICAgICBNYXRoTUwKKyAgICB9Owor
CisgICAgYm9vbCBpbkZvcmVpZ25Db250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lc3BhY2VT
dGFjay5sYXN0KCkgIT0gSFRNTDsgfQorCisgICAgSFRNTFBhcnNlck9wdGlvbnMgbV9vcHRpb25z
OworICAgIFZlY3RvcjxOYW1lc3BhY2UsIDE+IG1fbmFtZXNwYWNlU3RhY2s7Cit9OworCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>