<?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>41166</bug_id>
          
          <creation_ts>2010-06-24 10:20:03 -0700</creation_ts>
          <short_desc>Set an initial URL in Document&apos;s constructor</short_desc>
          <delta_ts>2010-06-25 10:55:01 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>41179</dependson>
          <blocked>41165</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242571</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-06-24 10:20:03 -0700</bug_when>
    <thetext>There is one case where Document::url() and FrameLoader::url() are not the same.  During the initialization of a new document, the Document&apos;s url has not yet been set and we use FrameLoader&apos;s url in Document::initSecurityContext().  By providing a KURL in Document&apos;s constructor, we can remove this unnecessary difference and obsolete FrameLoader::url().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242580</commentid>
    <comment_count>1</comment_count>
      <attachid>59673</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-06-24 10:37:53 -0700</bug_when>
    <thetext>Created attachment 59673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242588</commentid>
    <comment_count>2</comment_count>
      <attachid>59673</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-24 10:53:33 -0700</bug_when>
    <thetext>Comment on attachment 59673
Patch

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242657</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-24 13:57:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61783 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242732</commentid>
    <comment_count>4</comment_count>
      <attachid>59709</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-06-24 16:59:08 -0700</bug_when>
    <thetext>Created attachment 59709
patch2

There are just two differences from the first patch:
1. Call setURL in Document::Document() if either a non-null Frame or a non-empty KURL was passed in.  This ensures we handle XMLHttpRequests without a Frame correctly, as well as Documents with a Frame that should be defaulted to &quot;about:blank&quot; instead of &quot;&quot;.
2. Pass a non-empty KURL to Document::create() in XMLHttpRequest.cpp and remove the following Document::setURL() call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242754</commentid>
    <comment_count>5</comment_count>
      <attachid>59709</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-24 17:24:39 -0700</bug_when>
    <thetext>Comment on attachment 59709
patch2

Ok.  This makes more sense than the earlier diff.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242755</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-24 17:26:03 -0700</bug_when>
    <thetext>Presumably we have a test for the URL of an XMLHttpRequest document?  I&apos;m not sure how you could get an empty URL in there given that it would be completed w.r.t. a base URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242806</commentid>
    <comment_count>7</comment_count>
      <attachid>59673</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 21:04:39 -0700</bug_when>
    <thetext>Comment on attachment 59673
Patch

Cleared Adam Barth&apos;s review+ from obsolete attachment 59673 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243077</commentid>
    <comment_count>8</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-06-25 10:55:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61868</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59673</attachid>
            <date>2010-06-24 10:37:53 -0700</date>
            <delta_ts>2010-06-24 21:04:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>28929</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gNjE3MTcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODUsMTMgKzE4NSwxMyBAQAogICAgIAogY2xhc3MgRG9jdW1lbnQg
OiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZy
YW1lKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERv
Y3VtZW50KGZyYW1lLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEb2N1bWVudChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBL
VVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50KGZy
YW1lLCB0cnVlLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50
KGZyYW1lLCB1cmwsIHRydWUsIGZhbHNlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkRvY3VtZW50
KCk7CiAKQEAgLTk5MSw3ICs5OTEsNyBAQAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGlkQXR0
cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faWRBdHRyaWJ1dGVOYW1lOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBEb2N1bWVudChGcmFtZSosIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpOwor
ICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hU
TUwpOwogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0cmlu
ZygpOyB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAkocmV2aXNpb24gNjE3MTcpCisr
KyBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBACiBjbGFzcyBEb2N1bWVudFR5cGU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxE
b2N1bWVudDsKK2NsYXNzIEtVUkw7CiBjbGFzcyBTdHJpbmc7CiAKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CkBAIC01Niw3ICs1Nyw3IEBACiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERv
Y3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKICAgICAv
LyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIEZyYW1lKiwg
Ym9vbCBpblZpZXdTb3VyY2VNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4g
Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBjb25zdCBLVVJM
JiwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKTsKIAogICAgIHN0YXRpYyBib29sIGlzWE1MTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7CiAgICAgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2MTcx
NykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDcg
KzM1NCw3IEBACiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiB9OwogCi1Eb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQorRG9jdW1lbnQ6
OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJv
b2wgaXNIVE1MKQogICAgIDogQ29udGFpbmVyTm9kZSgwKQogICAgICwgbV9kb210cmVlX3ZlcnNp
b24oMCkKICAgICAsIG1fc3R5bGVTaGVldHMoU3R5bGVTaGVldExpc3Q6OmNyZWF0ZSh0aGlzKSkK
QEAgLTQxMyw2ICs0MTMsOSBAQAogCiAgICAgbV9mcmFtZSA9IGZyYW1lOwogCisgICAgaWYgKCF1
cmwuaXNFbXB0eSgpKQorICAgICAgICBzZXRVUkwodXJsKTsKKwogICAgIG1fYXhPYmplY3RDYWNo
ZSA9IDA7CiAgICAgCiAgICAgbV9kb2NMb2FkZXIgPSBuZXcgRG9jTG9hZGVyKHRoaXMpOwpAQCAt
NDYxMiw5ICs0NjE2LDggQEAKIAogICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgY3JlYXRlIHRo
ZSBzZWN1cml0eSBjb250ZXh0IGZyb20gdGhlIGN1cnJlbnRseQogICAgIC8vIGxvYWRpbmcgVVJM
LgotICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKLSAgICBt
X2Nvb2tpZVVSTCA9IHVybDsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0
eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCwgbV9mcmFtZS0+bG9hZGVyKCktPnNh
bmRib3hGbGFncygpKSk7CisgICAgbV9jb29raWVVUkwgPSBtX3VybDsKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1f
dXJsLCBtX2ZyYW1lLT5sb2FkZXIoKS0+c2FuZGJveEZsYWdzKCkpKTsKIAogICAgIGlmIChTZWN1
cml0eU9yaWdpbjo6YWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewogICAgICAg
ICAvLyBJZiB0aGlzIGRvY3VtZW50IHdhcyBsb2FkZWQgd2l0aCBzdWJzdGl0dXRlRGF0YSwgdGhl
biB0aGUgZG9jdW1lbnQgY2FuCkluZGV4OiBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCShyZXZp
c2lvbiA2MTcxNykKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI3LDE4ICsyMjcsMTggQEAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYzsK
ICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gU1ZHTmFtZXM6OnN2Z05h
bWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwKTsKKyAgICAg
ICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOwogICAgIGVsc2UKICNlbmRp
ZgogI2lmIEVOQUJMRShXTUwpCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBXTUxOYW1lczo6d21s
TmFtZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBXTUxEb2N1bWVudDo6Y3JlYXRlKDApOworICAg
ICAgICBkb2MgPSBXTUxEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7CiAgICAgZWxzZQogI2Vu
ZGlmCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJ
KQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCk7CisgICAgICAgIGRvYyA9
IERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBLVVJMKCkpOwogICAgIGVsc2UKLSAgICAgICAgZG9j
ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwKTsKKyAgICAgICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZSgw
LCBLVVJMKCkpOwogCiAgICAgUmVmUHRyPE5vZGU+IGRvY3VtZW50RWxlbWVudDsKICAgICBpZiAo
IXF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7CkBAIC0yOTUsMzcgKzI5NSwzNyBAQAogCiBQYXNz
UmVmUHRyPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVu
dChjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIFJlZlB0cjxIVE1MRG9jdW1lbnQ+IGQgPSBI
VE1MRG9jdW1lbnQ6OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBkID0gSFRN
TERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKICAgICBkLT5vcGVuKCk7CiAgICAgZC0+d3Jp
dGUoIjwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Iik7CiAgICAgZC0+
c2V0VGl0bGUodGl0bGUpOwogICAgIHJldHVybiBkLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmlu
ZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBib29sIGluVmlld1NvdXJjZU1vZGUpCitQYXNzUmVmUHRy
PERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiB0eXBlLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpblZpZXdTb3VyY2VN
b2RlKQogewogICAgIGlmIChpblZpZXdTb3VyY2VNb2RlKQotICAgICAgICByZXR1cm4gSFRNTFZp
ZXdTb3VyY2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsLCB0eXBlKTsKIAogICAgIC8v
IFBsdWdpbnMgY2Fubm90IHRha2UgSFRNTCBhbmQgWEhUTUwgZnJvbSB1cywgYW5kIHdlIGRvbid0
IGV2ZW4gbmVlZCB0byBpbml0aWFsaXplIHRoZSBwbHVnaW4gZGF0YWJhc2UgZm9yIHRob3NlLgog
ICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQotICAgICAgICByZXR1cm4gSFRNTERvY3VtZW50
OjpjcmVhdGUoZnJhbWUpOworICAgICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJh
bWUsIHVybCk7CiAgICAgaWYgKHR5cGUgPT0gImFwcGxpY2F0aW9uL3hodG1sK3htbCIKICNpZiBF
TkFCTEUoWEhUTUxNUCkKICAgICAgICAgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24vdm5kLndhcC54
aHRtbCt4bWwiCiAjZW5kaWYKICAgICAgICAgKQotICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNy
ZWF0ZVhIVE1MKGZyYW1lKTsKKyAgICAgICAgcmV0dXJuIERvY3VtZW50OjpjcmVhdGVYSFRNTChm
cmFtZSwgdXJsKTsKIAogI2lmIEVOQUJMRShXTUwpCiAgICAgaWYgKHR5cGUgPT0gInRleHQvdm5k
LndhcC53bWwiIHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpCi0gICAgICAg
IHJldHVybiBXTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lKTsKKyAgICAgICAgcmV0dXJuIFdNTERv
Y3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVFBESVIp
CiAgICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBGVFAgZnJvbSB1cyBlaXRoZXIKICAgICBpZiAo
dHlwZSA9PSAiYXBwbGljYXRpb24veC1mdHAtZGlyZWN0b3J5IikKLSAgICAgICAgcmV0dXJuIEZU
UERpcmVjdG9yeURvY3VtZW50OjpjcmVhdGUoZnJhbWUpOworICAgICAgICByZXR1cm4gRlRQRGly
ZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKICNlbmRpZgogCiAgICAgUGx1Z2lu
RGF0YSogcGx1Z2luRGF0YSA9IDA7CkBAIC0zMzUsMjMgKzMzNSwyMyBAQAogICAgIC8vIFBERiBp
cyBvbmUgaW1hZ2UgdHlwZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92ZXJyaWRlIGJ1aWx0LWlu
IHN1cHBvcnQuCiAgICAgLy8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1lIHRvIHRha2Ugb3ZlciBh
bGwgaW1hZ2UgdHlwZXMsIG9idmlvdXNseS4KICAgICBpZiAoKHR5cGUgPT0gImFwcGxpY2F0aW9u
L3BkZiIgfHwgdHlwZSA9PSAidGV4dC9wZGYiKSAmJiBwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEt
PnN1cHBvcnRzTWltZVR5cGUodHlwZSkpCi0gICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6
Y3JlYXRlKGZyYW1lKTsKKyAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoZnJh
bWUsIHVybCk7CiAgICAgaWYgKEltYWdlOjpzdXBwb3J0c1R5cGUodHlwZSkpCi0gICAgICAgIHJl
dHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoZnJhbWUpOworICAgICAgICByZXR1cm4gSW1hZ2VE
b2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAv
LyBDaGVjayB0byBzZWUgaWYgdGhlIHR5cGUgY2FuIGJlIHBsYXllZCBieSBvdXIgTWVkaWFQbGF5
ZXIsIGlmIHNvIGNyZWF0ZSBhIE1lZGlhRG9jdW1lbnQKICAgICAgaWYgKE1lZGlhUGxheWVyOjpz
dXBwb3J0c1R5cGUoQ29udGVudFR5cGUodHlwZSkpKQotICAgICAgICAgcmV0dXJuIE1lZGlhRG9j
dW1lbnQ6OmNyZWF0ZShmcmFtZSk7CisgICAgICAgICByZXR1cm4gTWVkaWFEb2N1bWVudDo6Y3Jl
YXRlKGZyYW1lLCB1cmwpOwogI2VuZGlmCiAKICAgICAvLyBFdmVyeXRoaW5nIGVsc2UgZXhjZXB0
IHRleHQvcGxhaW4gY2FuIGJlIG92ZXJyaWRkZW4gYnkgcGx1Z2lucy4gSW4gcGFydGljdWxhciwg
QWRvYmUgU1ZHIFZpZXdlciBzaG91bGQgYmUgdXNlZCBmb3IgU1ZHLCBpZiBpbnN0YWxsZWQuCiAg
ICAgLy8gRGlzYWxsb3dpbmcgcGx1Zy1pbnMgdG8gdXNlIHRleHQvcGxhaW4gcHJldmVudHMgcGx1
Zy1pbnMgZnJvbSBoaWphY2tpbmcgYSBmdW5kYW1lbnRhbCB0eXBlIHRoYXQgdGhlIGJyb3dzZXIg
aXMgZXhwZWN0ZWQgdG8gaGFuZGxlLAogICAgIC8vIGFuZCBhbHNvIHNlcnZlcyBhcyBhbiBvcHRp
bWl6YXRpb24gdG8gcHJldmVudCBsb2FkaW5nIHRoZSBwbHVnLWluIGRhdGFiYXNlIGluIHRoZSBj
b21tb24gY2FzZS4KICAgICBpZiAodHlwZSAhPSAidGV4dC9wbGFpbiIgJiYgcGx1Z2luRGF0YSAm
JiBwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKHR5cGUpKSAKLSAgICAgICAgcmV0dXJuIFBs
dWdpbkRvY3VtZW50OjpjcmVhdGUoZnJhbWUpOworICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1l
bnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKICAgICBpZiAoaXNUZXh0TUlNRVR5cGUodHlwZSkpCi0g
ICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSk7CisgICAgICAgIHJldHVy
biBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKIAogI2lmIEVOQUJMRShTVkcpCiAg
ICAgaWYgKHR5cGUgPT0gImltYWdlL3N2Zyt4bWwiKSB7CkBAIC0zNTksMTMgKzM1OSwxMyBAQAog
ICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpIDog
MDsKICAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiBTVkdE
b2N1bWVudDo6Y3JlYXRlKGZyYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6
Y3JlYXRlKGZyYW1lLCB1cmwpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChpc1hNTE1JTUVUeXBl
KHR5cGUpKQotICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSk7CisgICAgICAg
IHJldHVybiBEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogCi0gICAgcmV0dXJuIEhUTUxE
b2N1bWVudDo6Y3JlYXRlKGZyYW1lKTsKKyAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIHVybCk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTc2OSkKKysrIFdlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTAtMDYtMjQgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUYWtlIGEgS1VSTCBwYXJhbWV0ZXIgaW4gRG9jdW1lbnQncyBj
b25zdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyB3aWxsIHJlbW92ZSB0aGUgb25lIGNhc2Ugd2hlcmUg
RG9jdW1lbnQ6OnVybCgpIAorICAgICAgICBhbmQgRnJhbWVMb2FkZXI6OnVybCgpIGFyZSBub3Qg
ZXF1YWwsIGFsbG93aW5nIHVzIHRvCisgICAgICAgIHJlbW92ZSBGcmFtZUxvYWRlcjo6dXJsKCku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTY2
CisKKyAgICAgICAgUmVmYWN0b3Igb25seSwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVEb2N1bWVudCk6IFRha2UgYSBLVVJMIGFuZCBwYXNzIGl0IHRocm91Z2ggdG8g
RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRN
TERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50
KTogQ2FsbCBzZXRVUkwoKSBmb3Igbm9uLWVtcHR5IEtVUkwgaW5wdXQgcGFyYW1ldGVycy4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KTogbV91cmwgaXMg
bm93IGluaXRpYWxpemVkLCBzbyB1c2UgaXQgaW5zdGVhZAorICAgICAgICAgICAgb2YgbV9mcmFt
ZS0+bG9hZGVyKCktPnVybCgpIGZvciBpbml0aWFsaXppbmcgdGhlIFNlY3VyaXR5T3JpZ2luLgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlWEhUTUwpOgorICAgICAg
ICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5o
OiBBZGQgS1VSTCBwYXJhbWV0ZXIgdG8gY3JlYXRlKCkgYW5kIGNvbnN0cnVjdG9yLgorICAgICAg
ICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
Vmlld1NvdXJjZURvY3VtZW50Lmg6IEFkZCBLVVJMIHBhcmFtZXRlciB0byBjcmVhdGUoKSBhbmQg
Y29uc3RydWN0b3IuCisgICAgICAgICogbG9hZGVyL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlU1ZHRm9udERhdGEpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6
Y3JlYXRlRG9jdW1lbnQpOiBUYWtlIGEgS1VSTCBhbmQgcGFzcyBpdCB0aHJvdWdoIHRvIERvY3Vt
ZW50LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmJlZ2luKTogUGFzcyBleGlz
dGluZyB1cmwgcGFyYW1ldGVyIHRvIGNvbnN0cnVjdG9ycywgYW5kIHJlbW92ZQorICAgICAgICAg
ICAgcmVkdW5kYW50IERvY3VtZW50OjpzZXRVUkwoKSBjYWxsLgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudFdyaXRlci5oOgorICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHA6CisgICAgICAgICogbG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50Lmg6IEFkZCBLVVJMIHBh
cmFtZXRlciB0byBjcmVhdGUoKSBhbmQgY29uc3RydWN0b3IuCisgICAgICAgICogbG9hZGVyL0lt
YWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3VtZW50Lmg6IEFkZCBL
VVJMIHBhcmFtZXRlciB0byBjcmVhdGUoKSBhbmQgY29uc3RydWN0b3IuCisgICAgICAgICogbG9h
ZGVyL01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9NZWRpYURvY3VtZW50Lmg6
IEFkZCBLVVJMIHBhcmFtZXRlciB0byBjcmVhdGUoKSBhbmQgY29uc3RydWN0b3IuCisgICAgICAg
ICogbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaDogQWRkIEtVUkwgcGFyYW1ldGVyIHRvIGNy
ZWF0ZSgpIGFuZCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBsb2FkZXIvUGx1Z2luRG9jdW1lbnQu
Y3BwOgorICAgICAgICAqIGxvYWRlci9QbHVnaW5Eb2N1bWVudC5oOiBBZGQgS1VSTCBwYXJhbWV0
ZXIgdG8gY3JlYXRlKCkgYW5kIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGxvYWRlci9TaW5rRG9j
dW1lbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuaDogQWRkIEtVUkwgcGFy
YW1ldGVyIHRvIGNyZWF0ZSgpIGFuZCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBsb2FkZXIvVGV4
dERvY3VtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvVGV4dERvY3VtZW50Lmg6IEFkZCBLVVJM
IHBhcmFtZXRlciB0byBjcmVhdGUoKSBhbmQgY29uc3RydWN0b3IuCisgICAgICAgICogc3ZnL1NW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuaDogQWRkIEtVUkwgcGFy
YW1ldGVyIHRvIGNyZWF0ZSgpIGFuZCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiB4bWwvRE9NUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKToK
KyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21T
b3VyY2UpOgorCiAyMDEwLTA2LTIzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCShy
ZXZpc2lvbiA2MTcxNykKKysrIFdlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDkgKzMzLDkgQEAKIAogICAgIGNsYXNzIFNWR0RvY3VtZW50IDogcHVibGljIERv
Y3VtZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0RvY3Vt
ZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdE
b2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0RvY3VtZW50KGZyYW1lKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgflNWR0RvY3VtZW50KCk7CkBAIC01MSw3ICs1
MSw3IEBACiAgICAgICAgIHZvaWQgdXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvcykgY29u
c3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTVkdEb2N1bWVudChGcmFtZSopOworICAgICAg
ICBTVkdEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gNjE3MTcpCisrKyBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TVkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lKQotICAgIDogRG9jdW1lbnQo
ZnJhbWUsIGZhbHNlLCBmYWxzZSkKK1NWR0RvY3VtZW50OjpTVkdEb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCBm
YWxzZSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCShy
ZXZpc2lvbiA2MTcxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAKIAogY2xhc3MgSFRNTFZpZXdTb3VyY2VE
b2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEhUTUxWaWV3U291cmNlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFZpZXdTb3VyY2VE
b2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmll
d1NvdXJjZURvY3VtZW50KGZyYW1lLCBtaW1lVHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxWaWV3U291cmNlRG9jdW1lbnQoZnJhbWUsIHVybCwgbWltZVR5cGUpKTsKICAg
ICB9CiAKICAgICB2b2lkIGFkZFZpZXdTb3VyY2VUb2tlbihUb2tlbiopOyAvLyBVc2VkIGJ5IHRo
ZSBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgdm9pZCBh
ZGRWaWV3U291cmNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tlbiopOwogCiBwcml2YXRlOgotICAg
IEhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
KyAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gUmV0dXJucyBMZWdhY3lIVE1MRG9jdW1lbnRQYXJz
ZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4KICAgICB2aXJ0dWFsIERv
Y3VtZW50UGFyc2VyKiBjcmVhdGVQYXJzZXIoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZXdT
b3VyY2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDYxNzE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OkhU
TUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lKQorSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6SFRN
TFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogICAgICwg
bV90eXBlKG1pbWVUeXBlKQogewogICAgIHNldFVzZXNCZWZvcmVBZnRlclJ1bGVzKHRydWUpOwpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuaAkocmV2aXNpb24gNjE3MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAKIAogY2xhc3MgSFRN
TERvY3VtZW50IDogcHVibGljIERvY3VtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlKEZy
YW1lKiBmcmFtZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZShG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SFRNTERv
Y3VtZW50KCk7CiAKQEAgLTgwLDcgKzgwLDcgQEAKICAgICBib29sIGhhc0V4dHJhTmFtZWRJdGVt
KEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTERvY3VtZW50
KEZyYW1lKik7CisgICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjaGlsZEFsbG93ZWQoTm9kZSopOwpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAJKHJldmlzaW9uIDYxNzE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDggKzgxLDggQEAKIAogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lKQot
ICAgIDogRG9jdW1lbnQoZnJhbWUsIGZhbHNlLCB0cnVlKQorSFRNTERvY3VtZW50OjpIVE1MRG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgOiBEb2N1bWVudChmcmFt
ZSwgdXJsLCBmYWxzZSwgdHJ1ZSkKIHsKICAgICBjbGVhclhNTFZlcnNpb24oKTsKICAgICBzZXRQ
YXJzZU1vZGUoQ29tcGF0KTsKSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDYx
NzE3KQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDAsNyArMjQwLDcgQEAKICAgICAgICAgICAgIC8vIFRoZSBXM0Mgc3BlYyByZXF1aXJlcyB0
aGlzLgogICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX3Jlc3BvbnNlWE1MID0gRG9jdW1lbnQ6OmNyZWF0ZSgwKTsKKyAgICAgICAg
ICAgIG1fcmVzcG9uc2VYTUwgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7CiAgICAgICAg
ICAgICBtX3Jlc3BvbnNlWE1MLT5vcGVuKCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5z
ZXRVUkwobV91cmwpOwogICAgICAgICAgICAgLy8gRklYTUU6IFNldCBMYXN0LU1vZGlmaWVkLgpJ
bmRleDogV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDYxNzE3KQorKysgV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEwICs2OCwxMCBAQAogCiAg
ICAgUmVmUHRyPERvY3VtZW50PiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0
ZXh0L3BsYWluIikgewotICAgICAgICByZXN1bHQgPSBEb2N1bWVudDo6Y3JlYXRlKGZyYW1lKTsK
KyAgICAgICAgcmVzdWx0ID0gRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc291cmNlSXNEb2N1bWVu
dCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogS1VSTCgpKTsKICAgICAgICAgdHJhbnNmb3JtVGV4
dFN0cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyhkb2N1bWVudFNvdXJjZSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHJlc3VsdCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3Vy
Y2VNSU1FVHlwZSwgZnJhbWUsIGZhbHNlKTsKKyAgICAgICAgcmVzdWx0ID0gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50KHNvdXJjZU1JTUVUeXBlLCBmcmFtZSwgc291cmNlSXNEb2N1
bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogS1VSTCgpLCBmYWxzZSk7CiAKICAgICAvLyBC
ZWZvcmUgcGFyc2luZywgd2UgbmVlZCB0byBzYXZlICYgZGV0YWNoIHRoZSBvbGQgZG9jdW1lbnQg
YW5kIGdldCB0aGUgbmV3IGRvY3VtZW50CiAgICAgLy8gaW4gcGxhY2UuIFdlIGhhdmUgdG8gZG8g
dGhpcyBvbmx5IGlmIHdlJ3JlIHJlbmRlcmluZyB0aGUgcmVzdWx0IGRvY3VtZW50LgpAQCAtODIs
OCArODIsNiBAQAogICAgICAgICBmcmFtZS0+c2V0RG9jdW1lbnQocmVzdWx0KTsKICAgICB9CiAK
LSAgICBpZiAoc291cmNlSXNEb2N1bWVudCkKLSAgICAgICAgcmVzdWx0LT5zZXRVUkwob3duZXJE
b2N1bWVudC0+dXJsKCkpOwogICAgIHJlc3VsdC0+b3BlbigpOwogCiAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoc291
cmNlTUlNRVR5cGUpOwpJbmRleDogV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCShyZXZpc2lvbiA2MTcxNykKKysrIFdlYkNv
cmUveG1sL0RPTVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAg
ICBpZiAoIURPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnRlbnRUeXBlKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERPTUltcGxlbWVu
dGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgZmFsc2UpOworICAgIFJlZlB0
cjxEb2N1bWVudD4gZG9jID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnRl
bnRUeXBlLCAwLCBLVVJMKCksIGZhbHNlKTsKIAogICAgIGRvYy0+b3BlbigpOwogICAgIGRvYy0+
d3JpdGUoc3RyKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDYxNzE3KQorKysgV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsOCArNDM0LDggQEAKICAgICBMZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXI6OmZpbmlzaCgpOwogfQogCi1GVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGly
ZWN0b3J5RG9jdW1lbnQoRnJhbWUqIGZyYW1lKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lKQor
RlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CiAjaWZu
ZGVmIE5ERUJVRwogICAgIExvZ0ZUUC5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxPbjsKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL01lZGlhRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2MTcxNykKKysrIFdlYkNvcmUvbG9hZGVy
L01lZGlhRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsOCArMTM1LDggQEAKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCi1NZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZy
YW1lKiBmcmFtZSkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSkKK01lZGlhRG9jdW1lbnQ6Ok1l
ZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgOiBIVE1MRG9j
dW1lbnQoZnJhbWUsIHVybCkKICAgICAsIG1fcmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyKHRoaXMs
ICZNZWRpYURvY3VtZW50OjpyZXBsYWNlTWVkaWFFbGVtZW50VGltZXJGaXJlZCkKIHsKICAgICBz
ZXRQYXJzZU1vZGUoQ29tcGF0KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiA2MTcxNykKKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTAsOCArMTkwLDggQEAKICAgICAKIC8vIC0tLS0tLS0tCiAKLUltYWdlRG9j
dW1lbnQ6OkltYWdlRG9jdW1lbnQoRnJhbWUqIGZyYW1lKQotICAgIDogSFRNTERvY3VtZW50KGZy
YW1lKQorSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogICAgICwgbV9pbWFnZUVs
ZW1lbnQoMCkKICAgICAsIG1faW1hZ2VTaXplSXNLbm93bihmYWxzZSkKICAgICAsIG1fZGlkU2hy
aW5rSW1hZ2UoZmFsc2UpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAJKHJldmlzaW9uIDYx
NzE3KQorKysgV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg2LDggKzE4Niw4IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1UZXh0RG9jdW1lbnQ6
OlRleHREb2N1bWVudChGcmFtZSogZnJhbWUpCi0gICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUpCitU
ZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkK
KyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogewogfQogCkluZGV4OiBXZWJDb3JlL2xv
YWRlci9DYWNoZWRGb250LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRG
b250LmNwcAkocmV2aXNpb24gNjE3MTcpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw3IEBACiB7CiAgICAgQVNTRVJUKG1faXNT
VkdGb250KTsKICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdEb2N1bWVudCAmJiAhZXJyb3JPY2N1cnJl
ZCgpICYmICFpc0xvYWRpbmcoKSAmJiBtX2RhdGEpIHsKLSAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwKTsKKyAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOwogICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPm9wZW4oKTsKIAogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24v
eG1sIik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgJKHJldmlzaW9uIDYxNzE3KQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyAr
NjcsNyBAQAogICAgIHZvaWQgc2V0RGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyKik7CiAKIHBy
aXZhdGU6Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoKTsKKyAgICBQ
YXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBLVVJMJik7CiAKICAgICBG
cmFtZSogbV9mcmFtZTsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuaAkocmV2aXNpb24gNjE3
MTcpCisrKyBXZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDE2ICszNCwxNiBAQAogCiBjbGFzcyBNZWRpYURvY3VtZW50IDogcHVibGljIEhUTUxEb2N1
bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFEb2N1bWVudD4gY3Jl
YXRlKEZyYW1lKiBmcmFtZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50PiBj
cmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1lZGlhRG9jdW1lbnQoZnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CiAgICAgdmlydHVh
bCB+TWVkaWFEb2N1bWVudCgpOwogCiAgICAgdm9pZCBtZWRpYUVsZW1lbnRTYXdVbnN1cHBvcnRl
ZFRyYWNrcygpOwogCiBwcml2YXRlOgotICAgIE1lZGlhRG9jdW1lbnQoRnJhbWUqKTsKKyAgICBN
ZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBib29sIGlz
TWVkaWFEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gICAgICAgIAogICAgIHZpcnR1
YWwgRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVBhcnNlcigpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
UGx1Z2luRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1
bWVudC5oCShyZXZpc2lvbiA2MTcxNykKKysrIFdlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKIGNsYXNzIFdpZGdldDsKIGNsYXNz
IFBsdWdpbkRvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGx1Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2lu
RG9jdW1lbnQoZnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Eb2N1
bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQogCiAgICAgV2lkZ2V0KiBwbHVnaW5XaWRnZXQoKTsK
QEAgLTQ0LDcgKzQ0LDcgQEAKICAgICB2aXJ0dWFsIGJvb2wgaXNQbHVnaW5Eb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBQbHVnaW5Eb2N1bWVudChGcmFt
ZSopOworICAgIFBsdWdpbkRvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOwogCiAgICAgdmly
dHVhbCBEb2N1bWVudFBhcnNlciogY3JlYXRlUGFyc2VyKCk7CiB9OwpJbmRleDogV2ViQ29yZS9s
b2FkZXIvU2lua0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU2lua0Rv
Y3VtZW50LmgJKHJldmlzaW9uIDYxNzE3KQorKysgV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBAQAogCiBjbGFzcyBTaW5rRG9jdW1l
bnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTaW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNpbmtEb2N1bWVudChmcmFtZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNpbmtEb2N1bWVudChmcmFtZSwgdXJsKSk7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFNpbmtEb2N1bWVudChGcmFtZSopOworICAgIFNpbmtEb2N1
bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKICAgICAKICAgICB2aXJ0dWFsIERvY3VtZW50UGFy
c2VyKiBjcmVhdGVQYXJzZXIoKTsKIH07CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3Bw
CShyZXZpc2lvbiA2MTcxNykKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODAsMTMgKzgwLDEzIEBACiAgICAgYmVnaW4oS1VSTCgpKTsKIH0K
IAotUGFzc1JlZlB0cjxEb2N1bWVudD4gRG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KCkK
K1Bhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25z
dCBLVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNoaW5l
KCktPmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+bG9hZGVy
KCktPmNsaWVudCgpLT5zaG91bGRVc2VQbHVnaW5Eb2N1bWVudChtX21pbWVUeXBlKSkKLSAgICAg
ICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUobV9mcmFtZSk7CisgICAgICAgIHJldHVy
biBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7CiAgICAgaWYgKCFtX2ZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmhhc0hUTUxWaWV3KCkpCi0gICAgICAgIHJldHVybiBQbGFj
ZWhvbGRlckRvY3VtZW50OjpjcmVhdGUobV9mcmFtZSk7Ci0gICAgcmV0dXJuIERPTUltcGxlbWVu
dGF0aW9uOjpjcmVhdGVEb2N1bWVudChtX21pbWVUeXBlLCBtX2ZyYW1lLCBtX2ZyYW1lLT5pblZp
ZXdTb3VyY2VNb2RlKCkpOworICAgICAgICByZXR1cm4gUGxhY2Vob2xkZXJEb2N1bWVudDo6Y3Jl
YXRlKG1fZnJhbWUsIHVybCk7CisgICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVE
b2N1bWVudChtX21pbWVUeXBlLCBtX2ZyYW1lLCB1cmwsIG1fZnJhbWUtPmluVmlld1NvdXJjZU1v
ZGUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCwg
Ym9vbCBkaXNwYXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKQEAgLTk3LDEyICs5NywxMiBA
QAogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGRvY3VtZW50IGJlZm9yZSBjbGVhcmluZyB0aGUgZnJh
bWUsIGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8KICAgICAvLyBpbmhlcml0IGFuIGFsaWFzZWQgc2Vj
dXJpdHkgY29udGV4dC4KLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY3JlYXRlRG9j
dW1lbnQoKTsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQo
dXJsKTsKICAgICAKICAgICAvLyBJZiB0aGUgbmV3IGRvY3VtZW50IGlzIGZvciBhIFBsdWdpbiBi
dXQgd2UncmUgc3VwcG9zZWQgdG8gYmUgc2FuZGJveGVkIGZyb20gUGx1Z2lucywKICAgICAvLyB0
aGVuIHJlcGxhY2UgdGhlIGRvY3VtZW50IHdpdGggb25lIHdob3NlIHBhcnNlciB3aWxsIGlnbm9y
ZSB0aGUgaW5jb21pbmcgZGF0YSAoYnVnIDM5MzIzKQogICAgIGlmIChkb2N1bWVudC0+aXNQbHVn
aW5Eb2N1bWVudCgpICYmIG1fZnJhbWUtPmxvYWRlcigpLT5pc1NhbmRib3hlZChTYW5kYm94UGx1
Z2lucykpCi0gICAgICAgIGRvY3VtZW50ID0gU2lua0RvY3VtZW50OjpjcmVhdGUobV9mcmFtZSk7
CisgICAgICAgIGRvY3VtZW50ID0gU2lua0RvY3VtZW50OjpjcmVhdGUobV9mcmFtZSwgdXJsKTsK
IAogICAgIGJvb2wgcmVzZXRTY3JpcHRpbmcgPSAhKG1fZnJhbWUtPmxvYWRlcigpLT5zdGF0ZU1h
Y2hpbmUoKS0+aXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5pc1NlY3VyZVRyYW5zaXRpb25Ubyh1cmwpKTsK
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xlYXIocmVzZXRTY3JpcHRpbmcsIHJlc2V0U2NyaXB0
aW5nKTsKQEAgLTExMCw3ICsxMTAsNiBAQAogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+dXBk
YXRlUGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c2V0
VVJMKHVybCk7Ci0gICAgZG9jdW1lbnQtPnNldFVSTCh1cmwpOwogICAgIG1fZnJhbWUtPnNldERv
Y3VtZW50KGRvY3VtZW50KTsKIAogICAgIGlmIChtX2RlY29kZXIpCkluZGV4OiBXZWJDb3JlL2xv
YWRlci9QbHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUGx1
Z2luRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2MTcxNykKKysrIFdlYkNvcmUvbG9hZGVyL1BsdWdp
bkRvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDggKzE1NCw4IEBACiAgICAgcmV0
dXJuIGZhbHNlOwogfQogICAgIAotUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZyYW1l
KiBmcmFtZSkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSkKK1BsdWdpbkRvY3VtZW50OjpQbHVn
aW5Eb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1
bWVudChmcmFtZSwgdXJsKQogewogICAgIHNldFBhcnNlTW9kZShDb21wYXQpOwogfQpJbmRleDog
V2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9TaW5rRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2MTcxNykKKysrIFdlYkNvcmUvbG9hZGVy
L1NpbmtEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDggQEAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVNpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFt
ZSkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSkKK1NpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIDogSFRNTERvY3VtZW50KGZyYW1l
LCB1cmwpCiB7CiAgICAgc2V0UGFyc2VNb2RlKENvbXBhdCk7CiB9CkluZGV4OiBXZWJDb3JlL2xv
YWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0ZUUERpcmVjdG9yeURvY3VtZW50LmgJKHJldmlzaW9uIDYxNzE3KQorKysgV2ViQ29yZS9sb2Fk
ZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEz
IEBACiAgICAgCiBjbGFzcyBGVFBEaXJlY3RvcnlEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1l
bnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZUUERpcmVjdG9yeURvY3VtZW50
PiBjcmVhdGUoRnJhbWUqIGZyYW1lKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZUUERpcmVjdG9y
eURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50KGZyYW1lKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnQoZnJhbWUs
IHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFt
ZSopOworICAgIEZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOwogICAg
IHZpcnR1YWwgRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVBhcnNlcigpOwogfTsKICAgICAKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9JbWFnZURvY3VtZW50LmgJKHJldmlzaW9uIDYxNzE3KQorKysgV2ViQ29yZS9sb2FkZXIv
SW1hZ2VEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiAKIGNsYXNz
IEltYWdlRG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEb2N1
bWVudChmcmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRG9jdW1lbnQo
ZnJhbWUsIHVybCkpOwogICAgIH0KIAogICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpOwpA
QCAtNDcsNyArNDcsNyBAQAogICAgIHZvaWQgaW1hZ2VDbGlja2VkKGludCB4LCBpbnQgeSk7CiAK
IHByaXZhdGU6Ci0gICAgSW1hZ2VEb2N1bWVudChGcmFtZSopOworICAgIEltYWdlRG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBLVVJMJik7CiAKICAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVh
dGVQYXJzZXIoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZURvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaAkocmV2
aXNpb24gNjE3MTcpCisrKyBXZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDE1ICszMiwxNSBAQAogCiBjbGFzcyBQbGFjZWhvbGRlckRvY3Vt
ZW50IDogcHVibGljIERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
bGFjZWhvbGRlckRvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsYWNlaG9sZGVyRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhY2Vob2xkZXJE
b2N1bWVudChmcmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYWNlaG9sZGVy
RG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2go
KTsKIAogcHJpdmF0ZToKLSAgICBQbGFjZWhvbGRlckRvY3VtZW50KEZyYW1lKiBmcmFtZSkgOiBE
b2N1bWVudChmcmFtZSwgZmFsc2UsIGZhbHNlKSB7IH0KKyAgICBQbGFjZWhvbGRlckRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKSA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZh
bHNlLCBmYWxzZSkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9U
ZXh0RG9jdW1lbnQuaAkocmV2aXNpb24gNjE3MTcpCisrKyBXZWJDb3JlL2xvYWRlci9UZXh0RG9j
dW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEzIEBACiAKIGNsYXNzIFRleHRE
b2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUZXh0RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dERvY3VtZW50KGZyYW1l
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dERvY3VtZW50KGZyYW1lLCB1cmwp
KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGV4dERvY3VtZW50KEZyYW1lKik7CisgICAgVGV4
dERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOwogICAgIAogICAgIHZpcnR1YWwgRG9jdW1l
bnRQYXJzZXIqIGNyZWF0ZVBhcnNlcigpOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59709</attachid>
            <date>2010-06-24 16:59:08 -0700</date>
            <delta_ts>2010-06-24 17:24:39 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>29059</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gNjE3ODcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODUsMTMgKzE4NSwxMyBAQAogICAgIAogY2xhc3MgRG9jdW1lbnQg
OiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZy
YW1lKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERv
Y3VtZW50KGZyYW1lLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEb2N1bWVudChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBL
VVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50KGZy
YW1lLCB0cnVlLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50
KGZyYW1lLCB1cmwsIHRydWUsIGZhbHNlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkRvY3VtZW50
KCk7CiAKQEAgLTk5MSw3ICs5OTEsNyBAQAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGlkQXR0
cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faWRBdHRyaWJ1dGVOYW1lOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBEb2N1bWVudChGcmFtZSosIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpOwor
ICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hU
TUwpOwogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0cmlu
ZygpOyB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAkocmV2aXNpb24gNjE3ODcpCisr
KyBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBACiBjbGFzcyBEb2N1bWVudFR5cGU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxE
b2N1bWVudDsKK2NsYXNzIEtVUkw7CiBjbGFzcyBTdHJpbmc7CiAKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CkBAIC01Niw3ICs1Nyw3IEBACiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERv
Y3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKICAgICAv
LyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIEZyYW1lKiwg
Ym9vbCBpblZpZXdTb3VyY2VNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4g
Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBjb25zdCBLVVJM
JiwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKTsKIAogICAgIHN0YXRpYyBib29sIGlzWE1MTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7CiAgICAgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2MTc4
NykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDcg
KzM1NCw3IEBACiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiB9OwogCi1Eb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQorRG9jdW1lbnQ6
OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJv
b2wgaXNIVE1MKQogICAgIDogQ29udGFpbmVyTm9kZSgwKQogICAgICwgbV9kb210cmVlX3ZlcnNp
b24oMCkKICAgICAsIG1fc3R5bGVTaGVldHMoU3R5bGVTaGVldExpc3Q6OmNyZWF0ZSh0aGlzKSkK
QEAgLTQxMyw2ICs0MTMsOSBAQAogCiAgICAgbV9mcmFtZSA9IGZyYW1lOwogCisgICAgaWYgKGZy
YW1lIHx8ICF1cmwuaXNFbXB0eSgpKQorICAgICAgICBzZXRVUkwodXJsKTsKKwogICAgIG1fYXhP
YmplY3RDYWNoZSA9IDA7CiAgICAgCiAgICAgbV9kb2NMb2FkZXIgPSBuZXcgRG9jTG9hZGVyKHRo
aXMpOwpAQCAtNDYxMiw5ICs0NjE1LDggQEAKIAogICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwg
Y3JlYXRlIHRoZSBzZWN1cml0eSBjb250ZXh0IGZyb20gdGhlIGN1cnJlbnRseQogICAgIC8vIGxv
YWRpbmcgVVJMLgotICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwo
KTsKLSAgICBtX2Nvb2tpZVVSTCA9IHVybDsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpz
ZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCwgbV9mcmFtZS0+bG9h
ZGVyKCktPnNhbmRib3hGbGFncygpKSk7CisgICAgbV9jb29raWVVUkwgPSBtX3VybDsKKyAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG1fdXJsLCBtX2ZyYW1lLT5sb2FkZXIoKS0+c2FuZGJveEZsYWdzKCkpKTsKIAogICAg
IGlmIChTZWN1cml0eU9yaWdpbjo6YWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkg
ewogICAgICAgICAvLyBJZiB0aGlzIGRvY3VtZW50IHdhcyBsb2FkZWQgd2l0aCBzdWJzdGl0dXRl
RGF0YSwgdGhlbiB0aGUgZG9jdW1lbnQgY2FuCkluZGV4OiBXZWJDb3JlL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwCShyZXZpc2lvbiA2MTc4NykKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDE4ICsyMjcsMTggQEAKICAgICBSZWZQdHI8RG9jdW1l
bnQ+IGRvYzsKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gU1ZHTmFt
ZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgw
KTsKKyAgICAgICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOwogICAgIGVs
c2UKICNlbmRpZgogI2lmIEVOQUJMRShXTUwpCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBXTUxO
YW1lczo6d21sTmFtZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBXTUxEb2N1bWVudDo6Y3JlYXRl
KDApOworICAgICAgICBkb2MgPSBXTUxEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7CiAgICAg
ZWxzZQogI2VuZGlmCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFt
ZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCk7CisgICAg
ICAgIGRvYyA9IERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBLVVJMKCkpOwogICAgIGVsc2UKLSAg
ICAgICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZSgwKTsKKyAgICAgICAgZG9jID0gRG9jdW1lbnQ6
OmNyZWF0ZSgwLCBLVVJMKCkpOwogCiAgICAgUmVmUHRyPE5vZGU+IGRvY3VtZW50RWxlbWVudDsK
ICAgICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7CkBAIC0yOTUsMzcgKzI5NSwzNyBA
QAogCiBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhU
TUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIFJlZlB0cjxIVE1MRG9jdW1l
bnQ+IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8SFRNTERvY3VtZW50
PiBkID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKICAgICBkLT5vcGVuKCk7CiAg
ICAgZC0+d3JpdGUoIjwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Iik7
CiAgICAgZC0+c2V0VGl0bGUodGl0bGUpOwogICAgIHJldHVybiBkLnJlbGVhc2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNv
bnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBib29sIGluVmlld1NvdXJjZU1vZGUpCitQ
YXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpblZp
ZXdTb3VyY2VNb2RlKQogewogICAgIGlmIChpblZpZXdTb3VyY2VNb2RlKQotICAgICAgICByZXR1
cm4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB0eXBlKTsKKyAgICAgICAg
cmV0dXJuIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsLCB0eXBlKTsK
IAogICAgIC8vIFBsdWdpbnMgY2Fubm90IHRha2UgSFRNTCBhbmQgWEhUTUwgZnJvbSB1cywgYW5k
IHdlIGRvbid0IGV2ZW4gbmVlZCB0byBpbml0aWFsaXplIHRoZSBwbHVnaW4gZGF0YWJhc2UgZm9y
IHRob3NlLgogICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQotICAgICAgICByZXR1cm4gSFRN
TERvY3VtZW50OjpjcmVhdGUoZnJhbWUpOworICAgICAgICByZXR1cm4gSFRNTERvY3VtZW50Ojpj
cmVhdGUoZnJhbWUsIHVybCk7CiAgICAgaWYgKHR5cGUgPT0gImFwcGxpY2F0aW9uL3hodG1sK3ht
bCIKICNpZiBFTkFCTEUoWEhUTUxNUCkKICAgICAgICAgfHwgdHlwZSA9PSAiYXBwbGljYXRpb24v
dm5kLndhcC54aHRtbCt4bWwiCiAjZW5kaWYKICAgICAgICAgKQotICAgICAgICByZXR1cm4gRG9j
dW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lKTsKKyAgICAgICAgcmV0dXJuIERvY3VtZW50OjpjcmVh
dGVYSFRNTChmcmFtZSwgdXJsKTsKIAogI2lmIEVOQUJMRShXTUwpCiAgICAgaWYgKHR5cGUgPT0g
InRleHQvdm5kLndhcC53bWwiIHx8IHR5cGUgPT0gImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIp
Ci0gICAgICAgIHJldHVybiBXTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lKTsKKyAgICAgICAgcmV0
dXJuIFdNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShGVFBESVIpCiAgICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBGVFAgZnJvbSB1cyBlaXRoZXIK
ICAgICBpZiAodHlwZSA9PSAiYXBwbGljYXRpb24veC1mdHAtZGlyZWN0b3J5IikKLSAgICAgICAg
cmV0dXJuIEZUUERpcmVjdG9yeURvY3VtZW50OjpjcmVhdGUoZnJhbWUpOworICAgICAgICByZXR1
cm4gRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKICNlbmRpZgogCiAg
ICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSA9IDA7CkBAIC0zMzUsMjMgKzMzNSwyMyBAQAogICAg
IC8vIFBERiBpcyBvbmUgaW1hZ2UgdHlwZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92ZXJyaWRl
IGJ1aWx0LWluIHN1cHBvcnQuCiAgICAgLy8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1lIHRvIHRh
a2Ugb3ZlciBhbGwgaW1hZ2UgdHlwZXMsIG9idmlvdXNseS4KICAgICBpZiAoKHR5cGUgPT0gImFw
cGxpY2F0aW9uL3BkZiIgfHwgdHlwZSA9PSAidGV4dC9wZGYiKSAmJiBwbHVnaW5EYXRhICYmIHBs
dWdpbkRhdGEtPnN1cHBvcnRzTWltZVR5cGUodHlwZSkpCi0gICAgICAgIHJldHVybiBQbHVnaW5E
b2N1bWVudDo6Y3JlYXRlKGZyYW1lKTsKKyAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50Ojpj
cmVhdGUoZnJhbWUsIHVybCk7CiAgICAgaWYgKEltYWdlOjpzdXBwb3J0c1R5cGUodHlwZSkpCi0g
ICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoZnJhbWUpOworICAgICAgICByZXR1
cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogCiAjaWYgRU5BQkxFKFZJREVP
KQogICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIHR5cGUgY2FuIGJlIHBsYXllZCBieSBvdXIg
TWVkaWFQbGF5ZXIsIGlmIHNvIGNyZWF0ZSBhIE1lZGlhRG9jdW1lbnQKICAgICAgaWYgKE1lZGlh
UGxheWVyOjpzdXBwb3J0c1R5cGUoQ29udGVudFR5cGUodHlwZSkpKQotICAgICAgICAgcmV0dXJu
IE1lZGlhRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSk7CisgICAgICAgICByZXR1cm4gTWVkaWFEb2N1
bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogI2VuZGlmCiAKICAgICAvLyBFdmVyeXRoaW5nIGVs
c2UgZXhjZXB0IHRleHQvcGxhaW4gY2FuIGJlIG92ZXJyaWRkZW4gYnkgcGx1Z2lucy4gSW4gcGFy
dGljdWxhciwgQWRvYmUgU1ZHIFZpZXdlciBzaG91bGQgYmUgdXNlZCBmb3IgU1ZHLCBpZiBpbnN0
YWxsZWQuCiAgICAgLy8gRGlzYWxsb3dpbmcgcGx1Zy1pbnMgdG8gdXNlIHRleHQvcGxhaW4gcHJl
dmVudHMgcGx1Zy1pbnMgZnJvbSBoaWphY2tpbmcgYSBmdW5kYW1lbnRhbCB0eXBlIHRoYXQgdGhl
IGJyb3dzZXIgaXMgZXhwZWN0ZWQgdG8gaGFuZGxlLAogICAgIC8vIGFuZCBhbHNvIHNlcnZlcyBh
cyBhbiBvcHRpbWl6YXRpb24gdG8gcHJldmVudCBsb2FkaW5nIHRoZSBwbHVnLWluIGRhdGFiYXNl
IGluIHRoZSBjb21tb24gY2FzZS4KICAgICBpZiAodHlwZSAhPSAidGV4dC9wbGFpbiIgJiYgcGx1
Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKHR5cGUpKSAKLSAgICAgICAg
cmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoZnJhbWUpOworICAgICAgICByZXR1cm4gUGx1
Z2luRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKICAgICBpZiAoaXNUZXh0TUlNRVR5cGUo
dHlwZSkpCi0gICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSk7CisgICAg
ICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKIAogI2lmIEVOQUJM
RShTVkcpCiAgICAgaWYgKHR5cGUgPT0gImltYWdlL3N2Zyt4bWwiKSB7CkBAIC0zNTksMTMgKzM1
OSwxMyBAQAogICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0
aW5ncygpIDogMDsKICAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPnVzZXNEYXNo
Ym9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCiAjZW5kaWYKLSAgICAgICAgICAgIHJl
dHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKGZyYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBTVkdE
b2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChpc1hN
TE1JTUVUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSk7
CisgICAgICAgIHJldHVybiBEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogCi0gICAgcmV0
dXJuIEhUTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lKTsKKyAgICByZXR1cm4gSFRNTERvY3VtZW50
OjpjcmVhdGUoZnJhbWUsIHVybCk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTc4NykKKysrIFdlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTAtMDYtMjQg
IE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRha2UgYSBLVVJMIHBhcmFtZXRlciBpbiBEb2N1bWVu
dCdzIGNvbnN0cnVjdG9yLgorICAgICAgICBUaGlzIHdpbGwgcmVtb3ZlIHRoZSBvbmUgY2FzZSB3
aGVyZSBEb2N1bWVudDo6dXJsKCkgCisgICAgICAgIGFuZCBGcmFtZUxvYWRlcjo6dXJsKCkgYXJl
IG5vdCBlcXVhbCwgYWxsb3dpbmcgdXMgdG8KKyAgICAgICAgcmVtb3ZlIEZyYW1lTG9hZGVyOjp1
cmwoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDExNjYKKworICAgICAgICBSZWZhY3RvciBvbmx5LCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVt
ZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTogVGFrZSBhIEtVUkwgYW5kIHBhc3MgaXQgdGhyb3Vn
aCB0byBEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9j
dW1lbnQpOiBDYWxsIHNldFVSTCgpIGlmIGEgZnJhbWUgb3IgYSBub24tZW1wdHkgS1VSTCBpcyBz
cGVjaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4
dCk6IG1fdXJsIGlzIG5vdyBpbml0aWFsaXplZCwgc28gdXNlIGl0IGluc3RlYWQKKyAgICAgICAg
ICAgIG9mIG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBTZWN1
cml0eU9yaWdpbi4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVhI
VE1MKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MRG9jdW1lbnQuaDogQWRkIEtVUkwgcGFyYW1ldGVyIHRvIGNyZWF0ZSgpIGFuZCBjb25zdHJ1
Y3Rvci4KKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oOiBBZGQgS1VSTCBwYXJhbWV0ZXIgdG8g
Y3JlYXRlKCkgYW5kIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGxvYWRlci9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KTogVGFrZSBhIEtVUkwgYW5kIHBhc3MgaXQgdGhy
b3VnaCB0byBEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpiZWdp
bik6IFBhc3MgZXhpc3RpbmcgdXJsIHBhcmFtZXRlciB0byBjb25zdHJ1Y3RvcnMsIGFuZCByZW1v
dmUKKyAgICAgICAgICAgIHJlZHVuZGFudCBEb2N1bWVudDo6c2V0VVJMKCkgY2FsbC4KKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5o
OiBBZGQgS1VSTCBwYXJhbWV0ZXIgdG8gY3JlYXRlKCkgYW5kIGNvbnN0cnVjdG9yLgorICAgICAg
ICAqIGxvYWRlci9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1
bWVudC5oOiBBZGQgS1VSTCBwYXJhbWV0ZXIgdG8gY3JlYXRlKCkgYW5kIGNvbnN0cnVjdG9yLgor
ICAgICAgICAqIGxvYWRlci9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvTWVk
aWFEb2N1bWVudC5oOiBBZGQgS1VSTCBwYXJhbWV0ZXIgdG8gY3JlYXRlKCkgYW5kIGNvbnN0cnVj
dG9yLgorICAgICAgICAqIGxvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50Lmg6IEFkZCBLVVJMIHBh
cmFtZXRlciB0byBjcmVhdGUoKSBhbmQgY29uc3RydWN0b3IuCisgICAgICAgICogbG9hZGVyL1Bs
dWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUGx1Z2luRG9jdW1lbnQuaDogQWRk
IEtVUkwgcGFyYW1ldGVyIHRvIGNyZWF0ZSgpIGFuZCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBs
b2FkZXIvU2lua0RvY3VtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU2lua0RvY3VtZW50Lmg6
IEFkZCBLVVJMIHBhcmFtZXRlciB0byBjcmVhdGUoKSBhbmQgY29uc3RydWN0b3IuCisgICAgICAg
ICogbG9hZGVyL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHREb2N1bWVu
dC5oOiBBZGQgS1VSTCBwYXJhbWV0ZXIgdG8gY3JlYXRlKCkgYW5kIGNvbnN0cnVjdG9yLgorICAg
ICAgICAqIHN2Zy9TVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50Lmg6
IEFkZCBLVVJMIHBhcmFtZXRlciB0byBjcmVhdGUoKSBhbmQgY29uc3RydWN0b3IuCisgICAgICAg
ICogeG1sL0RPTVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OnBhcnNl
RnJvbVN0cmluZyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTCk6CisgICAgICAgICogeG1sL1hT
TFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRl
RG9jdW1lbnRGcm9tU291cmNlKToKKwogMjAxMC0wNi0yNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjYxNzgzLgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCShyZXZpc2lvbiA2MTc4NykKKysrIFdlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKIAogICAgIGNs
YXNzIFNWR0RvY3VtZW50IDogcHVibGljIERvY3VtZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lKQorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNWR0RvY3VtZW50KGZyYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwg
flNWR0RvY3VtZW50KCk7CkBAIC01MSw3ICs1MSw3IEBACiAgICAgICAgIHZvaWQgdXBkYXRlUGFu
KGNvbnN0IEZsb2F0UG9pbnQmIHBvcykgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBT
VkdEb2N1bWVudChGcmFtZSopOworICAgICAgICBTVkdEb2N1bWVudChGcmFtZSosIGNvbnN0IEtV
UkwmKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdEb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjE3ODcpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJh
bWUqIGZyYW1lKQotICAgIDogRG9jdW1lbnQoZnJhbWUsIGZhbHNlLCBmYWxzZSkKK1NWR0RvY3Vt
ZW50OjpTVkdEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IERv
Y3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCShyZXZpc2lvbiA2MTc4NykKKysrIFdlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkg
QEAKIAogY2xhc3MgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxWaWV3U291cmNlRG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTFZpZXdTb3VyY2VEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmlld1NvdXJjZURvY3VtZW50KGZyYW1lLCBtaW1lVHlw
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWV3U291cmNlRG9jdW1lbnQo
ZnJhbWUsIHVybCwgbWltZVR5cGUpKTsKICAgICB9CiAKICAgICB2b2lkIGFkZFZpZXdTb3VyY2VU
b2tlbihUb2tlbiopOyAvLyBVc2VkIGJ5IHRoZSBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuCkBA
IC00Nyw3ICs0Nyw3IEBACiAgICAgdm9pZCBhZGRWaWV3U291cmNlRG9jdHlwZVRva2VuKERvY3R5
cGVUb2tlbiopOwogCiBwcml2YXRlOgotICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZy
YW1lKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gUmV0
dXJucyBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2Vk
IG9uIG1fdHlwZS4KICAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVhdGVQYXJzZXIoKTsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDYx
Nzg3KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw4ICs0NCw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LUhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lKQor
SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICA6IEhUTUxE
b2N1bWVudChmcmFtZSwgdXJsKQogICAgICwgbV90eXBlKG1pbWVUeXBlKQogewogICAgIHNldFVz
ZXNCZWZvcmVBZnRlclJ1bGVzKHRydWUpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAkocmV2aXNpb24g
NjE3ODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDkgKzM1LDkgQEAKIAogY2xhc3MgSFRNTERvY3VtZW50IDogcHVibGljIERvY3VtZW50LCBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB+SFRNTERvY3VtZW50KCk7CiAKQEAgLTgwLDcgKzgwLDcgQEAK
ICAgICBib29sIGhhc0V4dHJhTmFtZWRJdGVtKEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgSFRNTERvY3VtZW50KEZyYW1lKik7CisgICAgSFRNTERvY3VtZW50KEZy
YW1lKiwgY29uc3QgS1VSTCYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjaGlsZEFs
bG93ZWQoTm9kZSopOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHJldmlzaW9uIDYxNzg3KQor
KysgV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDgg
KzgxLDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50OjpI
VE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lKQotICAgIDogRG9jdW1lbnQoZnJhbWUsIGZhbHNlLCB0
cnVlKQorSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJM
JiB1cmwpCisgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBmYWxzZSwgdHJ1ZSkKIHsKICAgICBj
bGVhclhNTFZlcnNpb24oKTsKICAgICBzZXRQYXJzZU1vZGUoQ29tcGF0KTsKSW5kZXg6IFdlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDYxNzg3KQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsOSArMjQwLDggQEAKICAgICAgICAgICAg
IC8vIFRoZSBXM0Mgc3BlYyByZXF1aXJlcyB0aGlzLgogICAgICAgICAgICAgbV9yZXNwb25zZVhN
TCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlWE1MID0gRG9j
dW1lbnQ6OmNyZWF0ZSgwKTsKKyAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBEb2N1bWVudDo6
Y3JlYXRlKDAsIG1fdXJsKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPm9wZW4oKTsKLSAg
ICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPnNldFVSTChtX3VybCk7CiAgICAgICAgICAgICAvLyBG
SVhNRTogU2V0IExhc3QtTW9kaWZpZWQuCiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT53cml0
ZShTdHJpbmcobV9yZXNwb25zZVRleHQpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPmZp
bmlzaFBhcnNpbmcoKTsKSW5kZXg6IFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiA2MTc4NykK
KysrIFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwx
MCArNjgsMTAgQEAKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gcmVzdWx0OwogICAgIGlmIChzb3Vy
Y2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpIHsKLSAgICAgICAgcmVzdWx0ID0gRG9jdW1lbnQ6
OmNyZWF0ZShmcmFtZSk7CisgICAgICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJhbWUs
IHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSk7CiAgICAg
ICAgIHRyYW5zZm9ybVRleHRTdHJpbmdUb1hIVE1MRG9jdW1lbnRTdHJpbmcoZG9jdW1lbnRTb3Vy
Y2UpOwogICAgIH0gZWxzZQotICAgICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3Jl
YXRlRG9jdW1lbnQoc291cmNlTUlNRVR5cGUsIGZyYW1lLCBmYWxzZSk7CisgICAgICAgIHJlc3Vs
dCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3VyY2VNSU1FVHlwZSwgZnJh
bWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSwgZmFs
c2UpOwogCiAgICAgLy8gQmVmb3JlIHBhcnNpbmcsIHdlIG5lZWQgdG8gc2F2ZSAmIGRldGFjaCB0
aGUgb2xkIGRvY3VtZW50IGFuZCBnZXQgdGhlIG5ldyBkb2N1bWVudAogICAgIC8vIGluIHBsYWNl
LiBXZSBoYXZlIHRvIGRvIHRoaXMgb25seSBpZiB3ZSdyZSByZW5kZXJpbmcgdGhlIHJlc3VsdCBk
b2N1bWVudC4KQEAgLTgyLDggKzgyLDYgQEAKICAgICAgICAgZnJhbWUtPnNldERvY3VtZW50KHJl
c3VsdCk7CiAgICAgfQogCi0gICAgaWYgKHNvdXJjZUlzRG9jdW1lbnQpCi0gICAgICAgIHJlc3Vs
dC0+c2V0VVJMKG93bmVyRG9jdW1lbnQtPnVybCgpKTsKICAgICByZXN1bHQtPm9wZW4oKTsKIAog
ICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKSW5kZXg6IFdlYkNvcmUveG1sL0RPTVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAkocmV2aXNpb24g
NjE3ODcpCisrKyBXZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAgICAgaWYgKCFET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShj
b250ZW50VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPERvY3VtZW50PiBk
b2MgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIDAsIGZh
bHNlKTsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgS1VSTCgpLCBmYWxzZSk7CiAKICAgICBkb2MtPm9w
ZW4oKTsKICAgICBkb2MtPndyaXRlKHN0cik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2MTc4NykKKysrIFdlYkNvcmUvbG9hZGVyL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDggKzQzMSw4IEBACiAg
ICAgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpmaW5pc2goKTsKIH0KIAotRlRQRGlyZWN0b3J5
RG9jdW1lbnQ6OkZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSkKLSAgICA6IEhUTUxE
b2N1bWVudChmcmFtZSkKK0ZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFt
ZSwgdXJsKQogewogI2lmbmRlZiBOREVCVUcKICAgICBMb2dGVFAuc3RhdGUgPSBXVEZMb2dDaGFu
bmVsT247CkluZGV4OiBXZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAkocmV2aXNpb24gNjE3ODcpCisr
KyBXZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4
LDggKzEzOCw4IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotTWVkaWFEb2N1bWVudDo6
TWVkaWFEb2N1bWVudChGcmFtZSogZnJhbWUpCi0gICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUpCitN
ZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
KQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiAgICAgLCBtX3JlcGxhY2VNZWRpYUVs
ZW1lbnRUaW1lcih0aGlzLCAmTWVkaWFEb2N1bWVudDo6cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVy
RmlyZWQpCiB7CiAgICAgc2V0UGFyc2VNb2RlKENvbXBhdCk7CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9JbWFnZURv
Y3VtZW50LmNwcAkocmV2aXNpb24gNjE3ODcpCisrKyBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDggKzE5NSw4IEBACiAgICAgCiAvLyAtLS0t
LS0tLQogCi1JbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KEZyYW1lKiBmcmFtZSkKLSAgICA6
IEhUTUxEb2N1bWVudChmcmFtZSkKK0ltYWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkK
ICAgICAsIG1faW1hZ2VFbGVtZW50KDApCiAgICAgLCBtX2ltYWdlU2l6ZUlzS25vd24oZmFsc2Up
CiAgICAgLCBtX2RpZFNocmlua0ltYWdlKGZhbHNlKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvVGV4
dERvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA2MTc4NykKKysrIFdlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4NCw4ICsxODQsOCBAQAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lKQotICAgIDogSFRNTERv
Y3VtZW50KGZyYW1lKQorVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKIH0KIApJ
bmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAJKHJldmlzaW9uIDYxNzg3KQorKysgV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkRm9udC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQAogewog
ICAgIEFTU0VSVChtX2lzU1ZHRm9udCk7CiAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQg
JiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7Ci0gICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCk7CisgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsK
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5vcGVuKCk7CiAKICAgICAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCIpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCShyZXZp
c2lvbiA2MTc4NykKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAKICAgICB2b2lkIHNldERlY29kZXIoVGV4dFJlc291cmNl
RGVjb2RlciopOwogCiBwcml2YXRlOgotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURv
Y3VtZW50KCk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3Qg
S1VSTCYpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL01l
ZGlhRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50
LmgJKHJldmlzaW9uIDYxNzg3KQorKysgV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCwxNiArMzQsMTYgQEAKIAogY2xhc3MgTWVkaWFEb2N1bWVudCA6
IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYURvY3VtZW50KGZyYW1lKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJsKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgfk1lZGlhRG9jdW1lbnQoKTsKIAogICAgIHZvaWQgbWVkaWFFbGVt
ZW50U2F3VW5zdXBwb3J0ZWRUcmFja3MoKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYURvY3VtZW50
KEZyYW1lKik7CisgICAgTWVkaWFEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc01lZGlhRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9ICAg
ICAgICAKICAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVhdGVQYXJzZXIoKTsKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvUGx1Z2luRG9jdW1lbnQuaAkocmV2aXNpb24gNjE3ODcpCisrKyBXZWJDb3JlL2xvYWRl
ci9QbHVnaW5Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiBjbGFz
cyBXaWRnZXQ7CiBjbGFzcyBQbHVnaW5Eb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkRvY3VtZW50PiBjcmVhdGUoRnJh
bWUqIGZyYW1lKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkRvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBsdWdpbkRvY3VtZW50KGZyYW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KIAogICAgIFdpZGdldCog
cGx1Z2luV2lkZ2V0KCk7CkBAIC00NCw3ICs0NCw3IEBACiAgICAgdmlydHVhbCBib29sIGlzUGx1
Z2luRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgUGx1
Z2luRG9jdW1lbnQoRnJhbWUqKTsKKyAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIGNvbnN0IEtV
UkwmKTsKIAogICAgIHZpcnR1YWwgRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVBhcnNlcigpOwogfTsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL1NpbmtEb2N1bWVudC5oCShyZXZpc2lvbiA2MTc4NykKKysrIFdlYkNvcmUvbG9h
ZGVyL1NpbmtEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTMgQEAKIAog
Y2xhc3MgU2lua0RvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNpbmtEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29u
c3QgS1VSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaW5rRG9j
dW1lbnQoZnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaW5rRG9jdW1lbnQo
ZnJhbWUsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW5rRG9jdW1lbnQoRnJhbWUq
KTsKKyAgICBTaW5rRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CiAgICAgCiAgICAgdmly
dHVhbCBEb2N1bWVudFBhcnNlciogY3JlYXRlUGFyc2VyKCk7CiB9OwpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcAkocmV2aXNpb24gNjE3ODcpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEzICs4MCwxMyBAQAogICAgIGJl
Z2luKEtVUkwoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpj
cmVhdGVEb2N1bWVudCgpCitQYXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3Jl
YXRlRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlmICghbV9mcmFtZS0+bG9hZGVy
KCktPnN0YXRlTWFjaGluZSgpLT5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYm
IG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQobV9t
aW1lVHlwZSkpCi0gICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUp
OworICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZShtX2ZyYW1lLCB1cmwpOwog
ICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5oYXNIVE1MVmlldygpKQotICAg
ICAgICByZXR1cm4gUGxhY2Vob2xkZXJEb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUpOwotICAgIHJl
dHVybiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQobV9taW1lVHlwZSwgbV9mcmFt
ZSwgbV9mcmFtZS0+aW5WaWV3U291cmNlTW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIFBsYWNlaG9s
ZGVyRG9jdW1lbnQ6OmNyZWF0ZShtX2ZyYW1lLCB1cmwpOworICAgIHJldHVybiBET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQobV9taW1lVHlwZSwgbV9mcmFtZSwgdXJsLCBtX2ZyYW1l
LT5pblZpZXdTb3VyY2VNb2RlKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbihj
b25zdCBLVVJMJiB1cmwsIGJvb2wgZGlzcGF0Y2gsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCkBA
IC05NywxMiArOTcsMTIgQEAKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBkb2N1bWVudCBiZWZvcmUg
Y2xlYXJpbmcgdGhlIGZyYW1lLCBiZWNhdXNlIGl0IG1heSBuZWVkIHRvCiAgICAgLy8gaW5oZXJp
dCBhbiBhbGlhc2VkIHNlY3VyaXR5IGNvbnRleHQuCi0gICAgUmVmUHRyPERvY3VtZW50PiBkb2N1
bWVudCA9IGNyZWF0ZURvY3VtZW50KCk7CisgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9
IGNyZWF0ZURvY3VtZW50KHVybCk7CiAgICAgCiAgICAgLy8gSWYgdGhlIG5ldyBkb2N1bWVudCBp
cyBmb3IgYSBQbHVnaW4gYnV0IHdlJ3JlIHN1cHBvc2VkIHRvIGJlIHNhbmRib3hlZCBmcm9tIFBs
dWdpbnMsCiAgICAgLy8gdGhlbiByZXBsYWNlIHRoZSBkb2N1bWVudCB3aXRoIG9uZSB3aG9zZSBw
YXJzZXIgd2lsbCBpZ25vcmUgdGhlIGluY29taW5nIGRhdGEgKGJ1ZyAzOTMyMykKICAgICBpZiAo
ZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS0+aXNTYW5k
Ym94ZWQoU2FuZGJveFBsdWdpbnMpKQotICAgICAgICBkb2N1bWVudCA9IFNpbmtEb2N1bWVudDo6
Y3JlYXRlKG1fZnJhbWUpOworICAgICAgICBkb2N1bWVudCA9IFNpbmtEb2N1bWVudDo6Y3JlYXRl
KG1fZnJhbWUsIHVybCk7CiAKICAgICBib29sIHJlc2V0U2NyaXB0aW5nID0gIShtX2ZyYW1lLT5s
b2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50
KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNTZWN1cmVUcmFu
c2l0aW9uVG8odXJsKSk7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsZWFyKHJlc2V0U2NyaXB0
aW5nLCByZXNldFNjcmlwdGluZyk7CkBAIC0xMTAsNyArMTEwLDYgQEAKICAgICAgICAgbV9mcmFt
ZS0+c2NyaXB0KCktPnVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCiAgICAgbV9mcmFt
ZS0+bG9hZGVyKCktPnNldFVSTCh1cmwpOwotICAgIGRvY3VtZW50LT5zZXRVUkwodXJsKTsKICAg
ICBtX2ZyYW1lLT5zZXREb2N1bWVudChkb2N1bWVudCk7CiAKICAgICBpZiAobV9kZWNvZGVyKQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcAkocmV2aXNpb24gNjE3ODcpCisrKyBXZWJD
b3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw4ICsx
NTgsOCBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLVBsdWdpbkRvY3VtZW50OjpQbHVn
aW5Eb2N1bWVudChGcmFtZSogZnJhbWUpCi0gICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUpCitQbHVn
aW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwp
CisgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKICAgICBzZXRQYXJzZU1vZGUoQ29t
cGF0KTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjE3ODcpCisr
KyBXZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4
ICs2MCw4IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TaW5rRG9jdW1lbnQ6OlNpbmtEb2N1
bWVudChGcmFtZSogZnJhbWUpCi0gICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUpCitTaW5rRG9jdW1l
bnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IEhU
TUxEb2N1bWVudChmcmFtZSwgdXJsKQogewogICAgIHNldFBhcnNlTW9kZShDb21wYXQpOwogfQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCShyZXZpc2lvbiA2MTc4NykK
KysrIFdlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEzICszMywxMyBAQAogICAgIAogY2xhc3MgRlRQRGlyZWN0b3J5RG9jdW1lbnQgOiBw
dWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBE
aXJlY3RvcnlEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGVFBEaXJlY3RvcnlE
b2N1bWVudChmcmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9y
eURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRlRQRGlyZWN0
b3J5RG9jdW1lbnQoRnJhbWUqKTsKKyAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNv
bnN0IEtVUkwmKTsKICAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVhdGVQYXJzZXIoKTsK
IH07CiAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5oCShyZXZpc2lvbiA2MTc4NykKKysr
IFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSAr
MzMsOSBAQAogCiBjbGFzcyBJbWFnZURvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJh
bWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEltYWdlRG9jdW1lbnQoZnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbWFnZURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CiAKICAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UoKTsKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICB2b2lkIGltYWdlQ2xpY2tlZChp
bnQgeCwgaW50IHkpOwogCiBwcml2YXRlOgotICAgIEltYWdlRG9jdW1lbnQoRnJhbWUqKTsKKyAg
ICBJbWFnZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBEb2N1
bWVudFBhcnNlciogY3JlYXRlUGFyc2VyKCk7CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VEb2N1
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1BsYWNl
aG9sZGVyRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRl
ckRvY3VtZW50LmgJKHJldmlzaW9uIDYxNzg3KQorKysgV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xk
ZXJEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNSArMzIsMTUgQEAKIAogY2xhc3Mg
UGxhY2Vob2xkZXJEb2N1bWVudCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGxhY2Vob2xkZXJEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGFjZWhvbGRlckRvY3VtZW50PiBjcmVhdGUoRnJhbWUq
IGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBsYWNlaG9sZGVyRG9jdW1lbnQoZnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBQbGFjZWhvbGRlckRvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgYXR0YWNoKCk7CiAKIHByaXZhdGU6Ci0gICAgUGxhY2Vob2xkZXJEb2N1bWVudChG
cmFtZSogZnJhbWUpIDogRG9jdW1lbnQoZnJhbWUsIGZhbHNlLCBmYWxzZSkgeyB9CisgICAgUGxh
Y2Vob2xkZXJEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkgOiBEb2N1bWVu
dChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmgJKHJldmlzaW9uIDYxNzg3KQorKysgV2ViQ29y
ZS9sb2FkZXIvVGV4dERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxMyBA
QAogCiBjbGFzcyBUZXh0RG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHREb2N1bWVudChmcmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHREb2N1
bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFRleHREb2N1bWVudChG
cmFtZSopOworICAgIFRleHREb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKICAgICAKICAg
ICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVhdGVQYXJzZXIoKTsKIH07Cg==
</data>
<flag name="review"
          id="46737"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>