<?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>31564</bug_id>
          
          <creation_ts>2009-11-16 14:24:40 -0800</creation_ts>
          <short_desc>Rename CanvasObject to WebGLObject</short_desc>
          <delta_ts>2010-08-04 15: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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>164079</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-16 14:24:40 -0800</bug_when>
    <thetext>The CanvasObject type isn&apos;t exposed in the public WebGL API, but it is used throughout the implementation. Per https://bugs.webkit.org/show_bug.cgi?id=29095 it should be renamed to WebGLObject and all of the subclasses updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260249</commentid>
    <comment_count>1</comment_count>
      <attachid>63503</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-04 15:39:39 -0700</bug_when>
    <thetext>Created attachment 63503
Patch

From the ChangeLog:

Renamed CanvasObject to WebGLObject using do-webcore-rename script. Because it seems the new convention is to not check in the changes made to this script, only checking in its effects. No new tests; built and ran WebGL in Safari and Chromium to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260251</commentid>
    <comment_count>2</comment_count>
      <attachid>63503</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-08-04 15:41:40 -0700</bug_when>
    <thetext>Comment on attachment 63503
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260253</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 15:42:35 -0700</bug_when>
    <thetext>Attachment 63503 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/html/canvas/CanvasRenderingContext.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/html/canvas/WebGLProgram.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/html/canvas/WebGLBuffer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/html/canvas/WebGLFramebuffer.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/html/canvas/WebGLRenderbuffer.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/html/canvas/WebGLTexture.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/html/canvas/WebGLObject.cpp:30:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
WebCore/html/canvas/WebGLShader.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 8 in 25 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>260255</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-04 15:45:28 -0700</bug_when>
    <thetext>Note: preexisting style violations in these files will be cleaned up in https://bugs.webkit.org/show_bug.cgi?id=38761 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260256</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-04 15:49:19 -0700</bug_when>
    <thetext>Committed r64685: &lt;http://trac.webkit.org/changeset/64685&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63503</attachid>
            <date>2010-08-04 15:39:39 -0700</date>
            <delta_ts>2010-08-04 15:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>webgl-object.patch</filename>
            <type>text/plain</type>
            <size>43554</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDY4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTAtMDgtMDQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bmFtZSBDYW52YXNPYmplY3QgdG8gV2ViR0xPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNTY0CisKKyAgICAgICAgUmVuYW1lZCBDYW52YXNP
