<?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>71307</bug_id>
          
          <creation_ts>2011-11-01 11:08:12 -0700</creation_ts>
          <short_desc>De-virtualize JSObject::getOwnPropertyNames</short_desc>
          <delta_ts>2011-11-02 20:33:57 -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>
          
          <blocked>70960</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494036</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-11-01 11:08:12 -0700</bug_when>
    <thetext>We&apos;re de-virtualizing JSObject. getOwnPropertyNames is a virtual method in JSObject.  Thus, we need to de-virtualize getOwnPropertyNames.  We&apos;ll put it in the MethodTable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494295</commentid>
    <comment_count>1</comment_count>
      <attachid>113255</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-11-01 16:40:03 -0700</bug_when>
    <thetext>Created attachment 113255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495095</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-11-02 17:29:10 -0700</bug_when>
    <thetext>Committed r99126: &lt;http://trac.webkit.org/changeset/99126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495172</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-02 20:26:20 -0700</bug_when>
    <thetext>I think this caused crashes: http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r99126%20(2813)/results.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495175</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-02 20:30:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I think this caused crashes: http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r99126%20(2813)/results.html.

I bet this crash is due to not passing the right this object in JSDOMWindowShell::getOwnPropertyNames. The shell is being passed instead of window().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495176</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-02 20:33:57 -0700</bug_when>
    <thetext>Crash fixed in r99135.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113255</attachid>
            <date>2011-11-01 16:40:03 -0700</date>
            <delta_ts>2011-11-01 16:47:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71307-20111101164002.patch</filename>
            <type>text/plain</type>
            <size>74128</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhm
MjAwMTExNzUzNmNmMWFiMDY0ZGU2OTYwNTQ1OWE2YmU4NGI5OTQuLmMzZjcyZDZhNmIzNzE0NDE0
OGViNzk4ZTNiZWYzMmFlYzcxMGM0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY3IEBACisyMDExLTExLTAxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEz
MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzIHRvIHRoZSBNZXRob2RUYWJsZSwgY2hhbmdlZCBhbGwgdGhl
IHZpcnR1YWwgCisgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiBnZXRPd25Qcm9wZXJ0eU5hbWVz
IHRvIHN0YXRpYyBvbmVzLCBhbmQgcmVwbGFjZWQgCisgICAgICAgIGFsbCBjYWxsIHNpdGVzIHdp
dGggY29ycmVzcG9uZGluZyBsb29rdXBzIGluIHRoZSBNZXRob2RUYWJsZS4KKworICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlckFjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3Vt
ZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJv
cGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9KU05vdEFuT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZp
ZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3
YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVP
YmplY3Q6On5KU1ZhcmlhYmxlT2JqZWN0KTogSGFkIHRvIGFkZCBhbiBlbXB0eSBvdXQtb2YtbGlu
ZSB2aXJ0dWFsIAorICAgICAgICBkZXN0cnVjdG9yIHRvIHByZXZlbnQgSlNWYXJpYWJsZU9iamVj
dCBmcm9tIGhhdmluZyBhIHdlYWsgdnRhYmxlLgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVy
dGllcyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAg
KEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorCiAyMDExLTEwLTMxICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIEdDIHNob3VsZCBiZSBwYXJhbGxl
bApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBiL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXggN2QyNDkyNGVlMWE5OGViZjM2ODgzYzZlM2M4
MDNiZWNjMDNhMjk5Zi4uOWRkMTQ3OTY5OTIwNTAyNGZmZTNlNmI2MTFkZjNiNGMyMDI4YjU4OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTEtMDEgIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBEZS12aXJ0
dWFsaXplIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTMwNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGdldE93blByb3BlcnR5TmFtZXMgdG8g
dGhlIE1ldGhvZFRhYmxlLCBjaGFuZ2VkIGFsbCB0aGUgdmlydHVhbCAKKyAgICAgICAgaW1wbGVt
ZW50YXRpb25zIG9mIGdldE93blByb3BlcnR5TmFtZXMgdG8gc3RhdGljIG9uZXMsIGFuZCByZXBs
YWNlZCAKKyAgICAgICAgYWxsIGNhbGwgc2l0ZXMgd2l0aCBjb3JyZXNwb25kaW5nIGxvb2t1cHMg
aW4gdGhlIE1ldGhvZFRhYmxlLgorCisgICAgICAgICogVXNlck9iamVjdEltcC5jcHA6CisgICAg
ICAgIChVc2VyT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBVc2Vy
T2JqZWN0SW1wLmg6CisKIDIwMTEtMTAtMjYgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZ2V0T3duUHJvcGVydHlTbG90VmlydHVhbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGMzODRlZjhiODdhODMyY2JhMzA3YWMwMjhiODc1NDMyODliOGFkNWIuLjQw
YzdmMWYyNjgxMDFhZTBhOTFhZTc5MDViNzUzNzlkOTdlMDRmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxMS0xMS0wMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIERlLXZpcnR1YWxpemUgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiAKKworICAgICAgICBBZGRlZCBnZXRPd25Qcm9wZXJ0eU5hbWVzIHRvIHRoZSBN
ZXRob2RUYWJsZSwgY2hhbmdlZCBhbGwgdGhlIHZpcnR1YWwgCisgICAgICAgIGltcGxlbWVudGF0
aW9ucyBvZiBnZXRPd25Qcm9wZXJ0eU5hbWVzIHRvIHN0YXRpYyBvbmVzLCBhbmQgcmVwbGFjZWQg
CisgICAgICAgIGFsbCBjYWxsIHNpdGVzIHdpdGggY29ycmVzcG9uZGluZyBsb29rdXBzIGluIHRo
ZSBNZXRob2RUYWJsZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0
aW9uKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmg6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6
OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGJy
aWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDExLTExLTAxICBNaWtlIFJlZWQgIDxyZWVkQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW3NraWFdIGNhbGwgcmVhZFBpeGVscyBvbiBjYW52YXMgaW5z
dGVhZCBvZiBkZXZpY2UgKHdpbGwgYmUgcHJpdmF0ZSBvbiBkZXZpY2Ugc29vbikgYW5kIGNoZWNr
IGZvciBlcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA0YjhiZjE1MTVmNWY2NTg0ZWRhZDgxZWI1YTlkYjYz
ODRmMjVlZjkuLjU4YWJkZjM5MzQ4ZGE4YjgxMzQxMDlkNzdhNjBiYzZjYTIzNWNhYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0wMSAgTWFyayBIYWhuZW5iZXJnICA8bWhh
aG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIERlLXZpcnR1YWxpemUgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgZ2V0T3duUHJvcGVydHlOYW1lcyB0byB0aGUgTWV0aG9kVGFibGUsIGNo
YW5nZWQgYWxsIHRoZSB2aXJ0dWFsIAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgZ2V0T3du
UHJvcGVydHlOYW1lcyB0byBzdGF0aWMgb25lcywgYW5kIHJlcGxhY2VkIAorICAgICAgICBhbGwg
Y2FsbCBzaXRlcyB3aXRoIGNvcnJlc3BvbmRpbmcgbG9va3VwcyBpbiB0aGUgTWV0aG9kVGFibGUu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisKIDIwMTEt
MTEtMDEgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIE1lcmdlIGNvbW1vbiBkZXNrdG9wIGFuZCB0b3VjaCB2aWV3IEFQSXMgdW5k
ZXIgYSBiYXNlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAppbmRleCBmNjYwNGQ4MzlmZTRkNTlmNGE5ZjE2MDY2ODc3YWVmODZiNDVmMjJhLi40
MDgxNDM0ZDc3Y2ZmMDVlNzc2M2E1MWY4NzAzZDIwOGUxOGM0MGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDFhMjc1MTFm
ZmE0M2Q4ZmY1MjA3NDljZThkOTY5N2QxZmQ1NWEzYWUuLjE4MGMwNDMzMjlkOGIwMDVlMzhjMTNh
NGNiZTZmNjc4OWQ3YmQ0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC00MTksMTIgKzQxOSwxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoRXhlY1N0YXRlKiBleGVj
KQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKIHsKKyAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CiAgICAgSlNDb250ZXh0UmVmIGV4
ZWNSZWYgPSB0b1JlZihleGVjKTsKLSAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhp
cyk7CisgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIAot
ICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsganNDbGFzczsganNDbGFz
cyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CisgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3Mg
PSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFy
ZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlOYW1lc0NhbGxiYWNr
IGdldFByb3BlcnR5TmFtZXMgPSBqc0NsYXNzLT5nZXRQcm9wZXJ0eU5hbWVzKSB7CiAgICAgICAg
ICAgICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOwogICAgICAgICAgICAgZ2V0
UHJvcGVydHlOYW1lcyhleGVjUmVmLCB0aGlzUmVmLCB0b1JlZigmcHJvcGVydHlOYW1lcykpOwpA
QCAtNDUzLDcgKzQ1NCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgUGFyZW50OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOworICAgIFBhcmVudDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDJiNzg5MzFm
NmMzZTBmZTczYWQ0YzExMjNhNWQ0NmJlZWU1NDJhOWYuLjZhYzI4MDRmMWU5NDAwODI1ZmFhOGQ1
NjMzZDEyODhlNmQ4YTM5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cApAQCAtMTIwLDYgKzEyMCw3IEBAIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0
YXRlRVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxMHB1dEJ5SW5kZXhFUE5T
XzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMUpTQnl0ZUFy
cmF5MTVjcmVhdGVTdHJ1Y3R1cmVFUk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2Jq
ZWN0RU5TXzdKU1ZhbHVlRVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTE4
Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDMTFKU0J5dGVBcnJheTE5Z2V0T3du
UHJvcGVydHlOYW1lc0VQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5
TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MjVn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRWpSTlNf
MTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkzcHV0RVBOU182SlNDZWxsRVBO
U185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3Bl
cnR5U2xvdEUKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTZzX2luZm9FCkBAIC0xNTUsNyArMTU2LDYg
QEAgX19aTjNKU0MxMlNhbXBsaW5nVG9vbDVzZXR1cEV2CiBfX1pOM0pTQzEyU21hbGxTdHJpbmdz
MTdjcmVhdGVFbXB0eVN0cmluZ0VQTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzEyU21hbGxT
dHJpbmdzMjdjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmdFUE5TXzEySlNHbG9iYWxEYXRhRWgK
IF9fWk4zSlNDMTJTdHJpbmdPYmplY3QxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0
YUVQTlNfOEpTU3RyaW5nRQotX19aTjNKU0MxMlN0cmluZ09iamVjdDE5Z2V0T3duUHJvcGVydHlO
YW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0
aW9uTW9kZUUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0
b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0NnNfaW5mb0UKIF9fWk4zSlNDMTJTdHJpbmdPYmpl
Y3RDMkVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFCkBAIC0xOTgsNyArMTk4LDcg
QEAgX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxNkludGVybmFs
RnVuY3Rpb25DMkVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUUKIF9fWk4zSlND
MTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRzeW1i
b2xUYWJsZUdldEVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCi1f
X1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNT
dGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4z
SlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RF
UE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1v
ZGVFCiBfX1pOM0pTQzE2Y3JlYXRlUmFuZ2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3Ry
aW5nRQogX19aTjNKU0MxNnNsb3dWYWxpZGF0ZUNlbGxFUE5TXzE0SlNHbG9iYWxPYmplY3RFCiBf
X1pOM0pTQzE2c2xvd1ZhbGlkYXRlQ2VsbEVQTlNfNkpTQ2VsbEUKQEAgLTMyMiw3ICszMjIsNyBA
QCBfX1pOM0pTQzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzEySlNHbG9iYWxEYXRh
RWpOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFagogX19aTjNKU0M4SlNP
YmplY3QxN3B1dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RU5TXzdKU1ZhbHVlRWpiUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4SlNPYmplY3Qx
N3B1dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRWpOU183SlNWYWx1ZUVqCi1fX1pOM0pT
QzhKU09iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9w
ZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4zSlNDOEpTT2JqZWN0MTln
ZXRPd25Qcm9wZXJ0eU5hbWVzRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVB
cnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOEpTT2JqZWN0MjFkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXhFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFagogX19aTjNKU0M4SlNPYmpl
Y3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhKU09iamVjdDIyZmlsbEdldHRl
clByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RFUE5TXzE2V3JpdGVCYXJyaWVyQmFzZUlO
U183VW5rbm93bkVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZgppbmRleCAyNzAzZDgzYTQxYjE4YTYxZmU3YTA2OTgzMGQwYWRlMjE3ZGI1
OGUzLi5hZTY5ZjkzMmM5NzgyYjIzZDNmNzhlOTU2MDlkOTI4YjkyOGU1YzE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMzEs
NiArMzEsNyBAQCBFWFBPUlRTCiAgICAgPz8xRHJvcEFsbExvY2tzQEpTTG9ja0BKU0NAQFFBRUBY
WgogICAgID8/MUpTR2xvYmFsRGF0YUBKU0NAQFFBRUBYWgogICAgID8/MUpTR2xvYmFsT2JqZWN0
QEpTQ0BAVUFFQFhaCisgICAgPz8xSlNWYXJpYWJsZU9iamVjdEBKU0NAQFVBRUBYWgogICAgID8/
MU11dGV4QFdURkBAUUFFQFhaCiAgICAgPz8xUmVmQ291bnRlZExlYWtDb3VudGVyQFdURkBAUUFF
QFhaCiAgICAgPz8xU2NvcGVDaGFpbk5vZGVASlNDQEBFQUVAWFoKQEAgLTE5NCw5ICsxOTUsOSBA
QCBFWFBPUlRTCiAgICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBKU09iamVjdEBKU0NAQFVB
RV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAy
QEBaCiAgICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBKU1N0cmluZ0BKU0NAQEVBRV9OUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQEBaCiAg
ICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBTdHJpbmdPYmplY3RASlNDQEBVQUVfTlBBVkV4
ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgotICAg
ID9nZXRPd25Qcm9wZXJ0eU5hbWVzQEpTT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFB
VlByb3BlcnR5TmFtZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgotICAgID9nZXRPd25Q
cm9wZXJ0eU5hbWVzQEpTVmFyaWFibGVPYmplY3RASlNDQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUFW
UHJvcGVydHlOYW1lQXJyYXlAMkBXNEVudW1lcmF0aW9uTW9kZUAyQEBaCi0gICAgP2dldE93blBy
b3BlcnR5TmFtZXNAU3RyaW5nT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3Bl
cnR5TmFtZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgorICAgID9nZXRPd25Qcm9wZXJ0
eU5hbWVzQEpTQnl0ZUFycmF5QEpTQ0BAU0FYUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBB
QVZQcm9wZXJ0eU5hbWVBcnJheUAyQFc0RW51bWVyYXRpb25Nb2RlQDJAQFoKKyAgICA/Z2V0T3du
UHJvcGVydHlOYW1lc0BKU09iamVjdEBKU0NAQFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQEFBVlBy
b3BlcnR5TmFtZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgorICAgID9nZXRPd25Qcm9w
ZXJ0eU5hbWVzQEpTVmFyaWFibGVPYmplY3RASlNDQEBTQVhQQVZKU09iamVjdEAyQFBBVkV4ZWNT
dGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAg
ID9nZXRPd25Qcm9wZXJ0eVNsb3RASlNCeXRlQXJyYXlASlNDQEBTQV9OUEFWSlNDZWxsQDJAUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5U2xvdEAyQEBaCiAgICAgP2dl
dE93blByb3BlcnR5U2xvdEBKU0dsb2JhbE9iamVjdEBKU0NAQFNBX05QQVZKU0NlbGxAMkBQQVZF
eGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlTbG90QDJAQFoKICAgICA/Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEBKU0FycmF5QEpTQ0BAU0FfTlBBVkpTQ2VsbEAyQFBBVkV4
ZWNTdGF0ZUAyQElBQVZQcm9wZXJ0eVNsb3RAMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCBiYjM2N2MyZWRk
OWJhOWI4YjBlM2Y3MmM5YjhmNzIzYzZiODI4YmY4Li5iMzNkZGUyNDQ5YjIwZjU1NDViNzcyMDU1
ZTk1YjYwYzIxYmRhZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcApAQCAtODMsOSArODMsMTAgQEAgYm9vbCBEZWJ1
Z2dlckFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGUKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7
Ci0gICAgbV9hY3RpdmF0aW9uLT5nZXRQcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIERlYnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CisgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0
aW9uLT5nZXRQcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBi
b29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJBY3RpdmF0aW9uLmgKaW5kZXggMWYwOTA3YzAwOTRlMzVjMGU1N2NmZGQ1YWY4MDYy
NjVkNzVhMjBlYy4uN2Y4MTc3NjI1OTVhZGMzMmY5ZDVhY2RmMzNiNTcyMDI0MDIzZTRmNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRp
b24uaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXRX
aXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVTZXR0ZXIoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVu
Y3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggZjc4OTAxMTM5YTBjMmQxOGViZThiMGM0ZjFhYzE3MTcz
ZWUwNTMzMy4uZWRlNmE5MGFiY2RmYjQzZDIyMTM0Mjg0OGZlZGI0ZGVkYWUyOGU5NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC0yNDYsMTcgKzI0
NiwxOCBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9
CiAKLXZvaWQgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQor
dm9pZCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGQtPm51bUFyZ3Vt
ZW50czsgKytpKSB7Ci0gICAgICAgIGlmICghZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhZC0+ZGVs
ZXRlZEFyZ3VtZW50c1tpXSkKKyAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxBcmd1bWVudHMqPihvYmplY3QpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlz
T2JqZWN0LT5kLT5udW1Bcmd1bWVudHM7ICsraSkgeworICAgICAgICBpZiAoIXRoaXNPYmplY3Qt
PmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVudHNb
aV0pCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJp
bmc6Om51bWJlcihpKSkpOwogICAgIH0KICAgICBpZiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jYWxsZWUpOwogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKTsKICAgICB9Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQg
QXJndW1lbnRzOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaAppbmRleCBhMmQxZTljZTdhNjA4YmYwNWJiMTgwMGM1NmIwNzRlYmI2MjBhNzYyLi5i
YTgwMmRiMWJlNTYwYzM4MTg2YWMyNzcyZDU1ZThlNDgwOTU1OTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMTM4LDcgKzEzOCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUp
OwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAppbmRleCBkOGU3MTcwOTAzZWNlMjdlNTI5ZjRjZjdlNTVmMTdh
MDc0NTU2MTk2Li43YjQ3YzQ0NTZmYWM0MDVlYTdmOThiODJjNGYyMmQwYzY0N2Y4NDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgor
I2luY2x1ZGUgIkpTQ2VsbC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNjcsNiArNjgsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKCpEZWZhdWx0VmFs
dWVGdW5jdGlvblB0cikoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlKTsKICAgICAgICAgRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIgZGVmYXVsdFZhbHVl
OworCisgICAgICAgIHR5cGVkZWYgdm9pZCAoKkdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0
cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7CisgICAgICAgIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBnZXRPd25Qcm9w
ZXJ0eU5hbWVzOwogICAgIH07CiAKICNkZWZpbmUgQ1JFQVRFX01FTUJFUl9DSEVDS0VSKG1lbWJl
cikgXApAQCAtMTAxLDYgKzEwNSw3IEBAIHN0cnVjdCBNZW1iZXJDaGVjayMjbWVtYmVyIHsgXAog
ICAgICAgICAmQ2xhc3NOYW1lOjp0b1RoaXNPYmplY3QsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6
ZGVmaW5lR2V0dGVyLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRlZmF1bHRWYWx1ZSwgXAorICAg
ICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgfSwgXAogICAgIHNp
emVvZihDbGFzc05hbWUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uY3BwCmluZGV4IDdmNGVkOWIxYTVjMzJjN2U3MGU4N2JmYTExNmE3NzkwODliZTEz
Y2QuLjRiZmExNmVlYTNmNzMyMjBmNmM2MjljYTAzZWEwZWJjMWUzNmRiZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtMTEwLDE4ICsx
MTAsMTkgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2
b2lkIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKIHsKLSAgICBTeW1ib2xUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
c3ltYm9sVGFibGUoKS5lbmQoKTsKLSAgICBmb3IgKFN5bWJvbFRhYmxlOjpjb25zdF9pdGVyYXRv
ciBpdCA9IHN5bWJvbFRhYmxlKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgSlNB
Y3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4ob2JqZWN0
KTsKKyAgICBTeW1ib2xUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3lt
Ym9sVGFibGUoKS5lbmQoKTsKKyAgICBmb3IgKFN5bWJvbFRhYmxlOjpjb25zdF9pdGVyYXRvciBp
dCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIGlmIChpdC0+c2Vjb25kLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtICYmIG1v
ZGUgIT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoaXQtPnNlY29uZC5nZXRJbmRleCgpID49IG1fbnVtQ2FwdHVyZWRWYXJzKQor
ICAgICAgICBpZiAoaXQtPnNlY29uZC5nZXRJbmRleCgpID49IHRoaXNPYmplY3QtPm1fbnVtQ2Fw
dHVyZWRWYXJzKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHByb3BlcnR5TmFtZXMu
YWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmZpcnN0LmdldCgpKSk7CiAgICAgfQogICAgIC8vIFNr
aXAgdGhlIEpTVmFyaWFibGVPYmplY3QgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3duUHJvcGVydHlO
YW1lcwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRp
b246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5oCmluZGV4IGYxZWQxOTA5MzNjYjI4NjNhM2E2ZTdhNjBjMTg2Y2E4MzA1NWE1MTEuLmIyZGFl
ZWM3ZjFmYzViMDFlZGVmZGQxMTUyMmQzNTQ4YjNlNTQwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWly
ZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApp
bmRleCAzN2U5OTcxNzVlOTQ4ZWY1ZjI4NmFjNjY4NzRjMDZiMmExMmEwNDEwLi5jMjNmMWM1MGY0
YzQwNzM0ODNkYTBmZjM4MGVkMGNiMDc3OTI0YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcApAQCAtNTM5LDE1ICs1MzksMTYgQEAgYm9vbCBKU0FycmF5Ojpk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGkpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQXJyYXk6OmdldE93blByb3Bl
cnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTQXJyYXk6OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CisgICAgSlNBcnJheSogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PEpTQXJyYXkqPihvYmplY3QpOwogICAgIC8vIEZJWE1FOiBG
aWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdpdGggYW4gaWRlbnRpZmllciBmb3IgZXZlcnkgaW50
ZWdlcgogICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5cy4g
V2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKICAgICAvLyB3aGljaCBhbG1vc3QgY2VydGFp
bmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVjdHVyZSBmb3IgUHJvcGVydHlOYW1lQXJyYXkuCiAK
LSAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7CisgICAgQXJyYXlTdG9yYWdl
KiBzdG9yYWdlID0gdGhpc09iamVjdC0+bV9zdG9yYWdlOwogICAgIAotICAgIHVuc2lnbmVkIHVz
ZWRWZWN0b3JMZW5ndGggPSBtaW4oc3RvcmFnZS0+bV9sZW5ndGgsIG1fdmVjdG9yTGVuZ3RoKTsK
KyAgICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3RoID0gbWluKHN0b3JhZ2UtPm1fbGVuZ3RoLCB0
aGlzT2JqZWN0LT5tX3ZlY3Rvckxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkgewogICAgICAgICBpZiAoc3RvcmFnZS0+bV92ZWN0b3Jb
aV0pCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMs
IGkpKTsKQEAgLTU2Miw3ICs1NjMsNyBAQCB2b2lkIEpTQXJyYXk6OmdldE93blByb3BlcnR5TmFt
ZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYQogICAgIGlm
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogCi0gICAgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgSlNBcnJheTo6Z2V0TmV3VmVjdG9y
TGVuZ3RoKHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmgKaW5kZXggMTcxNDQ2MzU2YTFjZjZlNWE4ODUzM2Y1ZWU0Nzg0NjM0NDUwOGQ5
MS4uYjJmODU5ZjgxMjQwN2MzNWEwZDRiNWQxZGI0YzEyNDQ4MmE3MzJkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTcyLDcgKzE3Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0g
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAKICAgICAgICAgdm9pZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0U3ViY2xhc3NEYXRhKHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAppbmRleCBkODRkMGUxM2I5MGU5NTFlNjA0MDI2
NjE1MTU3NTY3ZWQ0ZjEwZDllLi5jYmVlNmIyYTA1ZDgyNjlkMDM3NTQ3NmU0ZjBiMThjNDE5MGE4
ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJh
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3Bw
CkBAIC0xMDQsMTIgKzEwNCwxMyBAQCB2b2lkIEpTQnl0ZUFycmF5OjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbQogICAgIHN0YXRp
Y19jYXN0PEpTQnl0ZUFycmF5Kj4oY2VsbCktPnNldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUpOwogfQogCi12b2lkIEpTQnl0ZUFycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQordm9pZCBKU0J5dGVBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3N0
b3JhZ2UtPmxlbmd0aCgpOworICAgIEpTQnl0ZUFycmF5KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNCeXRlQXJyYXkqPihvYmplY3QpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmpl
Y3QtPm1fc3RvcmFnZS0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIGkpKTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggODU1ZmFkZDJiZjhiYmNlMTA0NTlm
MWE1MzJlZjYwNGE0Y2MwMzFlMC4uNjhmY2I4YWM0ZWJhZWYxZWRjYTk0MmIwZDI3MDg3ODkzMjlm
MmQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJy
YXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCkBA
IC05NCw3ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5k
ZXggZmZlY2NmY2MzYWE4Mjc2MmIzNTM5YjM3NDg5OTQwZWY4NDk1NjY0My4uYTk0ODU4ZjJhZTE3
NzA4Njg2ZDFjN2VhNWE5OTFkYWQ0ZGUxNWUxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCkBAIC0xNjksNCArMTY5LDkgQEAgSlNWYWx1ZSBKU0NlbGw6OmRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAordm9pZCBKU0NlbGw6OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGFh
NzdmNzkxOTlmODQzMWI2Y2U2NWM1NDIyNTM5ZmU1YzcxNmI2MDcuLjk3NTc4ZDBhODM3ZmVkZTg3
MmU1NGQwZWFkYTRmOTNmY2ZjNTdmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCkBAIC0zNyw2ICszNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKKworICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKKyAgICAgICAgRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcywKKyAgICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcworICAg
IH07CiAKICAgICBjbGFzcyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsK
QEAgLTEzNiw2ICsxNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gRHVtbXkgaW1w
bGVtZW50YXRpb25zIG9mIG92ZXJyaWRlLWFibGUgc3RhdGljIGZ1bmN0aW9ucyBmb3IgY2xhc3Nl
cyB0byBwdXQgaW4gdGhlaXIgTWV0aG9kVGFibGUKICAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9E
VUVfVE9fQVNTRVJUIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIEpTT2JqZWN0KiwgdW5zaWduZWQpOwogICAgICAgICBzdGF0aWMgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlKTsKKyAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBkMWMzMzZiYzllZDNjZTdiMjE1OGU0Yzc0ZmY3
YzUwY2NlYmY5YzU2Li4yOGZlZTA5N2MzMTYzNWRjMWU4NzljNGQ0MWRlZGUwNGQ5Yzk4ZmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMjk4
LDE4ICsyOTgsMTkgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm8KICAgICByZXR1cm4gQmFzZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CiAKLXZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKK3ZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUg
PT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKKyAgICBKU0Z1bmN0aW9uKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7CisgICAgaWYgKCF0aGlzT2Jq
ZWN0LT5pc0hvc3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4K
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIG1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBzbG90KTsKKyAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IHNsb3QpOwogCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5hcmd1bWVudHMpOwogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuY2FsbGVyKTsKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCk7CiAgICAgfQotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMoZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdm9pZCBKU0Z1bmN0
aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGU5MTY5NTc0MWVl
ZGY1ZGVkZTI4YjkxMWRjMjFkMjQzMGI0YTljMWQuLmQzMTI2YjA4Yzg5NjczZGUxNWI2NzE4ODll
YWNhM2ZlNjUyZmY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICAgICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKaW5kZXggNjFmNmJhM2ZiNjU3MTNkMmNhM2EyMDMz
NWMzM2Q4NWIzMjY0Mjk0My4uYjdmMWI5NDJlNzM1MjA3NWE1NWIwM2ZmYjYzNTI1Mzg1MTFhZDc2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBKU05vdEFuT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKQordm9pZCBKU05v
dEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSkKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAppbmRleCA4OTIyZjkyNjRjZjRjY2MxMzVlNDA5
ZWI3ZDY0ZjA0ZDNjNGYwMWU0Li5mNTU0ZTRkY2ZiYzI3YjBmNTlmNDUzNTdiMDVmNWNiOTUyNmMw
Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5o
CkBAIC03OCw3ICs3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCmluZGV4IDQyN2FiMDI4YmIxZWQxZWYwZmI2OTEzNWE0NDhhZGVhM2Q2NGI1YjUuLmY2
MzBkM2UxMDNkMGFhZWIxNmE4OWJjMDA2NjE1NDQ3ZDhmYzM0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC00OTQsNyArNDk0LDcgQEAgYm9v
bCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0
cmluZ2lmaWVyLCBVU3RyaW5nQnUKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMgPSBz
dHJpbmdpZmllci5tX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzLmRhdGEoKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IG9iamVjdFByb3Bl
cnR5TmFtZXMoZXhlYyk7Ci0gICAgICAgICAgICAgICAgbV9vYmplY3QtPmdldE93blByb3BlcnR5
TmFtZXMoZXhlYywgb2JqZWN0UHJvcGVydHlOYW1lcyk7CisgICAgICAgICAgICAgICAgbV9vYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMobV9vYmplY3QuZ2V0KCksIGV4
ZWMsIG9iamVjdFByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
ICAgICAgICAgICAgIG1fcHJvcGVydHlOYW1lcyA9IG9iamVjdFByb3BlcnR5TmFtZXMucmVsZWFz
ZURhdGEoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fc2l6ZSA9IG1fcHJvcGVydHlO
YW1lcy0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgpOwpAQCAtNzI4LDcgKzcyOCw3IEBAIE5F
VkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAg
ICAgICAgICAgICAgb2JqZWN0U3RhY2sucHVzaChvYmplY3QpOwogICAgICAgICAgICAgICAgIGlu
ZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5k
KFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYykpOwotICAgICAgICAgICAgICAgIG9iamVjdC0+Z2V0
T3duUHJvcGVydHlOYW1lcyhtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpKTsKKyAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKICAgICAgICAgICAgICAgICAvLyBmYWxsdGhyb3VnaAogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAppbmRleCA3ZjEwOTNjNTEzNmUzODQ1NTY4ZGI0MGJlZTk3NjQ1NTlk
Nzk4YTA4Li4zODBjODI4ODE2MDgwMDNjODFlZDNkMjZhMDcxM2M3YTM3MGMwZTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC01MTEsNyArNTExLDcg
QEAgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGUKIAogdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFt
ZXModGhpcywgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAKICAgICBpZiAocHJvdG90eXBl
KCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEpT
T2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZQogICAgICAgICAgICAgcHJvdG90eXBlLT5nZXRQcm9wZXJ0eU5hbWVz
KGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgcHJvdG90eXBlLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOworICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAg
ICAgSlNWYWx1ZSBuZXh0UHJvdG8gPSBwcm90b3R5cGUtPnByb3RvdHlwZSgpOwogICAgICAgICBp
ZiAobmV4dFByb3RvLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC01MzAsMTEgKzUz
MCwxMSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZQogICAgIH0KIH0KIAotdm9pZCBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0g
ICAgc3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKLSAgICBpZiAoIXN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKLSAg
ICAgICAgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIGNsYXNzSW5mbygpLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKKyAgICBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgaWYgKCFvYmplY3Qt
PnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKKyAgICAgICAgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVz
KGV4ZWMsIG9iamVjdC0+Y2xhc3NJbmZvKCksIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBi
b29sIEpTT2JqZWN0Ojp0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGQ2NWU1YWQzNTQ5NDRlM2M5YWI4MzY1YmU5
NTAxZjZkYjJjMjNiZDAuLmU3MzJiOGI4NGM3Y2M3NDFhNzgyZjQ5OTY0MjE1YTUwZDlhNjFlYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTI3LDcgKzEy
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzSW5zdGFuY2Uo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVQcm9wZXJ0eSk7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAKICAgICAgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKICAgICAgICAgYm9vbCB0b0Jvb2xlYW4o
RXhlY1N0YXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuY3BwCmluZGV4IDBhM2QyZjg2MThhOTFkNmQ3NWY3NDY2NDRmZWUz
ZjA4YmVmZDEzYjUuLjQyNThhNDFkMjcyYjRkZWVlY2U4MmM1OWEzNTUyNjM0NzkxMTRmMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
Y3BwCkBAIC0zNCw2ICszNCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorSlNWYXJpYWJsZU9i
amVjdDo6fkpTVmFyaWFibGVPYmplY3QoKQoreworfQorCiBib29sIEpTVmFyaWFibGVPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNWYXJpYWJsZU9iamVjdCogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEpTVmFyaWFibGVPYmplY3QqPihjZWxsKTsKQEAgLTQzLDE1ICs0Nywx
NiBAQCBib29sIEpTVmFyaWFibGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudAogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU1Zh
cmlhYmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBK
U1ZhcmlhYmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewotICAgIFN5bWJvbFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBz
eW1ib2xUYWJsZSgpLmVuZCgpOwotICAgIGZvciAoU3ltYm9sVGFibGU6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gc3ltYm9sVGFibGUoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBKU1Zh
cmlhYmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+
KG9iamVjdCk7CisgICAgU3ltYm9sVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHRoaXNPYmpl
Y3QtPnN5bWJvbFRhYmxlKCkuZW5kKCk7CisgICAgZm9yIChTeW1ib2xUYWJsZTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICBpZiAoIShpdC0+c2Vjb25kLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRF
bnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKICAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmZpcnN0LmdldCgpKSk7CiAg
ICAgfQogICAgIAotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBib29sIEpTVmFyaWFibGVP
YmplY3Q6OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCmluZGV4IDYyNjljNjZiZDRmZjM2YWE1YTMyMDNh
NDczODBhNWI5YTJhYzJlMzAuLjUzYTM5Y2E1OGNmYWM1NmI1OWQzZWZlNDVlOTI5MTIwZTUxMWM5
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2Jq
ZWN0LmgKQEAgLTQ4LDEwICs0OCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiAqbV9zeW1ib2xUYWJsZTsgfQog
CisgICAgICAgIHZpcnR1YWwgfkpTVmFyaWFibGVPYmplY3QoKTsKKwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpID0gMDsKIAogICAgICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAg
ICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJl
c0R5bmFtaWNDaGVja3MpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IGZlN2Y3OTM0ZjQ0NDU5ZmE5
ZjE0MGU0MzcxZWMwOGVlYjE0Y2IwOGMuLjRhNzAzYjUwMWVjM2VjZWZkMTcyNjM0N2M0OTkzMDRi
NWY4NDcwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUq
IGV4ZQogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBw
cm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBhc09iamVjdChleGVjLT5h
cmd1bWVudCgwKSktPmdldE93blByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydGllcywgSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50
KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAg
SlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOwogICAgIHNpemVfdCBu
dW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0xOTIsNyArMTkyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQog
ICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBrZXlzIG9m
IGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5h
cmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKICAgICBKU0FycmF5KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjKTsK
ICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMzA2LDcgKzMwNiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVj
dChwcm9wZXJ0aWVzKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0eU5hbWVzKTsK
KyAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0eU5h
bWVzLnNpemUoKTsKICAgICBWZWN0b3I8UHJvcGVydHlEZXNjcmlwdG9yPiBkZXNjcmlwdG9yczsK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtYXJrQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAppbmRleCBjMzY1MWEyYTU3
OTI3ODlmNTQ0MjJkN2Y1MmFhY2IxYjU3NDMyZjBkLi42OWZjYTEyOTA5ZWZlNWZjMWU3M2Q3YTdj
YjYwZTAzOWE2ZmRhODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBNYXRjaGVzQXJyYXkuaApAQCAtMTA1LDExICsxMDUsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gSlNBcnJheTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBhcnIsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcykKKyAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnIsIEVudW1lcmF0
aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcykKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKHN1YmNsYXNzRGF0YSgpKQotICAgICAgICAgICAgICAgIGZpbGxBcnJheUlu
c3RhbmNlKGV4ZWMpOwotICAgICAgICAgICAgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyhl
eGVjLCBhcnIsIG1vZGUpOworICAgICAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsKKyAgICAgICAg
ICAgIGlmICh0aGlzT2JqZWN0LT5zdWJjbGFzc0RhdGEoKSkKKyAgICAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5maWxsQXJyYXlJbnN0YW5jZShleGVjKTsKKyAgICAgICAgICAgIEpTQXJyYXk6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyLCBtb2RlKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgZmlsbEFycmF5SW5zdGFuY2UoRXhlY1N0YXRlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCBiYzdlMzQz
Y2QwNDg0NGE2NzMyODhiOWU1N2ZkMjY0Y2RhMjQyOGNkLi5mMDIwODdjZDM0ZWJiODhjYWMxYTU5
ZDRlMjJkZjM5ZWVhMTRmOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAKQEAgLTgzLDE0ICs4MywxNSBAQCBib29sIFN0cmluZ09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBpbnQgc2l6ZSA9
IGludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CisgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8U3RyaW5nT2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBpbnQgc2l6ZSA9IHRo
aXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhl
YywgVVN0cmluZzo6bnVtYmVyKGkpKSk7CiAgICAgaWYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcykKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCmluZGV4IDk4ODZlNGFjNDhmZGJiZWMxMmVjMmIyODE2N2VlOTllYzk1OWU0MTYu
LmIxN2I3NDY4MjdmZTU1MGNlZjA2Yjg5M2NmMzk5YzNhYTlkMWY3MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC01Miw3ICs1Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZvIHNfaW5mbzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCAwZWJhNjc1NjNhMjgyZmY2MzM1OWEyODQx
N2FjYWJjNTNhNTNmNDgwLi41NDIzN2YyY2MwZTczYzJkYWU3YWViOWVlZTZjNjQzOGNhZDc4Y2M0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNTAsMTEg
KzUwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CiAgICAg
Y2xhc3MgU2xvdFZpc2l0b3I7CiAKLSAgICBlbnVtIEVudW1lcmF0aW9uTW9kZSB7Ci0gICAgICAg
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCi0gICAgICAgIEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMKLSAgICB9OwotCiAgICAgY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4IDBkNzk3NTgzOWQw
MjMyYjBmMzFjZDEzMjBjNzA4YjRmOWYyOTRmNjkuLjQyNDc5OWFjMDgyZTE2NjA3ZjVjOGI5Mjhi
NzM0MDk3ZmIzMjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2Jq
ZWN0SW1wLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAK
QEAgLTkwLDkgKzkwLDEwIEBAIEpTVmFsdWUgVXNlck9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24o
RXhlY1N0YXRlICpleGVjKQogfQogCiAKLXZvaWQgVXNlck9iamVjdEltcDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgVXNlck9iamVjdEltcDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5TmFtZUFy
cmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBKU1VzZXJP
YmplY3QqIHB0ciA9IEdldEpTVXNlck9iamVjdCgpOworICAgIFVzZXJPYmplY3RJbXAqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxVc2VyT2JqZWN0SW1wKj4ob2JqZWN0KTsKKyAgICBKU1VzZXJP
YmplY3QqIHB0ciA9IHRoaXNPYmplY3QtPkdldEpTVXNlck9iamVjdCgpOwogICAgIGlmIChwdHIp
IHsKICAgICAgICAgQ0ZBcnJheVJlZiBjZlByb3BlcnR5TmFtZXMgPSBwdHItPkNvcHlQcm9wZXJ0
eU5hbWVzKCk7CiAgICAgICAgIGlmIChjZlByb3BlcnR5TmFtZXMpIHsKQEAgLTEwNSw3ICsxMDYs
NyBAQCB2b2lkIFVzZXJPYmplY3RJbXA6OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlICpl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcAogICAgICAgICAgICAgQ0ZSZWxlYXNlKGNmUHJv
cGVydHlOYW1lcyk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgSlNPYmplY3Q6OmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9
CiAKIEpTVmFsdWUgVXNlck9iamVjdEltcDo6dXNlck9iamVjdEdldHRlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCAzOGRkNzc2OTc4M2NkN2RlOGJlOTZhMDgy
MDgyNWFlNWYyZmU4MGFlLi5kNjQ4YTk1YmI1MjE4YzlmMDk0OTc4Yjg2NWMyZjhjMWQzZDc1N2Vk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
IAogICAgIHZpcnR1YWwgSlNWYWx1ZSBjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMpOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUgKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRl
eCA0N2M5Yzg2MWZjNjhlMzEyNjE3YTYwYzM5OTI0NTNkZjJmZmM4NWJjLi41MTY4YTBlOTg2ZmEz
NmI5ZjIxMmU1MzM0NDkyYWRkYjUxYjY3MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTcw
Nyw3ICsxNzA3LDcgQEAgX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVBy
b3BlcnR5RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlMKIF9fWk4zSlNDOEJpbmRpbmdz
MTNSdW50aW1lT2JqZWN0MTRmaW5pc2hDcmVhdGlvbkVQTlNfMTRKU0dsb2JhbE9iamVjdEUKIF9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBOU182SlND
ZWxsRVJOU18xM0NvbnN0cnVjdERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVj
dDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1l
T2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5
TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRp
bWVPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0
ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlND
OEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19a
TjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QzcHV0RVBOU182SlNDZWxsRVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUK
IF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0NnNfaW5mb0UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAppbmRleCBhYTI5
YzM5ZTkwNTY1OGVhNzcwYmM0OWI1MmRhMDdlYWY1NDAwMGFiLi5jYjU3M2RiNDdkZWE3MjRlZmI1
YWQ0YTMyOTQxODBkNDY3NGRiNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC00NiwxNSArNDYsMTYgQEAgSlNWYWx1
ZSBKU0RPTVN0cmluZ01hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIGNvbnN0IElkZW4KICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdGhpc09iai0+aW1w
bCgpLT5pdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAK
LXZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
Cit2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQogeworICAgIEpTRE9NU3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNET01TdHJpbmdNYXAqPihvYmplY3QpOwogICAgIFZlY3RvcjxTdHJpbmc+
IG5hbWVzOwotICAgIG1faW1wbC0+Z2V0TmFtZXMobmFtZXMpOworICAgIHRoaXNPYmplY3QtPm1f
aW1wbC0+Z2V0TmFtZXMobmFtZXMpOwogICAgIHNpemVfdCBsZW5ndGggPSBuYW1lcy5zaXplKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcobmFtZXNbaV0pKSk7
CiAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIGJvb2wgSlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKaW5kZXggNWI5Y2Q4MDhhNWIzYjlmMGE5YjRjMTU3MjVlNGE1YjUwYjYyNTNlMi4u
NmNjMzE3NGZlYjNkZGRmMjRkOTU2MjQyN2Q0ZTQ1ZTQwMDcwMWUzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzc2LDEyICsz
NzYsMTMgQEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU4KICAgICBCYXNlOjpnZXRQcm9wZXJ0eU5h
bWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0RPTVdpbmRvdzo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKKyAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4ob2Jq
ZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSB3aW5kb3cgdG8gZW51bWVyYXRlZCBieSBmcmFt
ZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbShleGVjKSkK
KyAgICBpZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCiAgICAgICAgIHJl
dHVybjsKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3c6OmRlZmluZUdldHRl
cihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApp
bmRleCA4ZjY4Nzk5MzMyMDA2YTY3MWY0ZWQ2Y2ViNjlhNjU3YmJlNmI4ZDczLi4wNzY1NTEzMWQx
ZWU0NzVkZGY3NzNlYzIyMmJmMzczZmI3ZTY5MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTI3LDkgKzEyNywxMCBAQCB2b2lk
IEpTRE9NV2luZG93U2hlbGw6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcAogICAgIHdpbmRvdygpLT5nZXRQcm9wZXJ0eU5hbWVzKGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRE9NV2luZG93U2hlbGw6OmdldE93
blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTRE9NV2luZG93U2hlbGw6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0g
ICAgd2luZG93KCktPmdldE93blByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CisgICAgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9N
V2luZG93U2hlbGwqPihvYmplY3QpOworICAgIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOwogfQogCiB2b2lkIEpTRE9NV2luZG93U2hlbGw6OmRlZmluZUdldHRlcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4IDExODUx
MzI2ZDE1YzVmNDY3YjQzZjdkZjExYzIzN2NlODQxOGVmNzYuLmVlMTQzMTgzYzA4MGY3OTM3NTZk
ZGU4YmVjMjkxZWRiNWM5NmMxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmgKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEpTQzo6RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOworICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lU2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIHNldHRlckZ1
bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgdmlydHVhbCBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAppbmRleCBk
N2ZkYzAwMWQwMTA5YjI4NDVjYzMzY2NmMzM3M2E2ODE5ZjYzMDZhLi5jN2U2YTg1NDE0YzYxODVk
YTY1ZTVjZmZlYmQ3NDcyMzVkOTA3OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKQEAgLTE1NSwxMiArMTU1LDEzIEBAIGJvb2wgSlNIaXN0
b3J5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5
TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKKyAgICBKU0hpc3RvcnkqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0hpc3RvcnkqPihvYmplY3QpOwogICAgIC8vIE9ubHkg
YWxsb3cgdGhlIGhpc3Rvcnkgb2JqZWN0IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBz
YW1lIG9yaWdpbi4KLSAgICBpZiAoIWFsbG93c0FjY2Vzc0Zyb21GcmFtZShleGVjLCBpbXBsKCkt
PmZyYW1lKCkpKQorICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIHRoaXNPYmpl
Y3QtPmltcGwoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9
CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBiN2Zl
YTlmNzZiZDAyNWEzOWU4YjYwNTUwMzlmYmU1ODAyN2U1YmFhLi43ZmY3MDkwYTJjYjc1YjViOWY2
NmY2YjNlZDQ5YzBlNGNjMzcwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTYxLDEyICsxNjEsMTMgQEAgYm9vbCBKU0xvY2F0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAotdm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogeworICAgIEpTTG9jYXRpb24q
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0xvY2F0aW9uKj4ob2JqZWN0KTsKICAgICAvLyBP
bmx5IGFsbG93IHRoZSBsb2NhdGlvbiBvYmplY3QgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4g
dGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGlt
cGwoKS0+ZnJhbWUoKSkpCisgICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgdGhp
c09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgQmFzZTo6
Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpkZWZpbmVHZXR0ZXIoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmluZGV4IGEyNmY0ZjI0YTZhODYxMTNm
NDMwZWUzYTU0ZTJmNTY2MjcxODU2NjIuLmIzMjFiOWIyMmUxOGE5Yjg4YTYxZWJlZjc4MzJhNzYx
MDE5YTE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFn
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3Vz
dG9tLmNwcApAQCAtNjMsMTMgKzYzLDE0IEBAIGJvb2wgSlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCit2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2lt
cGwtPmxlbmd0aCgpOworICAgIEpTU3RvcmFnZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
U3RvcmFnZSo+KG9iamVjdCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bV9p
bXBsLT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgc3RyaW5nVG9VU3Ry
aW5nKG1faW1wbC0+a2V5KGkpKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyh0aGlzT2JqZWN0LT5tX2ltcGwtPmtleShpKSkpKTsK
ICAgICAgICAgCi0gICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggYWYxYTQwNjVmMmVmODMzYWM2MDc2NWVkNjMxNTUyYThhM2Qz
ODE1MC4uY2I4NmIyOWI1OGIwNGUwOWYxNjRiNGZhYTQ2YTIwNTYzMDBmYjE5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBKCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGluc3BlY3Rvck9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICAgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIG9iamVjdC0+Z2V0T3du
UHJvcGVydHlOYW1lcyhzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcyk7CisgICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIHNjcmlwdFN0YXRl
LCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gIHByb3BlcnR5TmFtZXNbaV07CiAgICAgICAg
ICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRTdGF0ZSwgbmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCA0ODViM2E2ZWJhNjhmM2RiOTUzZTcwMjEwNzI1Y2M4ZDQ2MDczYTdm
Li4xOWFlZmMyNmI4NjFmODM5ZjExZTQzOGY1MGFiMGRhZmI1OTY4MjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTcxMCw3ICs3MTAsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIGlucHV0T2JqZWN0U3RhY2su
YXBwZW5kKGluT2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsK
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheSht
X2V4ZWMpKTsKLSAgICAgICAgICAgICAgICBpbk9iamVjdC0+Z2V0T3duUHJvcGVydHlOYW1lcyht
X2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpKTsKKyAgICAgICAgICAgICAgICBpbk9iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhpbk9iamVjdCwgbV9leGVjLCBwcm9w
ZXJ0eVN0YWNrLmxhc3QoKSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAg
ICAgICAgLy8gZmFsbHRocm91Z2gKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0
YXJ0VmlzaXRNZW1iZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDI5ZWU1NTRiMzhkNzM2ZWU3ZWM3MDkyODFlODUzNjkx
YmE2NTI1YzMuLjIyZGU2MzNhOWQ5MTI1NzRlZmU3MDExN2M3ZjZhM2FkYmI3YzgxNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC04MzcsNyArODM3LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEN1c3RvbSBn
ZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifSB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSGFzTnVtZXJpY0luZGV4R2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTtcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYs
IEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAKICAgICB9CiAKQEAgLTE5MjgsMTQgKzE5MjgsMTUgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNOdW1lcmljSW5kZXhHZXR0ZXIifSkgJiYgISRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifSkgewotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzLCAmc19pbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0qPihvYmpl
Y3QpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNOdW1lcmljSW5kZXhHZXR0ZXIifSkgewotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHN0YXRpY19jYXN0PCR7aW1wbENsYXNzTmFtZX0qPihpbXBsKCkpLT5sZW5ndGgoKTsgKytpKVxu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc3RhdGljX2Nhc3Q8JHtpbXBsQ2xhc3NOYW1lfSo+KHRoaXNPYmplY3QtPmltcGwo
KSktPmxlbmd0aCgpOyArK2kpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTtcbiIp
OwogICAgICAgICB9Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmNwcAppbmRleCAyNDQ2N2JmNmZiOGIzMDZlN2IyMjcxYWNmNTA0NzUwMWJkMDgyZTYz
Li43ZDVlNDgxOTk2YzBhNDA5OTZiYTA4N2JkNmUyZDI4YjFjOGI3ZTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xNTM3LDcgKzE1MzcsNyBAQCBib29sIFF0
UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aQogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lk
IFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
Cit2b2lkIFF0UnVudGltZU1ldGFNZXRob2Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcykgewogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4
ZWMsICJjb25uZWN0IikpOwpAQCAtMTU0NSw3ICsxNTQ1LDcgQEAgdm9pZCBRdFJ1bnRpbWVNZXRh
TWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCk7CiAgICAgfQogCi0gICAgUXRSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIFF0UnVudGltZU1ldGhvZDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBK
U1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBjb25zdCBJZGVudGlmaWVyJikKQEAgLTE3NTksMTIgKzE3NTksMTIgQEAgYm9vbCBRdFJ1
bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdAogICAgIHJldHVybiBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi12b2lkIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCit2b2lkIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcykKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAKLSAgICBRdFJ1bnRpbWVNZXRob2Q6OmdldE93blBy
b3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgUXRSdW50aW1lTWV0
aG9kOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CiB9CiAKIEpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6bGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggOWNiYmNkNDEwMjNkNWVlMGU5OWQ1YjEyNDFmMjUzYTI1
Nzc2N2EyZi4uOWYzYjMxMmU1NzE0NjI4OTRkYmZlMDQ0ZmFhNTQwMDUzYWI3NWU2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSAqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAgICAgCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSAqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAgCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCAzMDQwMTQyNzZjNDgzN2Q2OWIxOGIwMDNiN2Y5
OTkyMTQxZTE3NDM5Li5lMGNjODYxYjQ3YzA5NmQ2MjBkYjIyZWJjYzVkNzlmOGRkNjllOWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC02NiwxNiArNjYsMTcg
QEAgSlNWYWx1ZSBSdW50aW1lQXJyYXk6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW4KICAgICByZXR1cm4gdGhpc09iai0+Z2V0Q29uY3Jl
dGVBcnJheSgpLT52YWx1ZUF0KGV4ZWMsIGluZGV4KTsKIH0KIAotdm9pZCBSdW50aW1lQXJyYXk6
OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIFJ1bnRpbWVBcnJheTo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsK
LSAgICB1bnNpZ25lZCBsZW5ndGggPSBnZXRMZW5ndGgoKTsKKyAgICBSdW50aW1lQXJyYXkqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihvYmplY3QpOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmdldExlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbShleGVjLCBpKSk7CiAKICAgICBpZiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoKTsKIAotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWMsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiBib29sIFJ1bnRpbWVB
cnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IGJjOTY3Y2IwMjE1YzhmYTY2MWNiOTRh
YjU0NTM1M2YwMzQ1Y2U5NGYuLmUzYzg5NWMwZTc4Y2M3NTc4MjkwMThiOTQ4MjI5MWVjMTViZjk2
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBCaW5kaW5nczo6QXJyYXkgQmluZGluZ3NBcnJheTsKICAg
ICB2aXJ0dWFsIH5SdW50aW1lQXJyYXkoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
IG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAppbmRl
eCA3YzllNGViMmVkMTNiNWE4YTllZjUzZjNhMTgxODcwZGRiODQ1ODBmLi43YjZhZDJkZjRiZjFi
YzNhZWQwNTVhNmFlYWIzYTBkMDBjMzk2ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5jcHAKQEAgLTMwNCwxNCArMzA0LDE1IEBAIENvbnN0cnVjdFR5cGUgUnVudGlt
ZU9iamVjdDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqIGNlbGwsIENvbnN0cnVjdERhdGEmIGNv
bnN0CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwogfQogCi12b2lkIFJ1bnRpbWVPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKQordm9pZCBSdW50aW1lT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSkKIHsKLSAgICBp
ZiAoIW1faW5zdGFuY2UpIHsKKyAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVjdCk7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2lu
c3RhbmNlKSB7CiAgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IG1faW5z
dGFuY2U7CisgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmplY3QtPm1faW5z
dGFuY2U7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAgICAgaW5zdGFuY2UtPmdldFBy
b3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5oCmluZGV4IGIyNWNkNTdjYmEzNWY4OGJlYzMyZTFjNDAyMGZjZjllMGYzOGIw
YmEuLmY2NmM0OWFmNThkZjczZGUxNTJlNWUxMWI4YWMwZmMxYTk3OWJiYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBz
dGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERh
dGEmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwog
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBhZjE4ODU0
ZjBiOWExYWFlOWY5ZjdhYmEwOGQ0MDIyMTUzODQ0MzQ0Li4wMWFhODlkMDJkYTUzOGQ2Y2VhNWMy
YzYxYWU1ODQ4YTM1NjdkMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0zODIsMTUgKzM4Miwx
NiBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgTlBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU05Q
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgSlNO
UE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRpb25N
b2RlIG1vZGUpCiB7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZv
KTsKLSAgICBpZiAoIW1fbnBPYmplY3QpIHsKKyAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBP
YmplY3QpIHsKICAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIU5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OX0hBU19F
TlVNKG1fbnBPYmplY3QtPl9jbGFzcykgfHwgIW1fbnBPYmplY3QtPl9jbGFzcy0+ZW51bWVyYXRl
KQorICAgIGlmICghTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fSEFTX0VOVU0odGhpc09iamVjdC0+
bV9ucE9iamVjdC0+X2NsYXNzKSB8fCAhdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5l
bnVtZXJhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5QSWRlbnRpZmllciogaWRlbnRpZmll
cnMgPSAwOwpAQCAtMzk5LDEzICs0MDAsMTMgQEAgdm9pZCBKU05QT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnQKICAg
ICAvLyBDYWxsaW5nIE5QQ2xhc3M6OmVudW1lcmF0ZSB3aWxsIGNhbGwgaW50byBwbHVnLWluIGNv
ZGUsIGFuZCB0aGVyZSdzIG5vIHRlbGxpbmcgd2hhdCB0aGUgcGx1Zy1pbiBjYW4gZG8uCiAgICAg
Ly8gKGluY2x1ZGluZyBkZXN0cm95aW5nIHRoZSBwbHVnLWluKS4gQmVjYXVzZSBvZiB0aGlzLCB3
ZSBtYWtlIHN1cmUgdG8ga2VlcCB0aGUgcGx1Zy1pbiBhbGl2ZSB1bnRpbCAKICAgICAvLyB0aGUg
Y2FsbCBoYXMgZmluaXNoZWQuCi0gICAgTlBSdW50aW1lT2JqZWN0TWFwOjpQbHVnaW5Qcm90ZWN0
b3IgcHJvdGVjdG9yKG1fb2JqZWN0TWFwKTsKKyAgICBOUFJ1bnRpbWVPYmplY3RNYXA6OlBsdWdp
blByb3RlY3RvciBwcm90ZWN0b3IodGhpc09iamVjdC0+bV9vYmplY3RNYXApOwogICAgIAogICAg
IHsKICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CiAKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB0aHJvdyBhbiBleGNl
cHRpb24gaWYgZW51bWVyYXRlIHJldHVybnMgZmFsc2U/Ci0gICAgICAgIGlmICghbV9ucE9iamVj
dC0+X2NsYXNzLT5lbnVtZXJhdGUobV9ucE9iamVjdCwgJmlkZW50aWZpZXJzLCAmaWRlbnRpZmll
ckNvdW50KSkKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPmVu
dW1lcmF0ZSh0aGlzT2JqZWN0LT5tX25wT2JqZWN0LCAmaWRlbnRpZmllcnMsICZpZGVudGlmaWVy
Q291bnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIE5QUnVudGltZU9iamVjdE1h
cDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKaW5k
ZXggOWFmZjY5NmNiYTQzMTY0OWI0MmExN2NjMTdlM2M0Yjc0Njk0NjFmNy4uZmVkMTdiM2RiZjhl
ZjUxMTkwNDQyOWZkYTk3YjAyZGM0MmUyZTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC05MSw3ICs5
MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRl
KiwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSk7CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb3BlcnR5R2V0dGVyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKICAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cg==
</data>
<flag name="review"
          id="111545"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>