<?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>97716</bug_id>
          
          <creation_ts>2012-09-26 12:10:59 -0700</creation_ts>
          <short_desc>Generalize JSGlobalThis as JSProxy</short_desc>
          <delta_ts>2012-09-26 14:09:36 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>bdakin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>728845</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-26 12:10:59 -0700</bug_when>
    <thetext>And move proxying functionality up from the window shell into JSProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728852</commentid>
    <comment_count>1</comment_count>
      <attachid>165851</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-26 12:18:52 -0700</bug_when>
    <thetext>Created attachment 165851
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728873</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-26 12:39:16 -0700</bug_when>
    <thetext>Fixed in r129685.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728924</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-26 13:28:30 -0700</bug_when>
    <thetext>Looks like this change broke the Windows build. Here&apos;s some of the builder output:

12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static class JSC::JSObject * __cdecl JSC::JSGlobalObject::toThisObject(class JSC::JSCell *,class JSC::ExecState *)&quot; (?toThisObject@JSGlobalObject@JSC@@KAPAVJSObject@2@PAVJSCell@2@PAVExecState@2@@Z)
12&gt;WebCore.lib(DerivedSources.obj) : error LNK2001: unresolved external symbol &quot;protected: static class JSC::JSObject * __cdecl JSC::JSGlobalObject::toThisObject(class JSC::JSCell *,class JSC::ExecState *)&quot; (?toThisObject@JSGlobalObject@JSC@@KAPAVJSObject@2@PAVJSCell@2@PAVExecState@2@@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static bool __cdecl JSC::JSProxy::getOwnPropertyDescriptor(class JSC::JSObject *,class JSC::ExecState *,class JSC::PropertyName,class JSC::PropertyDescriptor &amp;)&quot; (?getOwnPropertyDescriptor@JSProxy@JSC@@KA_NPAVJSObject@2@PAVExecState@2@VPropertyName@2@AAVPropertyDescriptor@2@@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static bool __cdecl JSC::JSProxy::defineOwnProperty(class JSC::JSObject *,class JSC::ExecState *,class JSC::PropertyName,class JSC::PropertyDescriptor &amp;,bool)&quot; (?defineOwnProperty@JSProxy@JSC@@KA_NPAVJSObject@2@PAVExecState@2@VPropertyName@2@AAVPropertyDescriptor@2@_N@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static void __cdecl JSC::JSProxy::putDirectVirtual(class JSC::JSObject *,class JSC::ExecState *,class JSC::PropertyName,class JSC::JSValue,unsigned int)&quot; (?putDirectVirtual@JSProxy@JSC@@KAXPAVJSObject@2@PAVExecState@2@VPropertyName@2@VJSValue@2@I@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static class WTF::String __cdecl JSC::JSProxy::className(class JSC::JSObject const *)&quot; (?className@JSProxy@JSC@@KA?AVString@WTF@@PBVJSObject@2@@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static void __cdecl JSC::JSProxy::getPropertyNames(class JSC::JSObject *,class JSC::ExecState *,class JSC::PropertyNameArray &amp;,enum JSC::EnumerationMode)&quot; (?getPropertyNames@JSProxy@JSC@@KAXPAVJSObject@2@PAVExecState@2@AAVPropertyNameArray@2@W4EnumerationMode@2@@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static void __cdecl JSC::JSProxy::getOwnPropertyNames(class JSC::JSObject *,class JSC::ExecState *,class JSC::PropertyNameArray &amp;,enum JSC::EnumerationMode)&quot; (?getOwnPropertyNames@JSProxy@JSC@@KAXPAVJSObject@2@PAVExecState@2@AAVPropertyNameArray@2@W4EnumerationMode@2@@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static bool __cdecl JSC::JSProxy::getOwnPropertySlotByIndex(class JSC::JSCell *,class JSC::ExecState *,unsigned int,class JSC::PropertySlot &amp;)&quot; (?getOwnPropertySlotByIndex@JSProxy@JSC@@KA_NPAVJSCell@2@PAVExecState@2@IAAVPropertySlot@2@@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static bool __cdecl JSC::JSProxy::getOwnPropertySlot(class JSC::JSCell *,class JSC::ExecState *,class JSC::PropertyName,class JSC::PropertySlot &amp;)&quot; (?getOwnPropertySlot@JSProxy@JSC@@KA_NPAVJSCell@2@PAVExecState@2@VPropertyName@2@AAVPropertySlot@2@@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static bool __cdecl JSC::JSProxy::deletePropertyByIndex(class JSC::JSCell *,class JSC::ExecState *,unsigned int)&quot; (?deletePropertyByIndex@JSProxy@JSC@@KA_NPAVJSCell@2@PAVExecState@2@I@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static bool __cdecl JSC::JSProxy::deleteProperty(class JSC::JSCell *,class JSC::ExecState *,class JSC::PropertyName)&quot; (?deleteProperty@JSProxy@JSC@@KA_NPAVJSCell@2@PAVExecState@2@VPropertyName@2@@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static void __cdecl JSC::JSProxy::putByIndex(class JSC::JSCell *,class JSC::ExecState *,unsigned int,class JSC::JSValue,bool)&quot; (?putByIndex@JSProxy@JSC@@KAXPAVJSCell@2@PAVExecState@2@IVJSValue@2@_N@Z)
12&gt;WebCore.lib(JSBindingsAllInOne.obj) : error LNK2001: unresolved external symbol &quot;protected: static void __cdecl JSC::JSProxy::put(class JSC::JSCell *,class JSC::ExecState *,class JSC::PropertyName,class JSC::JSValue,class JSC::PutPropertySlot &amp;)&quot; (?put@JSProxy@JSC@@KAXPAVJSCell@2@PAVExecState@2@VPropertyName@2@VJSValue@2@AAVPutPropertySlot@2@@Z)
12&gt;C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\bin\WebKit.dll : fatal error LNK1120: 13 unresolved externals
12&gt;Build log was saved at &quot;file://C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\obj\WebKit\BuildLog.htm&quot;
12&gt;WebKit - 15 error(s), 1 warning(s)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728950</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-26 13:57:38 -0700</bug_when>
    <thetext>Thanks Beth! - Speculative Windows build fix in r129702.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728961</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-26 14:09:36 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Thanks Beth! - Speculative Windows build fix in r129702.

Yay! Looks like this fixed the release build. The Debug build is still busted, but I don&apos;t think its your fault since it&apos;s failing in RenderTableCell.cpp

Thanks, Gavin!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165851</attachid>
            <date>2012-09-26 12:18:52 -0700</date>
            <delta_ts>2012-09-26 12:20:30 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>97716.patch</filename>
            <type>text/plain</type>
            <size>57235</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5Njc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDEyLTA5LTI2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBHZW5lcmFsaXplIEpTR2xvYmFsVGhpcyBhcyBKU1Byb3h5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzcxNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYWxpemUgSlNHbG9iYWxU
aGlzIGFzIEpTUHJveHkgYW5kIG1vdmUgcHJveHlpbmcgZnVuY3Rpb25hbGl0eSB1cCBmcm9tIHRo
ZSB3aW5kb3cgc2hlbGwgaW50byBKU1Byb3h5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dG9UaGlzT2JqZWN0KToKKyAgICAgICAg
ICAgIC0gSG9pc3QgdG9UaGlzT2JqZWN0IGZyb20gV2ViQ29yZS4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAgICAgLSByZW1vdmVk
IGluY2x1ZGUuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICAgICAtIEpTR2xvYmFsVGhpcyAtPiBKU09iamVjdAorICAgICAgICAoSlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAgICAgLSBIb2lzdCB0b1RoaXNPYmplY3QgZnJvbSBXZWJDb3Jl
LgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxUaGlzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsVGhpcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3QuY3BwOgorICAgICAgICAgICAgLSByZW1vdmVkIGluY2x1ZGUuCisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6aXNQcm94eSk6CisgICAgICAgICAgICAtIGlzR2xvYmFsVGhpcyAtPiBpc1Byb3h5Cisg
ICAgICAgICAgICAtIEdsb2JhbFRoaXNUeXBlIC0+IFByb3h5VHlwZQorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm94eS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsVGhpcy5jcHAuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU1Byb3h5
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6c2V0VGFyZ2V0KToKKyAg
ICAgICAgKEpTQzo6SlNQcm94eTo6Y2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpT
UHJveHk6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpwdXREaXJlY3RWaXJ0
dWFsKToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTUHJveHk6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmdldFByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgICAgIC0gQ2xhc3MgY3JldGFlZCBmcm9tIEpTR2xvYmFsVGhpcywgSlNET01XaW5k
b3dTaGVsbC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmguCisgICAgICAgIChKU0M6OkpT
UHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU1Byb3h5KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6dGFyZ2V0KToKKyAg
ICAgICAgKEpTQzo6SlNQcm94eTo6SlNQcm94eSk6CisgICAgICAgICAgICAtIENsYXNzIGNyZXRh
ZWQgZnJvbSBKU0dsb2JhbFRoaXMsIEpTRE9NV2luZG93U2hlbGwuCisgICAgICAgICogcnVudGlt
ZS9KU1R5cGUuaDoKKyAgICAgICAgICAgIC0gR2xvYmFsVGhpc1R5cGUgLT4gUHJveHlUeXBlCisK
IDIwMTItMDktMjYgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGFiaWxpdHkgZm9yIEpTQXJyYXk6OnVuc2hpZnRDb3VudCB0byB1bnNoaWZ0IGluIG1p
ZGRsZSBvZiBhbiBhcnJheQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTI5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCi0gICAg
cnVudGltZS9KU0dsb2JhbFRoaXMuY3BwCisgICAgcnVudGltZS9KU1Byb3h5LmNwcAogICAgIHJ1
bnRpbWUvSlNMb2NrLmNwcAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKICAgICBydW50
aW1lL0pTT2JqZWN0LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDEyOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsOCArNTQ0LDggQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbFRoaXMuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bFRoaXMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMb2NrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5P
YmplY3QuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjk1
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDcgKzIwMyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcCBcCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIFwKLSAgICBydW50aW1lL0pTR2xvYmFsVGhpcy5jcHAg
XAorICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAgXAogICAgIHJ1bnRpbWUvSlNMb2NrLmNwcCBcCiAg
ICAgcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU09iamVjdC5jcHAg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYJKHJldmlzaW9uIDEyOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTQsNyArMzE0LDcgQEAgRVhQT1JUUwogICAgID9zZXRTZXR0ZXJAUHJv
cGVydHlEZXNjcmlwdG9yQEpTQ0BAUUFFWFZKU1ZhbHVlQDJAQFoKICAgICA/c2V0VG9DdXJyZW50
TG9jYWxUaW1lQEdyZWdvcmlhbkRhdGVUaW1lQFdURkBAUUFFWFhaCiAgICAgP3NldFVuZGVmaW5l
ZEBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYWFoKLSAgICA/c2V0VW53cmFwcGVkT2JqZWN0
QEpTR2xvYmFsVGhpc0BKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBQQVZKU0dsb2JhbE9iamVj
dEAyQEBaCisgICAgP3NldFRhcmdldEBKU1Byb3h5QEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAy
QFBBVkpTR2xvYmFsT2JqZWN0QDJAQFoKICAgICA/c2V0VXBTdGF0aWNGdW5jdGlvblNsb3RASlND
QEBZQV9OUEFWRXhlY1N0YXRlQDFAUEJWSGFzaEVudHJ5QDFAUEFWSlNPYmplY3RAMUBWUHJvcGVy
dHlOYW1lQDFAQUFWUHJvcGVydHlTbG90QDFAQFoKICAgICA/c2V0V3JpdGFibGVAUHJvcGVydHlE
ZXNjcmlwdG9yQEpTQ0BAUUFFWF9OQFoKICAgICA/c2V0dGVyQFByb3BlcnR5RGVzY3JpcHRvckBK
U0NAQFFCRT9BVkpTVmFsdWVAMkBYWgpAQCAtMzY4LDcgKzM2OCw3IEBAIEVYUE9SVFMKICAgICA/
dW5wcm90ZWN0QEhlYXBASlNDQEBRQUVfTlZKU1ZhbHVlQDJAQFoKICAgICA/dmFsaWRhdGVAU2xv
dFZpc2l0b3JASlNDQEBDQVhQQVZKU0NlbGxAMkBAWgogICAgID92aXNpdENoaWxkcmVuQEpTR2xv
YmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JAMkBAWgotICAgID92
aXNpdENoaWxkcmVuQEpTR2xvYmFsVGhpc0BKU0NAQEtBWFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNp
dG9yQDJAQFoKKyAgICA/dmlzaXRDaGlsZHJlbkBKU1Byb3h5QEpTQ0BAS0FYUEFWSlNDZWxsQDJA
QUFWU2xvdFZpc2l0b3JAMkBAWgogICAgID92aXNpdENoaWxkcmVuQEpTT2JqZWN0QEpTQ0BAU0FY
UEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JAMkBAWgogICAgID93YWl0QFRocmVhZENvbmRpdGlv
bkBXVEZAQFFBRVhBQVZNdXRleEAyQEBaCiAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdU
RkBAWUFISUBaCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTI5NTkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTg3NCwxMSArODc0LDExIEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNH
bG9iYWxUaGlzLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNQcm94eS5j
cHAiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XHJ1bnRpbWVcSlNHbG9iYWxUaGlzLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1l
XEpTUHJveHkuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyOTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC00MzksMTAgKzQzOSwxMSBAQAogCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyog
TWFjcm9Bc3NlbWJsZXJYODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDE2
MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0
NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk4NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA0RjUwMzE0M0NFMUMxMDBCMjk1
RjUgLyogSlNHbG9iYWxUaGlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRjY0MkExNDhE
QjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJl
c3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYx
MkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYxNThBQjMxNTVDOEI0MDAwQjQ1QzlD
IC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MjU1M0QxMTYx
MzZEQTkwMDlGMTdEMCAvKiBKU1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjU1M0NFMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5LmNw
cCAqLzsgfTsKKwkJODYyNTUzRDIxNjEzNkUxQTAwOUYxN0QwIC8qIEpTUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjU1M0NGMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODYzQjIzRTAwRkM2MTE4OTAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2M0M2RDlDMTUy
MTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNDNkQ5ODE1MjExMTEyMDA1ODVFNEUg
LyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICovOyB9OwogCQk4NjQyQzUxMDE1MUMwNkE5MDA0
NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Rjc1RUZCMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBD
YWNoZWRSZXN1bHQuY3BwICovOyB9OwpAQCAtNjgwLDcgKzY4MSw2IEBACiAJCUJDMzA0NjA3MEUx
RjQ5N0YwMDMyMzJDRiAvKiBFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMzMDQ2MDYwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMTM1NjQwRjMw
MkZBMzAwM0RGRDNBIC8qIERlYnVnZ2VyQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMTM1NjIwRjMwMkZBMzAwM0RGRDNBIC8qIERl
YnVnZ2VyQWN0aXZhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDMzEzNTY1MEYzMDJGQTMwMDNERkQzQSAvKiBEZWJ1Z2dlckFjdGl2YXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMz
MTM1NjMwRjMwMkZBMzAwM0RGRDNBIC8qIERlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgKi87IH07Ci0J
CUJDM0M0Q0EwMTQ1OEY1NDUwMDI1RkI2MiAvKiBKU0dsb2JhbFRoaXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQzRDOUYxNDU4RjU0NTAwMjVG
QjYyIC8qIEpTR2xvYmFsVGhpcy5jcHAgKi87IH07CiAJCUJDNkFBQUU1MEUxRjQyNjUwMEFEODdE
OCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNkFBQUU0MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzc1NkZDOTBFMjAzMUIy
MDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzU2RkM3MEUyMDMxQjIwMERFN0QxMiAvKiBK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oICovOyB9OwogCQlCQzg3Q0RCOTEwNzEyQUQ0MDAwNjE0
Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBKU09OT2JqZWN0Lmx1dC5o
ICovOyB9OwpAQCAtMTIwMCw5ICsxMjAwLDEwIEBACiAJCTg2MDNDRUYyMTRDNzU0NjQwMEFFNTlF
MyAvKiBDb2RlUHJvZmlsaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvZGVQcm9maWxpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAz
Q0VGMzE0Qzc1NDY0MDBBRTU5RTMgLyogQ29kZVByb2ZpbGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2RlUHJvZmlsaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2hhbmdl
TG9nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NjA0RjUwMzE0M0NFMUMxMDBCMjk1
RjUgLyogSlNHbG9iYWxUaGlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
R2xvYmFsVGhpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjEyRTRDQjE1MjI5
MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWF0Y2hSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYxNThB
QjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODYyNTUzQ0UxNjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg2MjU1M0NGMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTgxNTIxMTExMjAwNTg1
RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgcGF0aCA9IHlhcnIvWWFyckNh
bm9uaWNhbGl6ZVVDUzIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNDNkQ5
OTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckNhbm9uaWNhbGl6ZVVDUzIuaDsgcGF0aCA9IHlhcnIv
WWFyckNhbm9uaWNhbGl6ZVVDUzIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0
MzcsNyArMTQzOCw2IEBACiAJCUJDMzEzNTYzMEYzMDJGQTMwMDNERkQzQSAvKiBEZWJ1Z2dlckFj
dGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdn
ZXJBY3RpdmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMzdCREUw
RTFBRjBCODAwNzY5MThBIC8qIEdldHRlclNldHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHZXR0ZXJTZXR0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMzMzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQkMzQzRDOUYxNDU4RjU0NTAwMjVGQjYyIC8qIEpTR2xvYmFsVGhpcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbFRoaXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzZBQUFFNDBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzc1NkZDNzBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDMsMjcgKzIwNDMsMTYgQEAK
IAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTBGMENENEMzMTVGNkI2QjUwMDMyRjFDMCAv
KiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLywKLQkJCQkwRjBDRDRDMDE1RjFBNjA0MDAzMkYx
QzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8sCi0JCQkJMEZCN0YzODkxNUVEOEUzODAwRjE2
N0IyIC8qIEFycmF5Q29udmVudGlvbnMuaCAqLywKLQkJCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3
QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCi0JCQkJMEZCN0YzOEIxNUVEOEUzODAwRjE2N0IyIC8q
IEJ1dHRlcmZseS5oICovLAotCQkJCTBGQjdGMzhDMTVFRDhFMzgwMEYxNjdCMiAvKiBCdXR0ZXJm
bHlJbmxpbmVNZXRob2RzLmggKi8sCi0JCQkJMEZCN0YzOEQxNUVEOEUzODAwRjE2N0IyIC8qIElu
ZGV4aW5nSGVhZGVyLmggKi8sCi0JCQkJMEZCN0YzOEUxNUVEOEUzODAwRjE2N0IyIC8qIEluZGV4
aW5nSGVhZGVySW5saW5lTWV0aG9kcy5oICovLAotCQkJCTBGQjdGMzhGMTVFRDhFMzgwMEYxNjdC
MiAvKiBJbmRleGluZ1R5cGUuaCAqLywKLQkJCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3QjIgLyog
UHJvcGVydHlTdG9yYWdlLmggKi8sCi0JCQkJMEZCN0YzOTExNUVEOEUzODAwRjE2N0IyIC8qIFJl
amVjdC5oICovLAotCQkJCTBGQjdGMzkyMTVFRDhFMzgwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZh
bHVlTWFwLmggKi8sCi0JCQkJQzJENThDMzMxNTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlD
YWxsYmFjay5jcHAgKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
Y3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJ
CQkJQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJQkMy
NTdERTYwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5oICovLAogCQkJCUJDNzk1MjA2MEUx
NUU4QTgwMEE4OThBQiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzc5NTIwNzBF
MTVFOEE4MDBBODk4QUIgLyogQXJyYXlDb25zdHJ1Y3Rvci5oICovLAorCQkJCTBGQjdGMzg5MTVF
RDhFMzgwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25zLmggKi8sCiAJCQkJRjY5MkE4NEQwMjU1
NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAqLywKIAkJCQlGNjkyQTg0RTAyNTU1
OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAqLywKKwkJCQkwRkI3RjM4QTE1RUQ4RTM4
MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCiAJCQkJMTQ3QjgzQUEwRTZEQjhDOTAwNDc3
NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggKi8sCiAJCQkJODY2NzM5RDAxM0JG
REU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLywKIAkJCQlCQzc5NTIzMjBFMTVFQjU2MDBB
ODk4QUIgLyogQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTIwNzIsNiArMjA2MSw4IEBA
CiAJCQkJNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLywKIAkJ
CQlCQzc5NTIzNDBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQkM3OTUyMzUwRTE1RUI1NjAwQTg5OEFCIC8qIEJvb2xlYW5Qcm90b3R5cGUuaCAqLywKKwkJ
CQkwRkI3RjM4QjE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggKi8sCisJCQkJMEZCN0Yz
OEMxNUVEOEUzODAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZU1ldGhvZHMuaCAqLywKIAkJCQk4
NjlEMDRBRTExOTNCNTREMDA4MDM0NzUgLyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5o
ICovLAogCQkJCUJDQTYyREZFMEUyODI2MjMwMDA0RjMwRCAvKiBDYWxsRGF0YS5jcHAgKi8sCiAJ
CQkJMTQ1QzUwN0YwRDlERjYzQjAwODhGNkI5IC8qIENhbGxEYXRhLmggKi8sCkBAIC0yMTExLDEx
ICsyMTAyLDE1IEBACiAJCQkJRjY5MkE4NUMwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJv
dG90eXBlLmNwcCAqLywKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Q
cm90b3R5cGUuaCAqLywKIAkJCQlDMkQ1OEMzMzE1OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0
eUNhbGxiYWNrLmNwcCAqLywKKwkJCQlDMkQ1OEMzMzE1OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCAqLywKIAkJCQlEREY3QUJEMjExRjYwRUQyMDAxMDhFMzYgLyogR0NB
Y3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJCQkJQkMwMkU5QjgwRTE4NDU0NTAwMEY5Mjk3IC8qIEdl
dHRlclNldHRlci5jcHAgKi8sCiAJCQkJQkMzMzdCREUwRTFBRjBCODAwNzY5MThBIC8qIEdldHRl
clNldHRlci5oICovLAogCQkJCTkzM0EzNDlEMDM4QUU4MEYwMDg2MzVDRSAvKiBJZGVudGlmaWVy
LmNwcCAqLywKIAkJCQk5MzNBMzQ5QTAzOEFFN0M2MDA4NjM1Q0UgLyogSWRlbnRpZmllci5oICov
LAorCQkJCTBGQjdGMzhEMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oICovLAor
CQkJCTBGQjdGMzhFMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZU1ldGhv
ZHMuaCAqLywKKwkJCQkwRkI3RjM4RjE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmgg
Ki8sCiAJCQkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcu
Y3BwICovLAogCQkJCUUxNzg2MzNGMEQ5QkVDMDAwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFk
aW5nLmggKi8sCiAJCQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVuY3Rp
b24uY3BwICovLApAQCAtMjE0MCw4ICsyMTM1LDYgQEAKIAkJCQlBOEU4OTQzMzBDRDA2MDNGMDAz
NjcxNzkgLyogSlNHbG9iYWxPYmplY3QuaCAqLywKIAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdE
MTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMx
QjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oICovLAotCQkJCUJDM0M0QzlG
MTQ1OEY1NDUwMDI1RkI2MiAvKiBKU0dsb2JhbFRoaXMuY3BwICovLAotCQkJCTg2MDRGNTAzMTQz
Q0UxQzEwMEIyOTVGNSAvKiBKU0dsb2JhbFRoaXMuaCAqLywKIAkJCQk2NUVBNEM5OTA5MkFGOUUy
MDA5M0Q4MDAgLyogSlNMb2NrLmNwcCAqLywKIAkJCQk2NUVBNEM5QTA5MkFGOUUyMDA5M0Q4MDAg
LyogSlNMb2NrLmggKi8sCiAJCQkJMTQ4NzRBREYxNUVCREU0QTAwMkUzNTg3IC8qIEpTTmFtZVNj
b3BlLmNwcCAqLywKQEAgLTIxNTQsNiArMjE0Nyw4IEBACiAJCQkJQTdGOTkzNUQwRkQ3MzI1MTAw
QTBCMkQwIC8qIEpTT05PYmplY3QuaCAqLywKIAkJCQlBNzI3RkY2NjBEQTMwNTNCMDBFNTQ4RDcg
LyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTcyN0ZGNjUwREEzMDUzQjAw
RTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLywKKwkJCQk4NjI1NTNDRTE2MTM2
QUE1MDA5RjE3RDAgLyogSlNQcm94eS5jcHAgKi8sCisJCQkJODYyNTUzQ0YxNjEzNkFBNTAwOUYx
N0QwIC8qIEpTUHJveHkuaCAqLywKIAkJCQkxNDg3NEFFMTE1RUJERTRBMDAyRTM1ODcgLyogSlNT
Y29wZS5jcHAgKi8sCiAJCQkJMTQ4NzRBRTIxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCAq
LywKIAkJCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgKi8sCkBAIC0yMjIwLDcgKzIyMTUsOSBAQAogCQkJCTBGRjcxNjhBMTVBM0IyMzEw
MDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovLAogCQkJCTY1NjIxRTZCMDg5RTg1OTcwMDc2
MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovLAogCQkJCTY1NjIxRTZDMDg5RTg1OTcwMDc2MEYz
NSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKKwkJCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3QjIgLyog
UHJvcGVydHlTdG9yYWdlLmggKi8sCiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFBy
b3RlY3QuaCAqLywKKwkJCQkwRjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5k
ZXhNb2RlLmggKi8sCiAJCQkJMTQ3Qjg0NjIwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5
U2xvdC5oICovLAogCQkJCUY2OTJBODdEMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuY3BwICov
LAogCQkJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLywKQEAgLTIyMzcs
MTAgKzIyMzQsMTMgQEAKIAkJCQlGNjkyQTg3QzAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2Jq
ZWN0LmggKi8sCiAJCQkJQkNEMjAyQkYwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3RvdHlw
ZS5jcHAgKi8sCiAJCQkJQkNEMjAyQzAwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3RvdHlw
ZS5oICovLAorCQkJCTBGQjdGMzkxMTVFRDhFMzgwMEYxNjdCMiAvKiBSZWplY3QuaCAqLywKIAkJ
CQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLywKIAkJ
CQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8sCiAJCQkJ
OTMzMDNGRTgwRTZBNzJCNTAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi8sCiAJCQkJOTMz
MDNGRUEwRTZBNzJDMDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5oICovLAorCQkJCTBGMENENEMz
MTVGNkI2QjUwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLywKKwkJCQkwRkI3
RjM5MjE1RUQ4RTM4MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oICovLAogCQkJCUE3
MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgKi8sCiAJ
CQkJQTczMEI2MTAxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggKi8s
CiAJCQkJQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmNwcCAq
LywKQEAgLTI2ODYsNyArMjY4Niw2IEBACiAJCQkJQkMxOEM0MjAwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTR2xvYmFsRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjEwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc1NkZDOTBFMjAz
MUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAot
CQkJCTg2MDRGNTA1MTQzQ0UxQzIwMEIyOTVGNSAvKiBKU0dsb2JhbFRoaXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI5NTAsNiArMjk0OSw3IEBACiAJCQkJMEZCN0YzOUQxNUVEOEU0
NjAwRjE2N0IyIC8qIFJlamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0
NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg2MjU1M0QyMTYxMzZFMUEwMDlGMTdEMCAvKiBKU1Byb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTMzOTQsNyArMzM5NCw2IEBACiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0
IC8qIEpTR2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlEMjEwN0VDMzc2
MDA0MjdBNDggLyogSlNHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRFOUQx
N0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUJDM0M0Q0EwMTQ1OEY1NDUwMDI1RkI2MiAvKiBKU0dsb2JhbFRoaXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NzUxMDdFQzEzRTAwMTNFN0IyIC8qIEpTTG9jay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI3MDA5MDBEQUM2QkJDMDBFNTQ4RDcgLyogSlNOb3RB
bk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENDEwN0VDMzc2MDA0MjdBNDgg
LyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNTU0LDYgKzM1NTMsNyBAQAogCQkJ
CTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMyMjU0OTQzMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90Vmlz
aXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NjI1NTNEMTE2MTM2REE5MDA5RjE3RDAgLyog
SlNQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDEyOTU5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAyLDYgKzUwMiwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5j
dGlvblN0cnVjdHVyZSk7CiB9CiAKK0pTT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6dG9UaGlzT2Jq
ZWN0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKikKK3sKKyAgICByZXR1cm4ganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oY2VsbCktPmdsb2JhbFRoaXMoKTsKK30KKwogRXhlY1N0YXRlKiBKU0dsb2Jh
bE9iamVjdDo6Z2xvYmFsRXhlYygpCiB7CiAgICAgcmV0dXJuIENhbGxGcmFtZTo6Y3JlYXRlKG1f
Z2xvYmFsQ2FsbEZyYW1lICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
cmV2aXNpb24gMTI5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgotI2luY2x1ZGUgIkpTR2xvYmFs
VGhpcy5oIgogI2luY2x1ZGUgIkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUgIk51bWJlclByb3RvdHlw
ZS5oIgpAQCAtMTkyLDcgKzE5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaW5p
dCh0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbFRoaXMqIHRoaXNWYWx1ZSkKKyAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiB0aGlz
VmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEpOwogICAgICAgICAgICAgc3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdChnbG9iYWxE
YXRhLCB0aGlzKTsKQEAgLTM2Niw2ICszNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2Jh
bFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHRvVGhpc09iamVjdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKik7CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsVGhpcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxUaGlzLmNwcAkocmV2aXNpb24gMTI5NTkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTR2xvYmFsVGhpcy5oIgotCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLUFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNHbG9iYWxUaGlzKTsKLUFT
U0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTR2xvYmFsVGhpcyk7Ci0KLWNvbnN0IENsYXNz
SW5mbyBKU0dsb2JhbFRoaXM6OnNfaW5mbyA9IHsgIkpTR2xvYmFsVGhpcyIsICZCYXNlOjpzX2lu
Zm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxUaGlzKSB9OwotCi12b2lkIEpT
R2xvYmFsVGhpczo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQotewotICAgIEpTR2xvYmFsVGhpcyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbFRo
aXMqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOwotCi0gICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNW
aXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsK
LSAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLQotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW53cmFwcGVkT2Jq
ZWN0KTsKLX0KLQotdm9pZCBKU0dsb2JhbFRoaXM6OnNldFVud3JhcHBlZE9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAg
QVNTRVJUX0FSRyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCk7Ci0gICAgbV91bndyYXBwZWRP
YmplY3Quc2V0KGdsb2JhbERhdGEsIHRoaXMsIGdsb2JhbE9iamVjdCk7Ci0gICAgc2V0UHJvdG90
eXBlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCkpOwotICAgIHJlc2V0SW5o
ZXJpdG9ySUQoZ2xvYmFsRGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgJKHJldmlzaW9uIDEy
OTU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBKU0dsb2JhbFRoaXNfaAotI2RlZmluZSBKU0ds
b2JhbFRoaXNfaAotCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNsYXNzIEpTR2xvYmFsVGhpcyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKLQotICAgIHN0YXRpYyBKU0dsb2Jh
bFRoaXMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgIHsKLSAgICAgICAgSlNHbG9iYWxUaGlzKiBnbG9iYWxUaGlzID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxUaGlzPihnbG9iYWxEYXRhLmhlYXApKSBKU0dsb2Jh
bFRoaXMoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICAgICAgZ2xvYmFsVGhpcy0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgIHJldHVybiBnbG9iYWxUaGlzOwotICAgIH0K
LQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSAKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCAwLCBwcm90b3R5cGUsIFR5cGVJbmZvKEdsb2JhbFRo
aXNUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyAKLSAgICB9Ci0KLSAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0KLSAgICBKU0dsb2Jh
bE9iamVjdCogdW53cmFwcGVkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV91bndyYXBwZWRPYmpl
Y3QuZ2V0KCk7IH0KLQotcHJvdGVjdGVkOgotICAgIEpTR2xvYmFsVGhpcyhKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpTTm9uRmluYWxP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKLSAgICB7Ci0gICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLQotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgc2V0VW53cmFwcGVkT2JqZWN0KEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0
Kik7Ci0gICAgCi1wcml2YXRlOgotICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV91
bndyYXBwZWRPYmplY3Q7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEpT
R2xvYmFsVGhpc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxMjk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRl
ICJJbmRleGluZ0hlYWRlcklubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU0dsb2JhbFRoaXMuaCIK
ICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiTm9kZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMTI5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDcgKzQ4MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIGlzTmFtZVNjb3BlT2JqZWN0KCkgY29uc3Q7CiAgICAg
ICAgIGJvb2wgaXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNFcnJv
ckluc3RhbmNlKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNHbG9iYWxUaGlzKCkgY29uc3Q7Cisg
ICAgICAgIGJvb2wgaXNQcm94eSgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2VhbChKU0dsb2Jh
bERhdGEmKTsKICAgICAgICAgdm9pZCBmcmVlemUoSlNHbG9iYWxEYXRhJik7CkBAIC03OTIsOSAr
NzkyLDkgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSgpIAogICAgIHJl
dHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRXJyb3JJbnN0YW5jZVR5cGU7
CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0Ojppc0dsb2JhbFRoaXMoKSBjb25zdAoraW5saW5l
IGJvb2wgSlNPYmplY3Q6OmlzUHJveHkoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2xvYmFsVGhpc1R5cGU7CisgICAgcmV0dXJuIHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBQcm94eVR5cGU7CiB9CiAKIGlubGluZSB2b2lk
IEpTT2JqZWN0OjpzZXRCdXR0ZXJmbHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMTI5NTkzKQkoZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuY3BwOjEyOTU5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNHbG9iYWxUaGlzLmgiCisKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0dsb2JhbFRoaXMpOwor
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNHbG9iYWxUaGlzKTsKKworY29uc3QgQ2xh
c3NJbmZvIEpTR2xvYmFsVGhpczo6c19pbmZvID0geyAiSlNHbG9iYWxUaGlzIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dsb2JhbFRoaXMpIH07CisKK3ZvaWQg
SlNHbG9iYWxUaGlzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNHbG9iYWxUaGlzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFs
VGhpcyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
JnNfaW5mbyk7CisKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcp
OworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV91bndyYXBwZWRP
YmplY3QpOworfQorCit2b2lkIEpTR2xvYmFsVGhpczo6c2V0VW53cmFwcGVkT2JqZWN0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBBU1NFUlRfQVJHKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKKyAgICBtX3Vud3JhcHBl
ZE9iamVjdC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2xvYmFsT2JqZWN0KTsKKyAgICBzZXRQcm90
b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGUoKSk7CisgICAgcmVzZXRJ
bmhlcml0b3JJRChnbG9iYWxEYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMTI5NTkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI0LDM1ICsyNCwxMDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSlNHbG9iYWxUaGlzLmgiCisjaW5jbHVkZSAiSlNQcm94eS5oIgogCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoSlNHbG9iYWxUaGlzKTsKLUFTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpT
R2xvYmFsVGhpcyk7CitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTUHJveHkpOworQVNTRVJU
X0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNQcm94eSk7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0ds
b2JhbFRoaXM6OnNfaW5mbyA9IHsgIkpTR2xvYmFsVGhpcyIsICZCYXNlOjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxUaGlzKSB9OworY29uc3QgQ2xhc3NJbmZvIEpT
UHJveHk6OnNfaW5mbyA9IHsgIkpTUHJveHkiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTUHJveHkpIH07CiAKLXZvaWQgSlNHbG9iYWxUaGlzOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEpTUHJveHk6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBK
U0dsb2JhbFRoaXMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxUaGlzKj4oY2VsbCk7Cisg
ICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKIAogICAgIENPTVBJ
TEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CiAgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CiAK
ICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Vud3JhcHBlZE9iamVjdCk7CisgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fdGFyZ2V0KTsKIH0KIAotdm9pZCBKU0dsb2JhbFRoaXM6OnNl
dFVud3JhcHBlZE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCit2b2lkIEpTUHJveHk6OnNldFRhcmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUX0FS
RyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCk7Ci0gICAgbV91bndyYXBwZWRPYmplY3Quc2V0
KGdsb2JhbERhdGEsIHRoaXMsIGdsb2JhbE9iamVjdCk7CisgICAgbV90YXJnZXQuc2V0KGdsb2Jh
bERhdGEsIHRoaXMsIGdsb2JhbE9iamVjdCk7CiAgICAgc2V0UHJvdG90eXBlKGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCkpOwogICAgIHJlc2V0SW5oZXJpdG9ySUQoZ2xvYmFs
RGF0YSk7CiB9CiAKK1N0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9i
amVjdCkKK3sKKyAgICBjb25zdCBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpT
UHJveHkqPihvYmplY3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9k
VGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPnRhcmdldCgpKTsKK30KKworYm9vbCBKU1By
b3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU1By
b3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBK
U1Byb3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAg
ICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
Cit9CisKK2Jvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgp
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdC0+dGFy
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKK3ZvaWQgSlNQcm94
eTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNQ
cm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7CisgICAgdGhpc09iamVj
dC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKK3ZvaWQgSlNQcm94eTo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQoreworICAgIEpTUHJveHkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgp
LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Cit9CisKK3ZvaWQgSlNQcm94eTo6cHV0
RGlyZWN0VmlydHVhbChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7
CisgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKKyAg
ICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+cHV0RGlyZWN0VmlydHVhbCh0aGlzT2JqZWN0LT50YXJn
ZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7Cit9CisKK2Jvb2wg
SlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBKU1By
b3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOworICAgIHJldHVybiB0
aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhp
c09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxk
VGhyb3cpOworfQorCitib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIEpTUHJv
eHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOworICAgIHJldHVybiB0aGlz
T2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cit9CisKK2Jvb2wgSlNQcm94eTo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1By
b3h5Kj4oY2VsbCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJs
ZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHBy
b3BlcnR5TmFtZSk7Cit9CisKK3ZvaWQgSlNQcm94eTo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTUHJveHkqPihvYmplY3QpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKwordm9pZCBKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQoreworICAgIEpTUHJveHkqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7CisgICAgdGhpc09iamVjdC0+dGFy
Z2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFy
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9u
IDEyOTU5MykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlz
Lmg6MTI5NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0dsb2JhbFRoaXNfaAorI2RlZmluZSBKU0ds
b2JhbFRoaXNfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEpTR2xvYmFsVGhpcyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBKU0dsb2Jh
bFRoaXMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxUaGlzKiBnbG9iYWxUaGlzID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxUaGlzPihnbG9iYWxEYXRhLmhlYXApKSBKU0dsb2Jh
bFRoaXMoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAgZ2xvYmFsVGhpcy0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgIHJldHVybiBnbG9iYWxUaGlzOworICAgIH0K
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCAwLCBwcm90b3R5cGUsIFR5cGVJbmZvKEdsb2JhbFRo
aXNUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyAKKyAgICB9CisKKyAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKKyAgICBKU0dsb2Jh
bE9iamVjdCogdW53cmFwcGVkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV91bndyYXBwZWRPYmpl
Y3QuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIEpTR2xvYmFsVGhpcyhKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTTm9uRmluYWxP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICB7CisgICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgIH0KKworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgc2V0VW53cmFwcGVkT2JqZWN0KEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0
Kik7CisgICAgCitwcml2YXRlOgorICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV91
bndyYXBwZWRPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpT
R2xvYmFsVGhpc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5o
CShyZXZpc2lvbiAxMjk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDM1ICsyMywzNSBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAotI2lmbmRlZiBKU0dsb2JhbFRoaXNfaAotI2RlZmluZSBKU0dsb2JhbFRoaXNfaAor
I2lmbmRlZiBKU1Byb3h5X2gKKyNkZWZpbmUgSlNQcm94eV9oCiAKICNpbmNsdWRlICJKU09iamVj
dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgSlNHbG9iYWxUaGlzIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgeworY2xhc3MgSlNQcm94eSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgIHN0
YXRpYyBKU0dsb2JhbFRoaXMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Byb3h5KiBjcmVhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTR2xv
YmFsVGhpcyogZ2xvYmFsVGhpcyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2xvYmFs
VGhpcz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxUaGlzKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7Ci0gICAgICAgIGdsb2JhbFRoaXMtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwotICAg
ICAgICByZXR1cm4gZ2xvYmFsVGhpczsKKyAgICAgICAgSlNQcm94eSogcHJveHkgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3h5PihnbG9iYWxEYXRhLmhlYXApKSBKU1Byb3h5KGds
b2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3h5LT5maW5pc2hDcmVhdGlvbihnbG9i
YWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIHByb3h5OwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKSAKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCAwLCBwcm90b3R5cGUsIFR5cGVJbmZvKEdsb2JhbFRoaXNUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksICZzX2luZm8pOyAKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIDAsIHByb3RvdHlwZSwgVHlwZUluZm8oUHJveHlUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOwogICAgIH0KIAotICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW53cmFwcGVkT2JqZWN0LmdldCgpOyB9CisgICAgSlNHbG9iYWxPYmplY3Qq
IHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAKIHByb3RlY3RlZDoK
LSAgICBKU0dsb2JhbFRoaXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICBKU1Byb3h5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUpCiAgICAgewogICAgIH0KQEAgLTYxLDE2ICs2MSwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgIH0KIAotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRVbndy
YXBwZWRPYmplY3QoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqKTsKLSAgICAKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFRhcmdldChKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCopOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFzc05hbWUo
Y29uc3QgSlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpOworCiBwcml2YXRlOgotICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVj
dD4gbV91bndyYXBwZWRPYmplY3Q7CisgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBt
X3RhcmdldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8gSlNHbG9iYWxU
aGlzX2gKKyNlbmRpZiAvLyBKU1Byb3h5X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAxMjk1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBlbnVtIEpT
VHlwZSB7CiAgICAgTmFtZUluc3RhbmNlVHlwZSwKICAgICBOdW1iZXJPYmplY3RUeXBlLAogICAg
IEVycm9ySW5zdGFuY2VUeXBlLAotICAgIEdsb2JhbFRoaXNUeXBlLAorICAgIFByb3h5VHlwZSwK
ICAgICBXaXRoU2NvcGVUeXBlLAogCiAgICAgTmFtZVNjb3BlT2JqZWN0VHlwZSwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0ds
b2JhbFRoaXMuaAkocmV2aXNpb24gMTI5NTkzKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9KU0dsb2JhbFRoaXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsw
LDAgQEAKLSNpZm5kZWYgV2ViQ29yZV9GV0RfSlNHbG9iYWxUaGlzX2gKLSNkZWZpbmUgV2ViQ29y
ZV9GV0RfSlNHbG9iYWxUaGlzX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbFRo
aXMuaD4KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9KU1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDEyOTU5MykJKGZyb20gU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0dsb2JhbFRoaXMuaDoxMjk1OTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNHbG9iYWxU
aGlzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNHbG9iYWxUaGlzX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0dsb2JhbFRoaXMuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDEy
OTU5MykKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9K
U0dsb2JhbFRoaXNfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9KU0dsb2JhbFRoaXNfaAotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsVGhpcy5oPgorI2lmbmRlZiBXZWJDb3JlX0ZXRF9K
U1Byb3h5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNQcm94eV9oCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNQcm94eS5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMjk1OTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oSgogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLXZvaWQgSlNET01H
bG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNH
bG9iYWxUaGlzKiB0aGlzVmFsdWUpCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiB0aGlzVmFsdWUpCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgdGhpc1ZhbHVlKTsKICAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMjk1OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFs
VGhpcy5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFsRGF0
YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBjb25zdCBK
U0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiA9IDApOwogICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpK
U0dsb2JhbERhdGEmKTsKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFs
RGF0YSYsIEpTQzo6SlNHbG9iYWxUaGlzKik7CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OkpTT2JqZWN0Kik7CiAKICAgICBwdWJsaWM6CiAgICAg
ICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVz
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAJKHJldmlzaW9uIDEyOTU5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSwxMSArMTY5LDYgQEAgdm9p
ZCBKU0RPTVdpbmRvd0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZAogICAgIHNldEN1cnJlbnRFdmVu
dCgwKTsKIH0KIAotSlNPYmplY3QqIEpTRE9NV2luZG93QmFzZTo6dG9UaGlzT2JqZWN0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKikKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93QmFz
ZSo+KGNlbGwpLT5zaGVsbCgpOwotfQotCiBKU0RPTVdpbmRvd1NoZWxsKiBKU0RPTVdpbmRvd0Jh
c2U6OnNoZWxsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaGVsbDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCShyZXZpc2lvbiAxMjk1OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsNyArNjYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0
YXRpYyBib29sIGphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlND
OjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSopOwogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiBz
aGVsbCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU0M6OkpTR2xvYmFsRGF0YSogY29tbW9u
SlNHbG9iYWxEYXRhKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTI5NTkzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDgz
ICs4Miw2IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWYKIH0KIAog
Ly8gLS0tLQotLy8gSlNPYmplY3QgbWV0aG9kcwotLy8gLS0tLQotCi1TdHJpbmcgSlNET01XaW5k
b3dTaGVsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgY29uc3Qg
SlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU0RPTVdpbmRvd1No
ZWxsKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRh
YmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT53aW5kb3coKSk7Ci19Ci0KLWJvb2wgSlNET01X
aW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0g
ICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxs
Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+d2luZG93KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7Ci19Ci0KLWJvb2wgSlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgSlNET01XaW5kb3dTaGVsbCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRo
aXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQot
Ci1ib29sIEpTRE9NV2luZG93U2hlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBKU0RPTVdpbmRvd1NoZWxsKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwotICAgIHJldHVy
biB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwotfQotCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPndpbmRv
dygpLT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdC0+d2luZG93KCksIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotfQotCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAgICBKU0RPTVdpbmRvd1No
ZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKLSAgICB0
aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0
LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotfQot
Ci12b2lkIEpTRE9NV2luZG93U2hlbGw6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAgIEpTRE9NV2luZG93U2hlbGwqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVj
dC0+d2luZG93KCktPnB1dERpcmVjdFZpcnR1YWwodGhpc09iamVjdC0+d2luZG93KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwotfQotCi1ib29sIEpTRE9NV2luZG93
U2hlbGw6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgSlNET01X
aW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0
KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZU93blByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIHNob3VsZFRocm93KTsKLX0KLQotYm9vbCBKU0RPTVdpbmRvd1NoZWxsOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKLXsKLSAgICBKU0RPTVdpbmRvd1NoZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRE9NV2luZG93U2hlbGwqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+d2luZG93
KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPndpbmRvdygpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUpOwotfQotCi1ib29sIEpTRE9NV2luZG93U2hlbGw6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lKQotewotICAgIEpTRE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01XaW5kb3dTaGVsbCo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT53aW5kb3co
KS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QtPndpbmRv
dygpLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwotfQotCi12b2lkIEpTRE9NV2luZG93U2hlbGw6Omdl
dFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCi17Ci0gICAg
SlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4o
b2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT53aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+Z2V0UHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LT53aW5kb3coKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7Ci19Ci0KLXZvaWQgSlNET01XaW5kb3dTaGVsbDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBKU0RPTVdpbmRvd1NoZWxsKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwotICAgIHRoaXNP
YmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QtPndpbmRvdygpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLX0KLQotCi0vLyAt
LS0tCiAvLyBKU0RPTVdpbmRvdyBtZXRob2RzCiAvLyAtLS0tCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgJKHJldmlzaW9uIDEyOTU5MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMjQgKzMwLDI0IEBACiAjZGVmaW5lIEpTRE9NV2luZG93U2hlbGxfaAog
CiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsVGhp
cy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm94eS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBET01XaW5kb3c7CiAgICAgY2xhc3MgRnJhbWU7CiAKLSAgICBjbGFzcyBK
U0RPTVdpbmRvd1NoZWxsIDogcHVibGljIEpTQzo6SlNHbG9iYWxUaGlzIHsKLSAgICAgICAgdHlw
ZWRlZiBKU0M6OkpTR2xvYmFsVGhpcyBCYXNlOworICAgIGNsYXNzIEpTRE9NV2luZG93U2hlbGwg
OiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKKyAgICAgICAgdHlwZWRlZiBKU0M6OkpTUHJveHkgQmFz
ZTsKICAgICBwdWJsaWM6CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwoUGFzc1JlZlB0cjxET01X
aW5kb3c+LCBKU0M6OlN0cnVjdHVyZSosIERPTVdyYXBwZXJXb3JsZCopOwogICAgICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3co
KSBjb25zdCB7IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KHVud3JhcHBlZE9iamVj
dCgpKTsgfQorICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93KCkgY29uc3QgeyByZXR1cm4gSlND
Ojpqc0Nhc3Q8SlNET01XaW5kb3cqPih0YXJnZXQoKSk7IH0KICAgICAgICAgdm9pZCBzZXRXaW5k
b3coSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTRE9NV2luZG93KiB3aW5kb3cpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVF9BUkcod2luZG93LCB3aW5kb3cpOwotICAgICAg
ICAgICAgc2V0VW53cmFwcGVkT2JqZWN0KGdsb2JhbERhdGEsIHdpbmRvdyk7CisgICAgICAgICAg
ICBzZXRUYXJnZXQoZ2xvYmFsRGF0YSwgd2luZG93KTsKICAgICAgICAgICAgIHN0cnVjdHVyZSgp
LT5zZXRHbG9iYWxPYmplY3QoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgd2lu
ZG93KTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdp
bmRvdz4pOwpAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCAwLCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpHbG9iYWxUaGlzVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAm
c19pbmZvKTsgCisgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCAwLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpQcm94eVR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAgICAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQpAQCAtNzUsMjIgKzc1LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKEpTQzo6U3RydWN0
dXJlKiwgRE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpKU0dsb2JhbERhdGEmLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4pOwogCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFt
ZShjb25zdCBKU0M6OkpTT2JqZWN0Kik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU0M6
OlByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6
OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRl
eChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTQzo6SlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2Vs
bCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQpOwotICAgICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyB2
b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7Ci0KICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAg
ICB9OwogCg==
</data>
<flag name="review"
          id="178015"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>