YmplY3QgdG8gV2ViR0xPYmplY3QgdXNpbmcgZG8td2ViY29yZS1yZW5hbWUgc2NyaXB0LgorICAg
ICAgICBCZWNhdXNlIGl0IHNlZW1zIHRoZSBuZXcgY29udmVudGlvbiBpcyB0byBub3QgY2hlY2sg
aW4gdGhlIGNoYW5nZXMKKyAgICAgICAgbWFkZSB0byB0aGlzIHNjcmlwdCwgb25seSBjaGVja2lu
ZyBpbiBpdHMgZWZmZWN0cy4gTm8gbmV3IHRlc3RzOworICAgICAgICBidWlsdCBhbmQgcmFuIFdl
YkdMIGluIFNhZmFyaSBhbmQgQ2hyb21pdW0gdG8gdGVzdC4KKworICAgICAgICAqIEFuZHJvaWQu
bWs6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNPYmplY3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc09iamVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpXZWJH
TEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OnNldEF0
dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6b25BdHRhY2hl
ZE9iamVjdENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc1Vu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SW5p
dGlhbGl6ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6IENvcGllZCBmcm9tIFdlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMT2Jq
ZWN0OjpXZWJHTE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE9iamVjdDo6fldlYkdM
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMT2JqZWN0OjpzZXRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xPYmplY3Q6OmRlbGV0ZU9iamVjdCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xPYmplY3QuaDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNPYmplY3QuaC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpXZWJHTFByb2dyYW0pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVyOjpX
ZWJHTFJlbmRlcmJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZm
ZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6b2JqZWN0T3JaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVXZWJHTE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlbW92ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFkZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmaW5kVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZpbmRSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmaW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZmluZFNoYWRlcik6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6Oldl
YkdMU2hhZGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFRleHR1cmU6OldlYkdMVGV4dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0
dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisK
IDIwMTAtMDgtMDQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBC
dWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA2NDY4NCkKKysrIFdlYkNvcmUvQW5kcm9pZC5tawkod29y
a2luZyBjb3B5KQpAQCAtMjg4LDcgKzI4OCw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FM
X1NSQ19GSUxFUykgXAogCVwKIAlodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAgXAogCWh0
bWwvY2FudmFzL0NhbnZhc051bWJlckFycmF5LmNwcCBcCi0JaHRtbC9jYW52YXMvQ2FudmFzT2Jq
ZWN0LmNwcCBcCisJaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIFwKIAlodG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmNwcCBcCiAJaHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJheS5jcHAgXAog
CWh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIFwKSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biA2NDY4NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ3
LDggKzE0NDcsOCBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDMyQXJyYXkuY3BwJywK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnQzMkFycmF5LmgnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCcsCi0gICAgICAgICAgICAnaHRtbC9j
YW52YXMvQ2FudmFzT2JqZWN0LmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFz
T2JqZWN0LmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0Nh
bnZhc1BhdHRlcm4uaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJh
eS5jcHAnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUucHJvCShyZXZpc2lvbiA2NDY4NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTMwMDcsNyArMzAwNyw3IEBAIHRvYmV8IXRvYmU6IFFUICs9IG9wZW5n
bAogSEVBREVSUyArPSBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVs
cGVyLmggXAogICAgICAgICBodG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIFwK
LSAgICAgICAgaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmggXAorICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTE9iamVjdC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZvLmgg
XAogICAgICAgICBodG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5oIFwKICAgICAgICAgaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXJWaWV3LmggXApAQCAtMzA0Miw3ICszMDQyLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBodG1sL2NhbnZh
cy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAgXAotICAgICAgICBodG1sL2NhbnZhcy9DYW52
YXNPYmplY3QuY3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIFwKICAg
ICAgICAgaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMv
QXJyYXlCdWZmZXJWaWV3LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNw
cCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNjQ2ODQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtOTE5LDggKzkxOSw4IEBACiAJCTQ5QzdCOUNDMTA0MkQzMkYw
MDA5RDQ0NyAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5QzdCOUFDMTA0MkQzMkUwMDA5RDQ0NyAvKiBJbnQ4QXJyYXkuaCAqLzsg
fTsKIAkJNDlDN0I5Q0UxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5QUUxMDQy
RDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwICovOyB9OwogCQk0OUM3QjlDRjEw
NDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5QUYxMDQyRDMyRTAwMDlENDQ3IC8qIFdl
YkdMRnJhbWVidWZmZXIuaCAqLzsgfTsKLQkJNDlDN0I5RDQxMDQyRDMyRjAwMDlENDQ3IC8qIENh
bnZhc09iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OUM3QjlCNDEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFzT2JqZWN0LmNwcCAqLzsgfTsK
LQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIENhbnZhc09iamVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5QjUxMDQyRDMyRjAwMDlE
NDQ3IC8qIENhbnZhc09iamVjdC5oICovOyB9OworCQk0OUM3QjlENDEwNDJEMzJGMDAwOUQ0NDcg
LyogV2ViR0xPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDlDN0I5QjQxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmNwcCAqLzsg
fTsKKwkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUM3QjlCNTEwNDJEMzJGMDAw
OUQ0NDcgLyogV2ViR0xPYmplY3QuaCAqLzsgfTsKIAkJNDlDN0I5RDYxMDQyRDMyRjAwMDlENDQ3
IC8qIFdlYkdMUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUM3QjlCNjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xQcm9ncmFtLmNwcCAq
LzsgfTsKIAkJNDlDN0I5RDcxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMUHJvZ3JhbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5QjcxMDQyRDMy
RjAwMDlENDQ3IC8qIFdlYkdMUHJvZ3JhbS5oICovOyB9OwogCQk0OUM3QjlEOTEwNDJEMzJGMDAw
OUQ0NDcgLyogV2ViR0xSZW5kZXJidWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5QjkxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMUmVu
ZGVyYnVmZmVyLmNwcCAqLzsgfTsKQEAgLTY2NTcsOCArNjY1Nyw4IEBACiAJCTQ5QzdCOUFFMTA0
MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMRnJhbWVidWZmZXIuY3BwOyBwYXRoID0gY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUM3QjlB
RjEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJHTEZyYW1lYnVmZmVyLmg7IHBhdGggPSBjYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUM3QjlCMDEwNDJE
MzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gV2ViR0xGcmFtZWJ1ZmZlci5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5QzdCOUI0MTA0MkQzMkYwMDA5RDQ0
NyAvKiBDYW52YXNPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ2FudmFzT2JqZWN0LmNwcDsgcGF0aCA9IGNhbnZhcy9DYW52YXNPYmplY3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUM3QjlCNTEwNDJEMzJGMDAwOUQ0NDcgLyogQ2Fu
dmFzT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENhbnZhc09iamVj
dC5oOyBwYXRoID0gY2FudmFzL0NhbnZhc09iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0OUM3QjlCNDEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xPYmplY3QuY3BwOyBwYXRoID0g
Y2FudmFzL1dlYkdMT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlD
N0I5QjUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkdMT2JqZWN0Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlDN0I5QjYxMDQyRDMyRjAwMDlENDQ3
IC8qIFdlYkdMUHJvZ3JhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBXZWJHTFByb2dyYW0uY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QzdCOUI3MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TFByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xQcm9ncmFt
Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xQcm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5QzdCOUI4MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFByb2dyYW0uaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMUHJvZ3JhbS5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xQ
cm9ncmFtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNzg0LDggKzExNzg0
LDggQEAKIAkJCQk0OTQ4NEZCMzEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3Bw
ICovLAogCQkJCTQ5NDg0RkI0MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5oICov
LAogCQkJCTQ5NDg0RkI1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5pZGwgKi8s
Ci0JCQkJNDlDN0I5QjQxMDQyRDMyRjAwMDlENDQ3IC8qIENhbnZhc09iamVjdC5jcHAgKi8sCi0J
CQkJNDlDN0I5QjUxMDQyRDMyRjAwMDlENDQ3IC8qIENhbnZhc09iamVjdC5oICovLAorCQkJCTQ5
QzdCOUI0MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTE9iamVjdC5jcHAgKi8sCisJCQkJNDlDN0I5
QjUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggKi8sCiAJCQkJNDk0ODRGQjYxMDJD
RjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uY3BwICovLAogCQkJCTQ5NDg0RkI3MTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmggKi8sCiAJCQkJNDk0ODRGQjgxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc1BhdHRlcm4uaWRsICovLApAQCAtMTc0MzMsNyArMTc0MzMsNyBAQAog
CQkJCTkzRjE5OTUwMDgyNDVFNTkwMDFFOUFCQyAvKiBDYWNoZVBvbGljeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNkU0RTkxQUQxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1
dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDMjEwMkNGMjNDMDAxODdERDMgLyogQ2Fu
dmFzR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0
NyAvKiBDYW52YXNPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QzdCOUQ1MTA0MkQzMkYw
MDA5RDQ0NyAvKiBXZWJHTE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQzUxMDJD
RjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDg0
RkM4MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQaXhlbEFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlERDEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yMDM3Nyw3ICsyMDM3Nyw3IEBACiAJCQkJQkNCMTZDMjcwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNkU0RTkxQUMxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkMxMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNH
cmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OUM3QjlENDEwNDJEMzJGMDAwOUQ0NDcg
LyogQ2FudmFzT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5QzdCOUQ0MTA0MkQzMkYw
MDA5RDQ0NyAvKiBXZWJHTE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDNDEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OTQ4NEZDNzEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OUM3QjlEQzEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVj
dC5jcHAJKHJldmlzaW9uIDY0Njg0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoM0RfQ0FOVkFTKQotCi0jaW5jbHVkZSAiQ2FudmFz
T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLSAgICAKLUNhbnZhc09iamVjdDo6Q2FudmFzT2JqZWN0KFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCkKLSAgICA6IG1fb2JqZWN0KDApCi0gICAgLCBtX3Nob3VsZERl
bGV0ZU9iamVjdCh0cnVlKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi17Ci19Ci0KLUNhbnZh
c09iamVjdDo6fkNhbnZhc09iamVjdCgpCi17Ci0gICAgaWYgKG1fY29udGV4dCkKLSAgICAgICAg
bV9jb250ZXh0LT5yZW1vdmVPYmplY3QodGhpcyk7Ci19Ci0KLXZvaWQgQ2FudmFzT2JqZWN0Ojpz
ZXRPYmplY3QoUGxhdGZvcm0zRE9iamVjdCBvYmplY3QsIGJvb2wgc2hvdWxkRGVsZXRlT2JqZWN0
KQotewotICAgIGlmIChvYmplY3QgPT0gbV9vYmplY3QpCi0gICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgZGVsZXRlT2JqZWN0KCk7Ci0gICAgbV9vYmplY3QgPSBvYmplY3Q7Ci0gICAgbV9z
aG91bGREZWxldGVPYmplY3QgPSBzaG91bGREZWxldGVPYmplY3Q7Ci19Ci0KLXZvaWQgQ2FudmFz
T2JqZWN0OjpkZWxldGVPYmplY3QoKQotewotICAgIGlmIChtX29iamVjdCkgewotICAgICAgICBp
ZiAobV9zaG91bGREZWxldGVPYmplY3QpCi0gICAgICAgICAgICBpZiAobV9jb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICAgICAgICAgICAgICBfZGVsZXRlT2JqZWN0KG1fb2JqZWN0KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgbV9vYmplY3QgPSAwOwotICAgIH0KLSAgICBtX3Nob3VsZERl
bGV0ZU9iamVjdCA9IHRydWU7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRSgzRF9DQU5WQVMp
CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmgJKHJldmlzaW9uIDY0Njg0KQorKysg
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDYW52YXNPYmplY3RfaAotI2RlZmluZSBDYW52
YXNPYmplY3RfaAotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwotICAgIAot
ICAgIGNsYXNzIENhbnZhc09iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc09iamVjdD4g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Q2FudmFzT2JqZWN0KCk7Ci0gICAgICAg
IAotICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Jq
ZWN0OyB9Ci0gICAgICAgIHZvaWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3QsIGJvb2wgc2hv
dWxkRGVsZXRlT2JqZWN0ID0gdHJ1ZSk7Ci0gICAgICAgIHZvaWQgZGVsZXRlT2JqZWN0KCk7Ci0g
ICAgICAgIAotICAgICAgICB2b2lkIGRldGFjaENvbnRleHQoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBkZWxldGVPYmplY3QoKTsKLSAgICAgICAgICAgIG1fY29udGV4dCA9IDA7Ci0gICAgICAg
IH0KLQotICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHQ7IH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZWJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyYW0o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
aGFkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNU
ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgQ2FudmFzT2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KSA9IDA7Ci0gICAgCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBtX29iamVjdDsKLSAgICAgICAgLy8gVGhl
IHNob3VsZERlbGV0ZU9iamVjdCBmbGFnIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgd3JhcHBlcgot
ICAgICAgICAvLyBvd25zIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlIGFuZCBzaG91bGQgZGVsZXRl
IGl0IHdoZW4gdGhlCi0gICAgICAgIC8vIHdyYXBwZXIgaXMgdW5yZWZlcmVuY2VkIGZvciB0aGUg
bGFzdCB0aW1lIGFuZCBkZWxldGVkLiBJdAotICAgICAgICAvLyBpcyBvbmx5IHNldCB0byBmYWxz
ZSBmb3IgY2VydGFpbiBvYmplY3RzIHJldHVybmVkIGZyb20gZ2V0Ci0gICAgICAgIC8vIHF1ZXJp
ZXMuIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25pY2FsaXppbmcgYWxsIG9mIHRoZXNlCi0g
ICAgICAgIC8vIG9iamVjdHMgaW4gdGhlIGZ1dHVyZS4KLSAgICAgICAgYm9vbCBtX3Nob3VsZERl
bGV0ZU9iamVjdDsKLSAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBtX2NvbnRleHQ7Ci0g
ICAgfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENhbnZhc09i
amVjdF9oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkocmV2aXNpb24gNjQ2ODQpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBDYW52YXNPYmplY3Q7CisgICAgY2xhc3MgV2ViR0xP
YmplY3Q7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAgICAgY2xhc3MgSFRNTENhbnZh
c0VsZW1lbnQ7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCShyZXZpc2lv
biA2NDY4NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMQnVm
ZmVyOjpjcmUKIH0KIAogV2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCogY3R4KQotICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICA6IFdlYkdMT2JqZWN0KGN0
eCkKICAgICAsIG1fdGFyZ2V0KDApCiAgICAgLCBtX2J5dGVMZW5ndGgoMCkKICAgICAsIG1fbmV4
dEF2YWlsYWJsZUNhY2hlRW50cnkoMCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJ
KHJldmlzaW9uIDY0Njg0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYkdMQnVmZmVyX2gKICNk
ZWZpbmUgV2ViR0xCdWZmZXJfaAogCi0jaW5jbHVkZSAiQ2FudmFzT2JqZWN0LmgiCisjaW5jbHVk
ZSAiV2ViR0xPYmplY3QuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAotICAgIGNsYXNzIFdlYkdMQnVmZmVyIDogcHVibGljIENhbnZhc09iamVjdCB7Cisg
ICAgY2xhc3MgV2ViR0xCdWZmZXIgOiBwdWJsaWMgV2ViR0xPYmplY3QgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+V2ViR0xCdWZmZXIoKSB7IGRlbGV0ZU9iamVjdCgpOyB9CiAgICAg
ICAgIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCShyZXZp
c2lvbiA2NDY4NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVm
ZmVyPiBXZWJHTEZyYW1lYgogfQogCiBXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1lYnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQotICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAg
ICA6IFdlYkdMT2JqZWN0KGN0eCkKICAgICAsIG1fY29sb3JBdHRhY2htZW50KDApCiAgICAgLCBt
X2RlcHRoQXR0YWNobWVudCgwKQogICAgICwgbV9zdGVuY2lsQXR0YWNobWVudCgwKQpAQCAtNDcs
NyArNDcsNyBAQCBXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1lYnVmZmVyKFdlYkdMCiAgICAg
c2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlRnJhbWVidWZm
ZXIoKSk7CiB9CiAKLXZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudCh1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsIENhbnZhc09iamVjdCogYXR0YWNoZWRPYmplY3QpCit2b2lkIFdl
YkdMRnJhbWVidWZmZXI6OnNldEF0dGFjaG1lbnQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBX
ZWJHTE9iamVjdCogYXR0YWNoZWRPYmplY3QpCiB7CiAgICAgaWYgKCFvYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6b25C
aW5kKCkKICAgICBpbml0aWFsaXplUmVuZGVyYnVmZmVycygpOwogfQogCi12b2lkIFdlYkdMRnJh
bWVidWZmZXI6Om9uQXR0YWNoZWRPYmplY3RDaGFuZ2UoQ2FudmFzT2JqZWN0KiBvYmplY3QpCit2
b2lkIFdlYkdMRnJhbWVidWZmZXI6Om9uQXR0YWNoZWRPYmplY3RDaGFuZ2UoV2ViR0xPYmplY3Qq
IG9iamVjdCkKIHsKICAgICAvLyBDdXJyZW50bHkgb2JqZWN0ID09IDAgaXMgbm90IGNvbnNpZGVy
ZWQsIGJ1dCB0aGlzIG1pZ2h0IGNoYW5nZSBpZiB0aGUKLSAgICAvLyBsaWZlc3BhbiBvZiBDYW52
YXNPYmplY3QgY2hhbmdlcy4KKyAgICAvLyBsaWZlc3BhbiBvZiBXZWJHTE9iamVjdCBjaGFuZ2Vz
LgogICAgIGlmIChvYmplY3QKICAgICAgICAgJiYgKG9iamVjdCA9PSBtX2NvbG9yQXR0YWNobWVu
dCB8fCBvYmplY3QgPT0gbV9kZXB0aEF0dGFjaG1lbnQKICAgICAgICAgICAgIHx8IG9iamVjdCA9
PSBtX3N0ZW5jaWxBdHRhY2htZW50IHx8IG9iamVjdCA9PSBtX2RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQpKQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6X2RlbGV0ZU9i
amVjdChQbGEKICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZUZyYW1l
YnVmZmVyKG9iamVjdCk7CiB9CiAKLWJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aXNVbmluaXRpYWxp
emVkKENhbnZhc09iamVjdCogYXR0YWNoZWRPYmplY3QpCitib29sIFdlYkdMRnJhbWVidWZmZXI6
OmlzVW5pbml0aWFsaXplZChXZWJHTE9iamVjdCogYXR0YWNoZWRPYmplY3QpCiB7CiAgICAgaWYg
KGF0dGFjaGVkT2JqZWN0ICYmIGF0dGFjaGVkT2JqZWN0LT5vYmplY3QoKSAmJiBhdHRhY2hlZE9i
amVjdC0+aXNSZW5kZXJidWZmZXIoKQogICAgICAgICAmJiAhKHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
R0xSZW5kZXJidWZmZXIqPihhdHRhY2hlZE9iamVjdCkpLT5pc0luaXRpYWxpemVkKCkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjppc1VuaW5pdGlhbGl6ZWQoQwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpzZXRJbml0aWFs
aXplZChDYW52YXNPYmplY3QqIGF0dGFjaGVkT2JqZWN0KQordm9pZCBXZWJHTEZyYW1lYnVmZmVy
OjpzZXRJbml0aWFsaXplZChXZWJHTE9iamVjdCogYXR0YWNoZWRPYmplY3QpCiB7CiAgICAgaWYg
KGF0dGFjaGVkT2JqZWN0ICYmIGF0dGFjaGVkT2JqZWN0LT5vYmplY3QoKSAmJiBhdHRhY2hlZE9i
amVjdC0+aXNSZW5kZXJidWZmZXIoKSkKICAgICAgICAgKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xS
ZW5kZXJidWZmZXIqPihhdHRhY2hlZE9iamVjdCkpLT5zZXRJbml0aWFsaXplZCgpOwpJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgJKHJldmlzaW9uIDY0Njg0KQorKysg
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDE0ICsyNiwxNCBAQAogI2lmbmRlZiBXZWJHTEZyYW1lYnVmZmVyX2gKICNkZWZpbmUgV2Vi
R0xGcmFtZWJ1ZmZlcl9oCiAKLSNpbmNsdWRlICJDYW52YXNPYmplY3QuaCIKKyNpbmNsdWRlICJX
ZWJHTE9iamVjdC5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBXZWJH
TEZyYW1lYnVmZmVyIDogcHVibGljIENhbnZhc09iamVjdCB7CisgICAgY2xhc3MgV2ViR0xGcmFt
ZWJ1ZmZlciA6IHB1YmxpYyBXZWJHTE9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5XZWJHTEZyYW1lYnVmZmVyKCkgeyBkZWxldGVPYmplY3QoKTsgfQogICAgICAgICAKQEAg
LTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzU3RlbmNp
bEF0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gKG1fc3RlbmNpbEF0dGFjaG1lbnQgJiYgbV9zdGVu
Y2lsQXR0YWNobWVudC0+b2JqZWN0KCkpOyB9CiAgICAgICAgIGJvb2wgaXNEZXB0aFN0ZW5jaWxB
dHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIChtX2RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgJiYgbV9k
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5vYmplY3QoKSk7IH0KIAotICAgICAgICB2b2lkIHNldEF0
dGFjaG1lbnQodW5zaWduZWQgbG9uZywgQ2FudmFzT2JqZWN0Kik7CisgICAgICAgIHZvaWQgc2V0
QXR0YWNobWVudCh1bnNpZ25lZCBsb25nLCBXZWJHTE9iamVjdCopOwogCiAgICAgICAgIC8vIFRo
aXMgZnVuY3Rpb24gaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIGEgZnJhbWVidWZmZXIgaXMgYm91bmQu
CiAgICAgICAgIC8vIEJlY2F1c2UgcmVuZGVyYnVmZmVycyBhbmQgdGV4dHVyZXMgYXR0YWNoZWQg
dG8gdGhlIGZyYW1lYnVmZmVyIG1pZ2h0CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gY3VycmVudCBib3VuZCBmcmFtZWJ1ZmZlcjsgaWYgdGhlIG5ld2x5
IGNoYW5nZWQgb2JqZWN0IGlzIGF0dGFjaGVkCiAgICAgICAgIC8vIHRvIHRoZSBmcmFtZWJ1ZmZl
ciBhbmQgdGhlIGZyYW1lYnVmZmVyIGJlY29tZXMgY29tcGxldGUsIHdlIG5lZWQgdG8KICAgICAg
ICAgLy8gY2xlYXIgdW4taW5pdGlhbGl6ZWQgcmVuZGVyYnVmZmVycy4KLSAgICAgICAgdm9pZCBv
bkF0dGFjaGVkT2JqZWN0Q2hhbmdlKENhbnZhc09iamVjdCopOworICAgICAgICB2b2lkIG9uQXR0
YWNoZWRPYmplY3RDaGFuZ2UoV2ViR0xPYmplY3QqKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25n
IGdldENvbG9yQnVmZmVyRm9ybWF0KCk7CiAKQEAgLTY3LDE2ICs2NywxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGlzRnJhbWVidWZm
ZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgYm9vbCBpc1VuaW5pdGlhbGl6
ZWQoQ2FudmFzT2JqZWN0Kik7Ci0gICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6ZWQoQ2FudmFzT2Jq
ZWN0Kik7CisgICAgICAgIGJvb2wgaXNVbmluaXRpYWxpemVkKFdlYkdMT2JqZWN0Kik7CisgICAg
ICAgIHZvaWQgc2V0SW5pdGlhbGl6ZWQoV2ViR0xPYmplY3QqKTsKICAgICAgICAgdm9pZCBpbml0
aWFsaXplUmVuZGVyYnVmZmVycygpOwogCiAgICAgICAgIC8vIFRoZXNlIG9iamVjdHMgYXJlIGtl
cHQgYWxpdmUgYnkgdGhlIGdsb2JhbCB0YWJsZSBpbgogICAgICAgICAvLyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQuCi0gICAgICAgIENhbnZhc09iamVjdCogbV9jb2xvckF0dGFjaG1lbnQ7Ci0gICAg
ICAgIENhbnZhc09iamVjdCogbV9kZXB0aEF0dGFjaG1lbnQ7Ci0gICAgICAgIENhbnZhc09iamVj
dCogbV9zdGVuY2lsQXR0YWNobWVudDsKLSAgICAgICAgQ2FudmFzT2JqZWN0KiBtX2RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQ7CisgICAgICAgIFdlYkdMT2JqZWN0KiBtX2NvbG9yQXR0YWNobWVudDsK
KyAgICAgICAgV2ViR0xPYmplY3QqIG1fZGVwdGhBdHRhY2htZW50OworICAgICAgICBXZWJHTE9i
amVjdCogbV9zdGVuY2lsQXR0YWNobWVudDsKKyAgICAgICAgV2ViR0xPYmplY3QqIG1fZGVwdGhT
dGVuY2lsQXR0YWNobWVudDsKICAgICB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAJKHJldmlzaW9uIDY0NjgzKQkoZnJv
bSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5jcHA6NjQ2ODMpCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKDNEX0NBTlZB
UykKKworI2luY2x1ZGUgIkNhbnZhc09iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitDYW52YXNPYmplY3Q6OkNh
bnZhc09iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX29iamVj
dCgwKQorICAgICwgbV9zaG91bGREZWxldGVPYmplY3QodHJ1ZSkKKyAgICAsIG1fY29udGV4dChj
b250ZXh0KQoreworfQorCitDYW52YXNPYmplY3Q6On5DYW52YXNPYmplY3QoKQoreworICAgIGlm
IChtX2NvbnRleHQpCisgICAgICAgIG1fY29udGV4dC0+cmVtb3ZlT2JqZWN0KHRoaXMpOworfQor
Cit2b2lkIENhbnZhc09iamVjdDo6c2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0LCBi
b29sIHNob3VsZERlbGV0ZU9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0ID09IG1fb2JqZWN0KQor
ICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGRlbGV0ZU9iamVjdCgpOworICAgIG1fb2Jq
ZWN0ID0gb2JqZWN0OworICAgIG1fc2hvdWxkRGVsZXRlT2JqZWN0ID0gc2hvdWxkRGVsZXRlT2Jq
ZWN0OworfQorCit2b2lkIENhbnZhc09iamVjdDo6ZGVsZXRlT2JqZWN0KCkKK3sKKyAgICBpZiAo
bV9vYmplY3QpIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkRGVsZXRlT2JqZWN0KQorICAgICAgICAg
ICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgICAgICAgICAgICAgX2RlbGV0
ZU9iamVjdChtX29iamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIG1fb2JqZWN0ID0gMDsK
KyAgICB9CisgICAgbV9zaG91bGREZWxldGVPYmplY3QgPSB0cnVlOworfQorCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5j
cHAJKHJldmlzaW9uIDY0NjgzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI1ICsyNywyNSBAQAogCiAjaWYgRU5BQkxFKDNEX0NB
TlZBUykKIAotI2luY2x1ZGUgIkNhbnZhc09iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMT2JqZWN0
LmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKLUNhbnZhc09iamVjdDo6Q2FudmFzT2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCkKK1dlYkdMT2JqZWN0OjpXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQpCiAgICAgOiBtX29iamVjdCgwKQogICAgICwgbV9zaG91bGREZWxldGVP
YmplY3QodHJ1ZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogewogfQogCi1DYW52YXNPYmpl
Y3Q6On5DYW52YXNPYmplY3QoKQorV2ViR0xPYmplY3Q6On5XZWJHTE9iamVjdCgpCiB7CiAgICAg
aWYgKG1fY29udGV4dCkKICAgICAgICAgbV9jb250ZXh0LT5yZW1vdmVPYmplY3QodGhpcyk7CiB9
CiAKLXZvaWQgQ2FudmFzT2JqZWN0OjpzZXRPYmplY3QoUGxhdGZvcm0zRE9iamVjdCBvYmplY3Qs
IGJvb2wgc2hvdWxkRGVsZXRlT2JqZWN0KQordm9pZCBXZWJHTE9iamVjdDo6c2V0T2JqZWN0KFBs
YXRmb3JtM0RPYmplY3Qgb2JqZWN0LCBib29sIHNob3VsZERlbGV0ZU9iamVjdCkKIHsKICAgICBp
ZiAob2JqZWN0ID09IG1fb2JqZWN0KQogICAgICAgICByZXR1cm47CkBAIC01NSw3ICs1NSw3IEBA
IHZvaWQgQ2FudmFzT2JqZWN0OjpzZXRPYmplY3QoUGxhdGZvcm0zRE8KICAgICBtX3Nob3VsZERl
bGV0ZU9iamVjdCA9IHNob3VsZERlbGV0ZU9iamVjdDsKIH0KIAotdm9pZCBDYW52YXNPYmplY3Q6
OmRlbGV0ZU9iamVjdCgpCit2b2lkIFdlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QoKQogewogICAg
IGlmIChtX29iamVjdCkgewogICAgICAgICBpZiAobV9zaG91bGREZWxldGVPYmplY3QpCkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCShyZXZpc2lvbiA2NDY4MykJKGZyb20gV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuaDo2NDY4MykKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDYW52YXNPYmplY3RfaAorI2RlZmluZSBDYW52YXNPYmplY3RfaAorCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisg
ICAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OworICAgIAorICAgIGNsYXNzIENhbnZhc09i
amVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc09iamVjdD4geworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB+Q2FudmFzT2JqZWN0KCk7CisgICAgICAgIAorICAgICAgICBQbGF0Zm9y
bTNET2JqZWN0IG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9CisgICAgICAgIHZv
aWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3QsIGJvb2wgc2hvdWxkRGVsZXRlT2JqZWN0ID0g
dHJ1ZSk7CisgICAgICAgIHZvaWQgZGVsZXRlT2JqZWN0KCk7CisgICAgICAgIAorICAgICAgICB2
b2lkIGRldGFjaENvbnRleHQoKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGVPYmplY3Qo
KTsKKyAgICAgICAgICAgIG1fY29udGV4dCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0K
KworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZWJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyYW0oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgQ2FudmFzT2JqZWN0KFdl
YkdMUmVuZGVyaW5nQ29udGV4dCopOworICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVj
dChQbGF0Zm9ybTNET2JqZWN0KSA9IDA7CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgUGxh
dGZvcm0zRE9iamVjdCBtX29iamVjdDsKKyAgICAgICAgLy8gVGhlIHNob3VsZERlbGV0ZU9iamVj
dCBmbGFnIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgd3JhcHBlcgorICAgICAgICAvLyBvd25zIHRo
ZSB1bmRlcmx5aW5nIHJlc291cmNlIGFuZCBzaG91bGQgZGVsZXRlIGl0IHdoZW4gdGhlCisgICAg
ICAgIC8vIHdyYXBwZXIgaXMgdW5yZWZlcmVuY2VkIGZvciB0aGUgbGFzdCB0aW1lIGFuZCBkZWxl
dGVkLiBJdAorICAgICAgICAvLyBpcyBvbmx5IHNldCB0byBmYWxzZSBmb3IgY2VydGFpbiBvYmpl
Y3RzIHJldHVybmVkIGZyb20gZ2V0CisgICAgICAgIC8vIHF1ZXJpZXMuIEZJWE1FOiBzaG91bGQg
Y29uc2lkZXIgY2Fub25pY2FsaXppbmcgYWxsIG9mIHRoZXNlCisgICAgICAgIC8vIG9iamVjdHMg
aW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgYm9vbCBtX3Nob3VsZERlbGV0ZU9iamVjdDsKKyAgICAg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgfTsKKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENhbnZhc09iamVjdF9oCkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTE9iamVjdC5oCShyZXZpc2lvbiA2NDY4MykKKysrIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBDYW52YXNPYmplY3RfaAotI2RlZmluZSBDYW52
YXNPYmplY3RfaAorI2lmbmRlZiBXZWJHTE9iamVjdF9oCisjZGVmaW5lIFdlYkdMT2JqZWN0X2gK
IAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OwogICAgIAotICAgIGNsYXNzIENhbnZhc09iamVjdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPENhbnZhc09iamVjdD4geworICAgIGNsYXNzIFdlYkdMT2JqZWN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR0xPYmplY3Q+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1
YWwgfkNhbnZhc09iamVjdCgpOworICAgICAgICB2aXJ0dWFsIH5XZWJHTE9iamVjdCgpOwogICAg
ICAgICAKICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBvYmplY3QoKSBjb25zdCB7IHJldHVybiBt
X29iamVjdDsgfQogICAgICAgICB2b2lkIHNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0LCBib29s
IHNob3VsZERlbGV0ZU9iamVjdCA9IHRydWUpOwpAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RleHR1cmUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBDYW52YXNPYmplY3QoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Kik7CisgICAgICAgIFdlYkdMT2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2Jq
ZWN0KSA9IDA7CiAgICAgCiAgICAgcHJpdmF0ZToKQEAgLTc2LDQgKzc2LDQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gQ2Fu
dmFzT2JqZWN0X2gKKyNlbmRpZiAvLyBXZWJHTE9iamVjdF9oCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFByb2dyYW0uY3BwCShyZXZpc2lvbiA2NDY4NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xQcm9ncmFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBQYXNz
UmVmUHRyPFdlYkdMUHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjCiB9CiAKIFdlYkdMUHJvZ3JhbTo6
V2ViR0xQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQotICAgIDogQ2FudmFzT2Jq
ZWN0KGN0eCkKKyAgICA6IFdlYkdMT2JqZWN0KGN0eCkKICAgICAsIG1fbGlua0ZhaWx1cmUoZmFs
c2UpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3Jl
YXRlUHJvZ3JhbSgpKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaAkocmV2aXNp
b24gNjQ2ODQpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYkdMUHJvZ3JhbV9oCiAjZGVmaW5l
IFdlYkdMUHJvZ3JhbV9oCiAKLSNpbmNsdWRlICJDYW52YXNPYmplY3QuaCIKKyNpbmNsdWRlICJX
ZWJHTE9iamVjdC5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi0gICAgY2xhc3MgV2ViR0xQcm9ncmFtIDogcHVibGljIENhbnZhc09iamVjdCB7Cisg
ICAgY2xhc3MgV2ViR0xQcm9ncmFtIDogcHVibGljIFdlYkdMT2JqZWN0IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgfldlYkdMUHJvZ3JhbSgpIHsgZGVsZXRlT2JqZWN0KCk7IH0KICAg
ICAgICAgCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAko
cmV2aXNpb24gNjQ2ODQpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPFdlYkdMUmVu
ZGVyYnVmZmVyPiBXZWJHTFJlbmRlCiB9CiAKIFdlYkdMUmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKLSAgICA6IENhbnZhc09iamVjdChj
dHgpCisgICAgOiBXZWJHTE9iamVjdChjdHgpCiAgICAgLCBtX2ludGVybmFsRm9ybWF0KEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBNCkKICAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCiB7CkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCShyZXZpc2lvbiA2NDY4NCkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTQgKzI2LDE0IEBACiAjaWZuZGVmIFdlYkdMUmVuZGVyYnVmZmVyX2gKICNkZWZp
bmUgV2ViR0xSZW5kZXJidWZmZXJfaAogCi0jaW5jbHVkZSAiQ2FudmFzT2JqZWN0LmgiCisjaW5j
bHVkZSAiV2ViR0xPYmplY3QuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotICAg
IGNsYXNzIFdlYkdMUmVuZGVyYnVmZmVyIDogcHVibGljIENhbnZhc09iamVjdCB7CisgICAgY2xh
c3MgV2ViR0xSZW5kZXJidWZmZXIgOiBwdWJsaWMgV2ViR0xPYmplY3QgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJidWZmZXIoKSB7IGRlbGV0ZU9iamVjdCgpOyB9
CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gNjQ2ODQpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIFBsYXRmb3JtM0RPYmplY3Qgb2Jq
ZWN0T3JaZXJvKENhbnZhc09iamVjdCogb2JqZWN0KQorc3RhdGljIGlubGluZSBQbGF0Zm9ybTNE
T2JqZWN0IG9iamVjdE9yWmVybyhXZWJHTE9iamVjdCogb2JqZWN0KQogewogICAgIHJldHVybiBv
YmplY3QgPyBvYmplY3QtPm9iamVjdCgpIDogMDsKIH0KQEAgLTg5Niw3ICs4OTYsNyBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVSZW5kCiAgICAgcmV0dXJuIG51bUVsZW1l
bnRzUmVxdWlyZWQgPD0gc21hbGxlc3ROdW1FbGVtZW50czsKIH0KIAotYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZhbGlkYXRlV2ViR0xPYmplY3QoQ2FudmFzT2JqZWN0KiBvYmplY3QpCiti
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVXZWJHTE9iamVjdChXZWJHTE9iamVj
dCogb2JqZWN0KQogewogICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwpAQCAtMzA4
MywxMiArMzA4MywxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlld3BvcnQobG9u
CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnJlbW92ZU9iamVjdChDYW52YXNPYmplY3QqIG9iamVjdCkKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW1vdmVPYmplY3QoV2ViR0xPYmplY3QqIG9iamVjdCkK
IHsKICAgICBtX2NhbnZhc09iamVjdHMucmVtb3ZlKG9iamVjdCk7CiB9CiAKLXZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjphZGRPYmplY3QoQ2FudmFzT2JqZWN0KiBvYmplY3QpCit2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6YWRkT2JqZWN0KFdlYkdMT2JqZWN0KiBvYmplY3QpCiB7CiAg
ICAgcmVtb3ZlT2JqZWN0KG9iamVjdCk7CiAgICAgbV9jYW52YXNPYmplY3RzLmFkZChvYmplY3Qp
OwpAQCAtMzA5Niw4ICszMDk2LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFkZE9i
amVjdChDYQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVtb3ZlQWxs
T2JqZWN0cygpCiB7Ci0gICAgSGFzaFNldDxSZWZQdHI8Q2FudmFzT2JqZWN0PiA+OjppdGVyYXRv
ciBwZW5kID0gbV9jYW52YXNPYmplY3RzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8
Q2FudmFzT2JqZWN0PiA+OjppdGVyYXRvciBpdCA9IG1fY2FudmFzT2JqZWN0cy5iZWdpbigpOyBp
dCAhPSBwZW5kOyArK2l0KQorICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkdMT2JqZWN0PiA+OjppdGVy
YXRvciBwZW5kID0gbV9jYW52YXNPYmplY3RzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxSZWZQ
dHI8V2ViR0xPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmplY3RzLmJlZ2luKCk7
IGl0ICE9IHBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5kZXRhY2hDb250ZXh0KCk7CiAgICAg
ICAgIAogICAgIG1fY2FudmFzT2JqZWN0cy5jbGVhcigpOwpAQCAtMzEwNyw4ICszMTA3LDggQEAg
V2ViR0xUZXh0dXJlKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZpbgogewogICAgIGlmICghb2Jq
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBIYXNoU2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+ID46
Oml0ZXJhdG9yIHBlbmQgPSBtX2NhbnZhc09iamVjdHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0
PFJlZlB0cjxDYW52YXNPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmplY3RzLmJl
Z2luKCk7IGl0ICE9IHBlbmQ7ICsraXQpIHsKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJHTE9iamVj
dD4gPjo6aXRlcmF0b3IgcGVuZCA9IG1fY2FudmFzT2JqZWN0cy5lbmQoKTsKKyAgICBmb3IgKEhh
c2hTZXQ8UmVmUHRyPFdlYkdMT2JqZWN0PiA+OjppdGVyYXRvciBpdCA9IG1fY2FudmFzT2JqZWN0
cy5iZWdpbigpOyBpdCAhPSBwZW5kOyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0KS0+aXNUZXh0
dXJlKCkgJiYgKCppdCktPm9iamVjdCgpID09IG9iaikKICAgICAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdlYkdMVGV4dHVyZSo+KCgqaXQpLmdldCgpKTsKICAgICB9CkBAIC0zMTE5
LDggKzMxMTksOCBAQCBXZWJHTFJlbmRlcmJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0CiB7
CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiAwOwotICAgIEhhc2hTZXQ8UmVmUHRyPENh
bnZhc09iamVjdD4gPjo6aXRlcmF0b3IgcGVuZCA9IG1fY2FudmFzT2JqZWN0cy5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPjo6aXRlcmF0b3IgaXQgPSBtX2Nh
bnZhc09iamVjdHMuYmVnaW4oKTsgaXQgIT0gcGVuZDsgKytpdCkgeworICAgIEhhc2hTZXQ8UmVm
UHRyPFdlYkdMT2JqZWN0PiA+OjppdGVyYXRvciBwZW5kID0gbV9jYW52YXNPYmplY3RzLmVuZCgp
OworICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2ViR0xPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0g
bV9jYW52YXNPYmplY3RzLmJlZ2luKCk7IGl0ICE9IHBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYg
KCgqaXQpLT5pc1JlbmRlcmJ1ZmZlcigpICYmICgqaXQpLT5vYmplY3QoKSA9PSBvYmopCiAgICAg
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJHTFJlbmRlcmJ1ZmZlcio+KCgqaXQp
LmdldCgpKTsKICAgICB9CkBAIC0zMTMxLDggKzMxMzEsOCBAQCBXZWJHTEJ1ZmZlciogV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpmaW5kCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiAw
OwotICAgIEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPjo6aXRlcmF0b3IgcGVuZCA9IG1f
Y2FudmFzT2JqZWN0cy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVj
dD4gPjo6aXRlcmF0b3IgaXQgPSBtX2NhbnZhc09iamVjdHMuYmVnaW4oKTsgaXQgIT0gcGVuZDsg
KytpdCkgeworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkdMT2JqZWN0PiA+OjppdGVyYXRvciBwZW5k
ID0gbV9jYW52YXNPYmplY3RzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2ViR0xP
YmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmplY3RzLmJlZ2luKCk7IGl0ICE9IHBl
bmQ7ICsraXQpIHsKICAgICAgICAgaWYgKCgqaXQpLT5pc0J1ZmZlcigpICYmICgqaXQpLT5vYmpl
Y3QoKSA9PSBvYmopCiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJHTEJ1
ZmZlcio+KCgqaXQpLmdldCgpKTsKICAgICB9CkBAIC0zMTQzLDggKzMxNDMsOCBAQCBXZWJHTFNo
YWRlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmaW5kCiB7CiAgICAgaWYgKCFvYmopCiAgICAg
ICAgIHJldHVybiAwOwotICAgIEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPjo6aXRlcmF0
b3IgcGVuZCA9IG1fY2FudmFzT2JqZWN0cy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRy
PENhbnZhc09iamVjdD4gPjo6aXRlcmF0b3IgaXQgPSBtX2NhbnZhc09iamVjdHMuYmVnaW4oKTsg
aXQgIT0gcGVuZDsgKytpdCkgeworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkdMT2JqZWN0PiA+Ojpp
dGVyYXRvciBwZW5kID0gbV9jYW52YXNPYmplY3RzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxS
ZWZQdHI8V2ViR0xPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmplY3RzLmJlZ2lu
KCk7IGl0ICE9IHBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKCgqaXQpLT5pc1NoYWRlcigpICYm
ICgqaXQpLT5vYmplY3QoKSA9PSBvYmopCiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXZWJHTFNoYWRlcio+KCgqaXQpLmdldCgpKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDY0Njg0KQorKysg
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBXZWJHTEFjdGl2ZUluZm87CiBjbGFzcyBXZWJHTEJ1
ZmZlcjsKIGNsYXNzIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTEZyYW1lYnVm
ZmVyOwotY2xhc3MgQ2FudmFzT2JqZWN0OworY2xhc3MgV2ViR0xPYmplY3Q7CiBjbGFzcyBXZWJH
TFByb2dyYW07CiBjbGFzcyBXZWJHTFJlbmRlcmJ1ZmZlcjsKIGNsYXNzIFdlYkdMU2hhZGVyOwpA
QCAtMzE1LDE0ICszMTUsMTQgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICB2b2lk
IGJlZ2luUGFpbnQoKTsKICAgICAgICAgdm9pZCBlbmRQYWludCgpOwogICAgICAgICAKLSAgICAg
ICAgdm9pZCByZW1vdmVPYmplY3QoQ2FudmFzT2JqZWN0Kik7CisgICAgICAgIHZvaWQgcmVtb3Zl
T2JqZWN0KFdlYkdMT2JqZWN0Kik7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBDYW52YXNPYmplY3Q7CisgICAgICAgIGZyaWVuZCBjbGFzcyBXZWJHTE9iamVj
dDsKIAogICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQ
YXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CiAKLSAgICAgICAgdm9pZCBhZGRPYmplY3Qo
Q2FudmFzT2JqZWN0Kik7CisgICAgICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdMT2JqZWN0Kik7CiAg
ICAgICAgIHZvaWQgZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpOwogICAgICAgICBXZWJHTFRl
eHR1cmUqIGZpbmRUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QpOwogICAgICAgICBXZWJHTFJlbmRl
cmJ1ZmZlciogZmluZFJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKQEAgLTM0OCwxNCAr
MzQ4LDE0IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgYm9vbCB2YWxpZGF0ZUlu
ZGV4QXJyYXlQcmVjaXNlKHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxvbmcgdHlwZSwg
bG9uZyBvZmZzZXQsIGxvbmcmIG51bUVsZW1lbnRzUmVxdWlyZWQpOwogICAgICAgICBib29sIHZh
bGlkYXRlUmVuZGVyaW5nU3RhdGUobG9uZyBudW1FbGVtZW50cyk7CiAKLSAgICAgICAgYm9vbCB2
YWxpZGF0ZVdlYkdMT2JqZWN0KENhbnZhc09iamVjdCogb2JqZWN0KTsKKyAgICAgICAgYm9vbCB2
YWxpZGF0ZVdlYkdMT2JqZWN0KFdlYkdMT2JqZWN0KiBvYmplY3QpOwogCiAgICAgICAgIE93blB0
cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogICAgICAgICBib29sIG1fbmVlZHNVcGRh
dGU7CiAgICAgICAgIGJvb2wgbV9tYXJrZWRDYW52YXNEaXJ0eTsKICAgICAgICAgLy8gRklYTUU6
IEkgdGhpbmsgdGhpcyBpcyBicm9rZW4gLS0gaXQgZG9lcyBub3QgaW5jcmVtZW50IGFueQogICAg
ICAgICAvLyByZWZlcmVuY2UgY291bnRzLCBzbyBtYXkgcmVmZXIgdG8gZGVzdHJveWVkIG9iamVj
dHMuCi0gICAgICAgIEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPiBtX2NhbnZhc09iamVj
dHM7CisgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkdMT2JqZWN0PiA+IG1fY2FudmFzT2JqZWN0
czsKICAgICAgICAgCiAgICAgICAgIC8vIExpc3Qgb2YgYm91bmQgVkJPJ3MuIFVzZWQgdG8gbWFp
bnRhaW4gaW5mbyBhYm91dCBzaXplcyBmb3IgQVJSQVlfQlVGRkVSIGFuZCBzdG9yZWQgdmFsdWVz
IGZvciBFTEVNRU5UX0FSUkFZX0JVRkZFUgogICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IG1f
Ym91bmRBcnJheUJ1ZmZlcjsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCShy
ZXZpc2lvbiA2NDY4NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IFdl
YkdMU2hhZGVyOjpjcmUKIH0KIAogV2ViR0xTaGFkZXI6OldlYkdMU2hhZGVyKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY3R4LCBHcmFwaGljc0NvbnRleHQzRDo6V2ViR0xFbnVtVHlwZSB0eXBlKQot
ICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICA6IFdlYkdMT2JqZWN0KGN0eCkKICAgICAsIG1f
dHlwZSh0eXBlKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNE
KCktPmNyZWF0ZVNoYWRlcih0eXBlKSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U2hhZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5o
CShyZXZpc2lvbiA2NDY4NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDE0IEBACiAjaWZuZGVmIFdlYkdMU2hhZGVyX2gK
ICNkZWZpbmUgV2ViR0xTaGFkZXJfaAogCi0jaW5jbHVkZSAiQ2FudmFzT2JqZWN0LmgiCisjaW5j
bHVkZSAiV2ViR0xPYmplY3QuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotICAg
IGNsYXNzIFdlYkdMU2hhZGVyIDogcHVibGljIENhbnZhc09iamVjdCB7CisgICAgY2xhc3MgV2Vi
R0xTaGFkZXIgOiBwdWJsaWMgV2ViR0xPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB+V2ViR0xTaGFkZXIoKSB7IGRlbGV0ZU9iamVjdCgpOyB9CiAgICAgICAgIApJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAkocmV2aXNpb24gNjQ2ODQpCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IFdlYkdMVGV4dHVyZTo6YwogfQogCiBX
ZWJHTFRleHR1cmU6OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKLSAg
ICA6IENhbnZhc09iamVjdChjdHgpCisgICAgOiBXZWJHTE9iamVjdChjdHgpCiAgICAgLCBjdWJl
TWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX3RhcmdldCgwKQogICAgICwg
bV9taW5GaWx0ZXIoR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1RfTUlQTUFQX0xJTkVBUikKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAkocmV2aXNpb24gNjQ2ODQpCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaWZuZGVmIFdlYkdMVGV4dHVyZV9oCiAjZGVmaW5lIFdlYkdMVGV4dHVyZV9oCiAK
LSNpbmNsdWRlICJDYW52YXNPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJHTE9iamVjdC5oIgogCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi0gICAgY2xhc3Mg
V2ViR0xUZXh0dXJlIDogcHVibGljIENhbnZhc09iamVjdCB7CisgICAgY2xhc3MgV2ViR0xUZXh0
dXJlIDogcHVibGljIFdlYkdMT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
fldlYkdMVGV4dHVyZSgpIHsgZGVsZXRlT2JqZWN0KCk7IH0KICAgICAgICAgCkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oCShyZXZpc2lvbiA2NDY4NCkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBXZWJHTFVuaWZvcm1Mb2NhdGlvbl9oCiAj
ZGVmaW5lIFdlYkdMVW5pZm9ybUxvY2F0aW9uX2gKIAotI2luY2x1ZGUgIkNhbnZhc09iamVjdC5o
IgorI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCiAK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHJldmlzaW9uIDY0
Njg0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSAiQ2FudmFz
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKICNpbmNsdWRlICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dDNEUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAJKHJldmlzaW9uIDY0Njg0KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAK
ICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlICJDYW52YXNPYmplY3QuaCIK
KyNpbmNsdWRlICJXZWJHTE9iamVjdC5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCIKICNpbmNsdWRlICJGbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIK
</data>
<flag name="review"
          id="51870"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="51871"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>