<?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>164156</bug_id>
          
          <creation_ts>2016-10-28 15:30:40 -0700</creation_ts>
          <short_desc>Rename SharedMemoryMac to something more appropriate</short_desc>
          <delta_ts>2016-10-28 16:42:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bdakin</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245830</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-28 15:30:40 -0700</bug_when>
    <thetext>Rename SharedMemoryMac to something more appropriate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245831</commentid>
    <comment_count>1</comment_count>
      <attachid>293230</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-28 15:34:00 -0700</bug_when>
    <thetext>Created attachment 293230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245834</commentid>
    <comment_count>2</comment_count>
      <attachid>293232</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-28 15:40:22 -0700</bug_when>
    <thetext>Created attachment 293232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245867</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-28 16:42:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/208081</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293230</attachid>
            <date>2016-10-28 15:34:00 -0700</date>
            <delta_ts>2016-10-28 15:40:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164156-20161028153009.patch</filename>
            <type>text/plain</type>
            <size>26769</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODA3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTI4ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJl
ZE1lbW9yeU1hYyB0byBzb21ldGhpbmcgbW9yZSBhcHByb3ByaWF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTU2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lZCBTaGFyZWRNZW1vcnlNYWMg
dG8gU2hhcmVkTWVtb3J5Q29jb2EsIGFzIGl0IHJ1bnMgb24gYWxsIGNvY29hIHBsYXRmb3Jtcywg
bm90IGV4Y2x1c2l2ZWx5IGp1c3QgbWFjLCBhbmQKKyAgICAgICAgdGh1cyBzaG91bGQgYmUgbmFt
ZWQgdG8gcmVmbGVjdCB0aGF0IHJlYWxpdHkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYTog
QWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNw
cC4KKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTYtMTAt
MjggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBD
Rk5ldHdvcmsgY29ubmVjdGlvbiBjYWNoZSBmYXN0IGxhbmUgZm9yIFdlYktpdDIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5j
cHAJKHJldmlzaW9uIDIwODA2MSkJKGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1No
YXJlZE1lbW9yeU1hYy5jcHA6MjA4MDYxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vY29j
b2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWFjaFBvcnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hY2hWTVNQSS5oPgorI2luY2x1
ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF9wb3J0Lmg+CisjaW5j
bHVkZSA8bWFjaC92bV9tYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitTaGFyZWRNZW1vcnk6OkhhbmRsZTo6SGFuZGxlKCkKKyAgICA6IG1fcG9y
dChNQUNIX1BPUlRfTlVMTCkKKyAgICAsIG1fc2l6ZSgwKQoreworfQorCitTaGFyZWRNZW1vcnk6
OkhhbmRsZTo6fkhhbmRsZSgpCit7CisgICAgY2xlYXIoKTsKK30KKworYm9vbCBTaGFyZWRNZW1v
cnk6OkhhbmRsZTo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fcG9ydDsKK30KKwor
dm9pZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xlYXIoKQoreworICAgIGlmIChtX3BvcnQpCisg
ICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIG1fcG9ydCk7CisK
KyAgICBtX3BvcnQgPSBNQUNIX1BPUlRfTlVMTDsKKyAgICBtX3NpemUgPSAwOworfQorCit2b2lk
IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fc2l6ZSk7CisgICAg
ZW5jb2RlciA8PCBJUEM6Ok1hY2hQb3J0KG1fcG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQp
OworICAgIG1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOworfQorCitib29sIFNoYXJlZE1lbW9yeTo6
SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKK3sK
KyAgICBBU1NFUlQoIWhhbmRsZS5tX3BvcnQpOworICAgIEFTU0VSVCghaGFuZGxlLm1fc2l6ZSk7
CisKKyAgICB1aW50NjRfdCBzaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIElQQzo6TWFjaFBvcnQgbWFjaFBvcnQ7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtYWNoUG9ydCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBoYW5kbGUubV9zaXplID0gc2l6ZTsKKyAgICBoYW5kbGUubV9wb3J0ID0gbWFjaFBv
cnQucG9ydCgpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQqIHRv
UG9pbnRlcihtYWNoX3ZtX2FkZHJlc3NfdCBhZGRyZXNzKQoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpKTsKK30KKwor
c3RhdGljIGlubGluZSBtYWNoX3ZtX2FkZHJlc3NfdCB0b1ZNQWRkcmVzcyh2b2lkKiBwb2ludGVy
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxtYWNoX3ZtX2FkZHJlc3NfdD4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHBvaW50ZXIpKTsKK30KKyAgICAKK1JlZlB0cjxTaGFyZWRNZW1v
cnk+IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCit7CisgICAgQVNTRVJUKHNp
emUpOworCisgICAgbWFjaF92bV9hZGRyZXNzX3QgYWRkcmVzczsKKyAgICBrZXJuX3JldHVybl90
IGtyID0gbWFjaF92bV9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCAmYWRkcmVzcywgcm91bmRf
cGFnZShzaXplKSwgVk1fRkxBR1NfQU5ZV0hFUkUpOworICAgIGlmIChrciAhPSBLRVJOX1NVQ0NF
U1MpIHsKKyNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBhbGxvY2F0ZSBtYWNoX3ZtX2FsbG9jYXRlIHNoYXJlZCBtZW1vcnkgKCV6dSBieXRlcyku
ICVzICgleCkiLCBzaXplLCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKKyNlbHNlCisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFZpcnR1YWxNZW1vcnksICIlcCAtIFNoYXJlZE1lbW9yeTo6
YWxsb2NhdGU6IEZhaWxlZCB0byBhbGxvY2F0ZSBtYWNoX3ZtX2FsbG9jYXRlIHNoYXJlZCBtZW1v
cnkgKCV6dSBieXRlcykuICV7cHVibGljfXMgKCV4KSIsIG51bGxwdHIsIHNpemUsIG1hY2hfZXJy
b3Jfc3RyaW5nKGtyKSwga3IpOworI2VuZGlmCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkp
OworICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKKyAgICBzaGFyZWRNZW1vcnktPm1f
ZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKKyAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1B
Q0hfUE9SVF9OVUxMOworICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gUHJvdGVjdGlv
bjo6UmVhZFdyaXRlOworCisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKK30KKwor
c3RhdGljIGlubGluZSB2bV9wcm90X3QgbWFjaFByb3RlY3Rpb24oU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uIHByb3RlY3Rpb24pCit7CisgICAgc3dpdGNoIChwcm90ZWN0aW9uKSB7CisgICAgY2Fz
ZSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5OgorICAgICAgICByZXR1cm4gVk1f
UFJPVF9SRUFEOworICAgIGNhc2UgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGU6
CisgICAgICAgIHJldHVybiBWTV9QUk9UX1JFQUQgfCBWTV9QUk9UX1dSSVRFOworICAgIH0KKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBWTV9QUk9UX05PTkU7Cit9CisK
K3N0YXRpYyBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IG1ha2VNZW1vcnlFbnRyeShzaXplX3Qgc2l6
ZSwgdm1fb2Zmc2V0X3Qgb2Zmc2V0LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlv
biwgbWFjaF9wb3J0X3QgcGFyZW50RW50cnkpCit7CisgICAgbWVtb3J5X29iamVjdF9zaXplX3Qg
bWVtb3J5T2JqZWN0U2l6ZSA9IHJvdW5kX3BhZ2Uoc2l6ZSk7CisKKyAgICBtYWNoX3BvcnRfdCBw
b3J0OworICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX21ha2VfbWVtb3J5X2VudHJ5XzY0KG1h
Y2hfdGFza19zZWxmKCksICZtZW1vcnlPYmplY3RTaXplLCBvZmZzZXQsIG1hY2hQcm90ZWN0aW9u
KHByb3RlY3Rpb24pIHwgVk1fUFJPVF9JU19NQVNLIHwgTUFQX01FTV9WTV9TSEFSRSwgJnBvcnQs
IHBhcmVudEVudHJ5KTsKKyAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7CisjaWYgUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGEgbWFj
aCBwb3J0IGZvciBzaGFyZWQgbWVtb3J5LiAlcyAoJXgpIiwgbWFjaF9lcnJvcl9zdHJpbmcoa3Ip
LCBrcik7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihWaXJ0dWFsTWVtb3J5LCAi
JXAgLSBTaGFyZWRNZW1vcnk6Om1ha2VNZW1vcnlFbnRyeTogRmFpbGVkIHRvIGNyZWF0ZSBhIG1h
Y2ggcG9ydCBmb3Igc2hhcmVkIG1lbW9yeS4gJXtwdWJsaWN9cyAoJXgpIiwgbnVsbHB0ciwgbWFj
aF9lcnJvcl9zdHJpbmcoa3IpLCBrcik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnlPYmplY3RTaXplID49IHNpemUpOworCisg
ICAgcmV0dXJuIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQ6OmFkb3B0KHBvcnQpOworfQorCitSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qg
c2l6ZSwgUHJvdGVjdGlvbiBwcm90ZWN0aW9uKQoreworICAgIEFTU0VSVChzaXplKTsKKworICAg
IGF1dG8gc2VuZFJpZ2h0ID0gbWFrZU1lbW9yeUVudHJ5KHNpemUsIHRvVk1BZGRyZXNzKGRhdGEp
LCBwcm90ZWN0aW9uLCBNQUNIX1BPUlRfTlVMTCk7CisgICAgaWYgKCFzZW5kUmlnaHQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBzaGFyZWRNZW1vcnkoYWRvcHRSZWYoKm5l
dyBTaGFyZWRNZW1vcnkpKTsKKyAgICBzaGFyZWRNZW1vcnktPm1fc2l6ZSA9IHNpemU7CisgICAg
c2hhcmVkTWVtb3J5LT5tX2RhdGEgPSBudWxscHRyOworICAgIHNoYXJlZE1lbW9yeS0+bV9wb3J0
ID0gc2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKKyAgICBzaGFyZWRNZW1vcnktPm1fcHJvdGVj
dGlvbiA9IHByb3RlY3Rpb247CisKKyAgICByZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwor
fQorCitSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUm
IGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aW9uKQoreworICAgIGlmIChoYW5kbGUuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIEFTU0VSVChyb3VuZF9wYWdlKGhhbmRs
ZS5tX3NpemUpID09IGhhbmRsZS5tX3NpemUpOworCisgICAgdm1fcHJvdF90IHZtUHJvdGVjdGlv
biA9IG1hY2hQcm90ZWN0aW9uKHByb3RlY3Rpb24pOworICAgIG1hY2hfdm1fYWRkcmVzc190IG1h
cHBlZEFkZHJlc3MgPSAwOworICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3ZtX21hcChtYWNo
X3Rhc2tfc2VsZigpLCAmbWFwcGVkQWRkcmVzcywgcm91bmRfcGFnZShoYW5kbGUubV9zaXplKSwg
MCwgVk1fRkxBR1NfQU5ZV0hFUkUsIGhhbmRsZS5tX3BvcnQsIDAsIGZhbHNlLCB2bVByb3RlY3Rp
b24sIHZtUHJvdGVjdGlvbiwgVk1fSU5IRVJJVF9OT05FKTsKKyNpZiBSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBudWxscHRy
OworI2Vsc2UKKyAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFZpcnR1YWxNZW1vcnksICIlcCAtIFNoYXJlZE1lbW9yeTo6bWFwOiBGYWlsZWQg
dG8gbWFwIHNoYXJlZCBtZW1vcnkuICV7cHVibGljfXMgKCV4KSIsIG51bGxwdHIsIG1hY2hfZXJy
b3Jfc3RyaW5nKGtyKSwga3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5k
aWYKKworICAgIGF1dG8gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKCpuZXcgU2hhcmVkTWVtb3J5KSk7
CisgICAgc2hhcmVkTWVtb3J5LT5tX3NpemUgPSBoYW5kbGUubV9zaXplOworICAgIHNoYXJlZE1l
bW9yeS0+bV9kYXRhID0gdG9Qb2ludGVyKG1hcHBlZEFkZHJlc3MpOworICAgIHNoYXJlZE1lbW9y
eS0+bV9wb3J0ID0gTUFDSF9QT1JUX05VTEw7CisgICAgc2hhcmVkTWVtb3J5LT5tX3Byb3RlY3Rp
b24gPSBwcm90ZWN0aW9uOworCisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKK30K
KworU2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKK3sKKyAgICBpZiAobV9kYXRhKSB7Cisg
ICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3ZtX2RlYWxsb2NhdGUobWFjaF90YXNrX3Nl
bGYoKSwgdG9WTUFkZHJlc3MobV9kYXRhKSwgcm91bmRfcGFnZShtX3NpemUpKTsKKyNpZiBSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgICAgICBBU1NFUlRfVU5VU0VEKGtyLCBrciA9PSBLRVJOX1NV
Q0NFU1MpOworI2Vsc2UKKyAgICAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoVmlydHVhbE1lbW9yeSwgIiVwIC0gU2hhcmVkTWVtb3J5
Ojp+U2hhcmVkTWVtb3J5OiBGYWlsZWQgdG8gZGVhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5LiAle3B1
YmxpY31zICgleCkiLCB0aGlzLCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAg
ICBpZiAobV9wb3J0KSB7CisgICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3BvcnRfZGVh
bGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBtX3BvcnQpOworI2lmIFJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgICAgIEFTU0VSVF9VTlVTRUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7CisjZWxz
ZQorICAgICAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihWaXJ0dWFsTWVtb3J5LCAiJXAgLSBTaGFyZWRNZW1vcnk6On5TaGFyZWRNZW1v
cnk6IEZhaWxlZCB0byBkZWFsbG9jYXRlIHBvcnQuICV7cHVibGljfXMgKCV4KSIsIHRoaXMsIG1h
Y2hfZXJyb3Jfc3RyaW5nKGtyKSwga3IpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0gICAgICAgIAorfQorICAgIAorYm9vbCBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0
aW9uKQoreworICAgIEFTU0VSVCghaGFuZGxlLm1fcG9ydCk7CisgICAgQVNTRVJUKCFoYW5kbGUu
bV9zaXplKTsKKworICAgIGF1dG8gc2VuZFJpZ2h0ID0gY3JlYXRlU2VuZFJpZ2h0KHByb3RlY3Rp
b24pOworICAgIGlmICghc2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBo
YW5kbGUubV9wb3J0ID0gc2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKKyAgICBoYW5kbGUubV9z
aXplID0gcm91bmRfcGFnZShtX3NpemUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2ln
bmVkIFNoYXJlZE1lbW9yeTo6c3lzdGVtUGFnZVNpemUoKQoreworICAgIHJldHVybiB2bV9wYWdl
X3NpemU7Cit9CisKK1dlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgU2hhcmVkTWVtb3J5OjpjcmVhdGVT
ZW5kUmlnaHQoUHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAoreworICAgIEFTU0VSVChtX3By
b3RlY3Rpb24gPT0gcHJvdGVjdGlvbiB8fCBtX3Byb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVh
ZFdyaXRlICYmIHByb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIEFTU0VS
VCghIW1fZGF0YSBeICEhbV9wb3J0KTsKKworICAgIGlmIChtX3BvcnQgJiYgbV9wcm90ZWN0aW9u
ID09IHByb3RlY3Rpb24pCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0Ojpj
cmVhdGUobV9wb3J0KTsKKworICAgIEFTU0VSVChtX2RhdGEpOworICAgIHJldHVybiBtYWtlTWVt
b3J5RW50cnkobV9zaXplLCB0b1ZNQWRkcmVzcyhtX2RhdGEpLCBwcm90ZWN0aW9uLCBNQUNIX1BP
UlRfTlVMTCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TaGFyZWRNZW1vcnlNYWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TaGFyZWRNZW1vcnlNYWMuY3BwCShy
ZXZpc2lvbiAyMDgwNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVt
b3J5TWFjLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotCi0jaW5jbHVk
ZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL01hY2hWTVNQSS5oPgotI2luY2x1ZGUgPG1hY2gvbWFjaF9l
cnJvci5oPgotI2luY2x1ZGUgPG1hY2gvbWFjaF9wb3J0Lmg+Ci0jaW5jbHVkZSA8bWFjaC92bV9t
YXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1T
aGFyZWRNZW1vcnk6OkhhbmRsZTo6SGFuZGxlKCkKLSAgICA6IG1fcG9ydChNQUNIX1BPUlRfTlVM
TCkKLSAgICAsIG1fc2l6ZSgwKQotewotfQotCi1TaGFyZWRNZW1vcnk6OkhhbmRsZTo6fkhhbmRs
ZSgpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQotYm9vbCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6aXNO
dWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fcG9ydDsKLX0KLQotdm9pZCBTaGFyZWRNZW1v
cnk6OkhhbmRsZTo6Y2xlYXIoKQotewotICAgIGlmIChtX3BvcnQpCi0gICAgICAgIG1hY2hfcG9y
dF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIG1fcG9ydCk7Ci0KLSAgICBtX3BvcnQgPSBN
QUNIX1BPUlRfTlVMTDsKLSAgICBtX3NpemUgPSAwOwotfQotCi12b2lkIFNoYXJlZE1lbW9yeTo6
SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fc2l6ZSk7Ci0gICAgZW5jb2RlciA8PCBJUEM6
Ok1hY2hQb3J0KG1fcG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOwotICAgIG1fcG9ydCA9
IE1BQ0hfUE9SVF9OVUxMOwotfQotCi1ib29sIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBBU1NFUlQoIWhh
bmRsZS5tX3BvcnQpOwotICAgIEFTU0VSVCghaGFuZGxlLm1fc2l6ZSk7Ci0KLSAgICB1aW50NjRf
dCBzaXplOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIElQQzo6TWFjaFBvcnQgbWFjaFBvcnQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtYWNoUG9ydCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBoYW5kbGUu
bV9zaXplID0gc2l6ZTsKLSAgICBoYW5kbGUubV9wb3J0ID0gbWFjaFBvcnQucG9ydCgpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQqIHRvUG9pbnRlcihtYWNoX3Zt
X2FkZHJlc3NfdCBhZGRyZXNzKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpKTsKLX0KLQotc3RhdGljIGlubGluZSBt
YWNoX3ZtX2FkZHJlc3NfdCB0b1ZNQWRkcmVzcyh2b2lkKiBwb2ludGVyKQotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxtYWNoX3ZtX2FkZHJlc3NfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHBvaW50ZXIpKTsKLX0KLSAgICAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9y
eTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCi17Ci0gICAgQVNTRVJUKHNpemUpOwotCi0gICAgbWFj
aF92bV9hZGRyZXNzX3QgYWRkcmVzczsKLSAgICBrZXJuX3JldHVybl90IGtyID0gbWFjaF92bV9h
bGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCAmYWRkcmVzcywgcm91bmRfcGFnZShzaXplKSwgVk1f
RkxBR1NfQU5ZV0hFUkUpOwotICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpIHsKLSNpZiBSRUxF
QVNFX0xPR19ESVNBQkxFRAotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBt
YWNoX3ZtX2FsbG9jYXRlIHNoYXJlZCBtZW1vcnkgKCV6dSBieXRlcykuICVzICgleCkiLCBzaXpl
LCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKLSNlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFZpcnR1YWxNZW1vcnksICIlcCAtIFNoYXJlZE1lbW9yeTo6YWxsb2NhdGU6IEZhaWxl
ZCB0byBhbGxvY2F0ZSBtYWNoX3ZtX2FsbG9jYXRlIHNoYXJlZCBtZW1vcnkgKCV6dSBieXRlcyku
ICV7cHVibGljfXMgKCV4KSIsIG51bGxwdHIsIHNpemUsIG1hY2hfZXJyb3Jfc3RyaW5nKGtyKSwg
a3IpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8g
c2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkpOwotICAgIHNoYXJlZE1l
bW9yeS0+bV9zaXplID0gc2l6ZTsKLSAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRl
cihhZGRyZXNzKTsKLSAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwot
ICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlOwot
Ci0gICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKLX0KLQotc3RhdGljIGlubGluZSB2
bV9wcm90X3QgbWFjaFByb3RlY3Rpb24oU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rp
b24pCi17Ci0gICAgc3dpdGNoIChwcm90ZWN0aW9uKSB7Ci0gICAgY2FzZSBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5OgotICAgICAgICByZXR1cm4gVk1fUFJPVF9SRUFEOwotICAg
IGNhc2UgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGU6Ci0gICAgICAgIHJldHVy
biBWTV9QUk9UX1JFQUQgfCBWTV9QUk9UX1dSSVRFOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBWTV9QUk9UX05PTkU7Ci19Ci0KLXN0YXRpYyBXZWJDb3Jl
OjpNYWNoU2VuZFJpZ2h0IG1ha2VNZW1vcnlFbnRyeShzaXplX3Qgc2l6ZSwgdm1fb2Zmc2V0X3Qg
b2Zmc2V0LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbiwgbWFjaF9wb3J0X3Qg
cGFyZW50RW50cnkpCi17Ci0gICAgbWVtb3J5X29iamVjdF9zaXplX3QgbWVtb3J5T2JqZWN0U2l6
ZSA9IHJvdW5kX3BhZ2Uoc2l6ZSk7Ci0KLSAgICBtYWNoX3BvcnRfdCBwb3J0OwotICAgIGtlcm5f
cmV0dXJuX3Qga3IgPSBtYWNoX21ha2VfbWVtb3J5X2VudHJ5XzY0KG1hY2hfdGFza19zZWxmKCks
ICZtZW1vcnlPYmplY3RTaXplLCBvZmZzZXQsIG1hY2hQcm90ZWN0aW9uKHByb3RlY3Rpb24pIHwg
Vk1fUFJPVF9JU19NQVNLIHwgTUFQX01FTV9WTV9TSEFSRSwgJnBvcnQsIHBhcmVudEVudHJ5KTsK
LSAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7Ci0jaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGEgbWFjaCBwb3J0IGZvciBzaGFy
ZWQgbWVtb3J5LiAlcyAoJXgpIiwgbWFjaF9lcnJvcl9zdHJpbmcoa3IpLCBrcik7Ci0jZWxzZQot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihWaXJ0dWFsTWVtb3J5LCAiJXAgLSBTaGFyZWRNZW1v
cnk6Om1ha2VNZW1vcnlFbnRyeTogRmFpbGVkIHRvIGNyZWF0ZSBhIG1hY2ggcG9ydCBmb3Igc2hh
cmVkIG1lbW9yeS4gJXtwdWJsaWN9cyAoJXgpIiwgbnVsbHB0ciwgbWFjaF9lcnJvcl9zdHJpbmco
a3IpLCBrcik7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBSRUxF
QVNFX0FTU0VSVChtZW1vcnlPYmplY3RTaXplID49IHNpemUpOwotCi0gICAgcmV0dXJuIFdlYkNv
cmU6Ok1hY2hTZW5kUmlnaHQ6OmFkb3B0KHBvcnQpOwotfQotCi1SZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgUHJvdGVjdGlv
biBwcm90ZWN0aW9uKQotewotICAgIEFTU0VSVChzaXplKTsKLQotICAgIGF1dG8gc2VuZFJpZ2h0
ID0gbWFrZU1lbW9yeUVudHJ5KHNpemUsIHRvVk1BZGRyZXNzKGRhdGEpLCBwcm90ZWN0aW9uLCBN
QUNIX1BPUlRfTlVMTCk7Ci0gICAgaWYgKCFzZW5kUmlnaHQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgYXV0byBzaGFyZWRNZW1vcnkoYWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkp
KTsKLSAgICBzaGFyZWRNZW1vcnktPm1fc2l6ZSA9IHNpemU7Ci0gICAgc2hhcmVkTWVtb3J5LT5t
X2RhdGEgPSBudWxscHRyOwotICAgIHNoYXJlZE1lbW9yeS0+bV9wb3J0ID0gc2VuZFJpZ2h0Lmxl
YWtTZW5kUmlnaHQoKTsKLSAgICBzaGFyZWRNZW1vcnktPm1fcHJvdGVjdGlvbiA9IHByb3RlY3Rp
b247Ci0KLSAgICByZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwotfQotCi1SZWZQdHI8U2hh
cmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUmIGhhbmRsZSwgUHJvdGVj
dGlvbiBwcm90ZWN0aW9uKQotewotICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIAotICAgIEFTU0VSVChyb3VuZF9wYWdlKGhhbmRsZS5tX3NpemUpID09IGhh
bmRsZS5tX3NpemUpOwotCi0gICAgdm1fcHJvdF90IHZtUHJvdGVjdGlvbiA9IG1hY2hQcm90ZWN0
aW9uKHByb3RlY3Rpb24pOwotICAgIG1hY2hfdm1fYWRkcmVzc190IG1hcHBlZEFkZHJlc3MgPSAw
OwotICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3ZtX21hcChtYWNoX3Rhc2tfc2VsZigpLCAm
bWFwcGVkQWRkcmVzcywgcm91bmRfcGFnZShoYW5kbGUubV9zaXplKSwgMCwgVk1fRkxBR1NfQU5Z
V0hFUkUsIGhhbmRsZS5tX3BvcnQsIDAsIGZhbHNlLCB2bVByb3RlY3Rpb24sIHZtUHJvdGVjdGlv
biwgVk1fSU5IRVJJVF9OT05FKTsKLSNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGlmIChr
ciAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2Vsc2UKLSAgICBp
ZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFZpcnR1
YWxNZW1vcnksICIlcCAtIFNoYXJlZE1lbW9yeTo6bWFwOiBGYWlsZWQgdG8gbWFwIHNoYXJlZCBt
ZW1vcnkuICV7cHVibGljfXMgKCV4KSIsIG51bGxwdHIsIG1hY2hfZXJyb3Jfc3RyaW5nKGtyKSwg
a3IpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGF1dG8g
c2hhcmVkTWVtb3J5KGFkb3B0UmVmKCpuZXcgU2hhcmVkTWVtb3J5KSk7Ci0gICAgc2hhcmVkTWVt
b3J5LT5tX3NpemUgPSBoYW5kbGUubV9zaXplOwotICAgIHNoYXJlZE1lbW9yeS0+bV9kYXRhID0g
dG9Qb2ludGVyKG1hcHBlZEFkZHJlc3MpOwotICAgIHNoYXJlZE1lbW9yeS0+bV9wb3J0ID0gTUFD
SF9QT1JUX05VTEw7Ci0gICAgc2hhcmVkTWVtb3J5LT5tX3Byb3RlY3Rpb24gPSBwcm90ZWN0aW9u
OwotCi0gICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKLX0KLQotU2hhcmVkTWVtb3J5
Ojp+U2hhcmVkTWVtb3J5KCkKLXsKLSAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgIGtlcm5fcmV0
dXJuX3Qga3IgPSBtYWNoX3ZtX2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgdG9WTUFkZHJl
c3MobV9kYXRhKSwgcm91bmRfcGFnZShtX3NpemUpKTsKLSNpZiBSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgICAgICBBU1NFUlRfVU5VU0VEKGtyLCBrciA9PSBLRVJOX1NVQ0NFU1MpOwotI2Vsc2UK
LSAgICAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoVmlydHVhbE1lbW9yeSwgIiVwIC0gU2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5
OiBGYWlsZWQgdG8gZGVhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5LiAle3B1YmxpY31zICgleCkiLCB0
aGlzLCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBpZiAobV9wb3J0KSB7
Ci0gICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rh
c2tfc2VsZigpLCBtX3BvcnQpOwotI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgIEFT
U0VSVF9VTlVTRUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7Ci0jZWxzZQotICAgICAgICBpZiAo
a3IgIT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihWaXJ0
dWFsTWVtb3J5LCAiJXAgLSBTaGFyZWRNZW1vcnk6On5TaGFyZWRNZW1vcnk6IEZhaWxlZCB0byBk
ZWFsbG9jYXRlIHBvcnQuICV7cHVibGljfXMgKCV4KSIsIHRoaXMsIG1hY2hfZXJyb3Jfc3RyaW5n
KGtyKSwga3IpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0K
LSNlbmRpZgotICAgIH0gICAgICAgIAotfQotICAgIAotYm9vbCBTaGFyZWRNZW1vcnk6OmNyZWF0
ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aW9uKQotewotICAgIEFT
U0VSVCghaGFuZGxlLm1fcG9ydCk7Ci0gICAgQVNTRVJUKCFoYW5kbGUubV9zaXplKTsKLQotICAg
IGF1dG8gc2VuZFJpZ2h0ID0gY3JlYXRlU2VuZFJpZ2h0KHByb3RlY3Rpb24pOwotICAgIGlmICgh
c2VuZFJpZ2h0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBoYW5kbGUubV9wb3J0ID0g
c2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKLSAgICBoYW5kbGUubV9zaXplID0gcm91bmRfcGFn
ZShtX3NpemUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIFNoYXJlZE1lbW9y
eTo6c3lzdGVtUGFnZVNpemUoKQotewotICAgIHJldHVybiB2bV9wYWdlX3NpemU7Ci19Ci0KLVdl
YkNvcmU6Ok1hY2hTZW5kUmlnaHQgU2hhcmVkTWVtb3J5OjpjcmVhdGVTZW5kUmlnaHQoUHJvdGVj
dGlvbiBwcm90ZWN0aW9uKSBjb25zdAotewotICAgIEFTU0VSVChtX3Byb3RlY3Rpb24gPT0gcHJv
dGVjdGlvbiB8fCBtX3Byb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlICYmIHByb3Rl
Y3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIEFTU0VSVCghIW1fZGF0YSBeICEh
bV9wb3J0KTsKLQotICAgIGlmIChtX3BvcnQgJiYgbV9wcm90ZWN0aW9uID09IHByb3RlY3Rpb24p
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0OjpjcmVhdGUobV9wb3J0KTsK
LQotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIHJldHVybiBtYWtlTWVtb3J5RW50cnkobV9zaXpl
LCB0b1ZNQWRkcmVzcyhtX2RhdGEpLCBwcm90ZWN0aW9uLCBNQUNIX1BPUlRfTlVMTCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDgwNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsx
NzcsNiBAQAogCQkxQTI0QjVGMjExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTI0QjVGMDEx
RjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTFBMjRCNUYzMTFG
NTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTI0QjVGMTExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0
aWxpdGllcy5oICovOyB9OwogCQkxQTI0QkVENTEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVt
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTI0
QkVEMzEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggKi87IH07Ci0JCTFBMjRCRjNB
MTIwODk2QTYwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyNEJGMzkxMjA4OTZBNjAwRkJCMDU5IC8q
IFNoYXJlZE1lbW9yeU1hYy5jcHAgKi87IH07CiAJCTFBMjU2RTM3MThBMUE3ODgwMDZGQjkyMiAv
KiBXS05hdmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTI1NkUzNTE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tICovOyB9OwogCQkxQTI1NkUzODE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9u
QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTI1NkUzNjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTI1NkUzQTE4QTFBN0RG
MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjU2RTM5MThBMUE3REYwMDZGQjkyMiAv
KiBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oICovOyB9OwpAQCAtODU5LDYgKzg1OCw3IEBA
CiAJCTNGODdCOUJEMTU4OTQwMTIwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4N0I5QkExNTg5M0Y2
MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5jcHAgKi87IH07CiAJCTNGODdCOUJFMTU4OTQw
MTkwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdCOUJCMTU4OTNGNjMwMDkwRkY2MiAvKiBXZWJDb2xv
ckNob29zZXIuaCAqLzsgfTsKIAkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9y
UGlja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
Rjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCAqLzsgfTsKKwkJNDQ1
MEFFQzAxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBBRUJGMURDM0ZBRTUwMDk5
NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgKi87IH07CiAJCTRBM0NDMThBMTlCMDYzRTcw
MEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzOTE5QUY3
QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
ICovOyB9OwogCQk0QTNDQzE4QjE5QjA2NDBGMDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRBNDEwRjNBMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oICovOyB9OwogCQk0QTNDQzE4QzE5QjA2NDE1MDBEMTRB
RUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQjE5QUY3QjA0MDAyRUJBQjUg
LyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgKi87IH07CkBAIC0yMTgxLDcg
KzIxODEsNiBAQAogCQkxQTI0QjVGMDExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNoVXRpbGl0aWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEI1RjExMUY1MzFFODAwQzM4MjY5
IC8qIE1hY2hVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFj
aFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI0QkVEMzEyMDg5
NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXJlZE1lbW9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTI0
QkYzOTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZE1lbW9yeU1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBMjU2RTM1MThBMUE3ODgwMDZGQjkyMiAvKiBXS05hdmlnYXRp
b25BY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS05h
dmlnYXRpb25BY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjU2RTM2
MThBMUE3ODgwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBMjU2RTM5MThBMUE3REYwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rp
b25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRp
b25BY3Rpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkxOSw2
ICsyOTE4LDcgQEAKIAkJM0Y4N0I5QkExNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb2xvckNob29z
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCQjE1ODkzRjYzMDA5
MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvbG9yQ2hvb3Nlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3
QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDQ1MEFFQkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNoYXJlZE1lbW9yeUNvY29h
LmNwcDsgcGF0aCA9IGNvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkx
OUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ0ODEsNyArNDQ4MSw2IEBACiAJCQkJMUEyNEI1RjExMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuaCAqLywKIAkJCQk1MTkzM0RFQjE5NjVFQjI0MDA4QUMzRUEgLyogTWVudVV0
aWxpdGllcy5oICovLAogCQkJCTUxOTMzREVDMTk2NUVCMjQwMDhBQzNFQSAvKiBNZW51VXRpbGl0
aWVzLm1tICovLAotCQkJCTFBMjRCRjM5MTIwODk2QTYwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlN
YWMuY3BwICovLAogCQkJCTI5NkJEODVCMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRp
ZXMuaCAqLywKIAkJCQkyOTZCRDg1QzE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVz
Lm1tICovLAogCQkJKTsKQEAgLTU0MTQsNiArNTQxMywxNCBAQAogCQkJcGF0aCA9IFJlc291cmNl
cy9tYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NDUwQUVCRTFEQzNG
QUFDMDA5OTQzRjIgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2Nv
YS5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJNEE0MTBGNDExOUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3RyZWFtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTY2ODYsNiArNjY5
Myw3IEBACiAJCUJDMkU2RTc0MTE0MTk2RjAwMEE2M0IxRSAvKiBQbGF0Zm9ybSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDQ1MEFFQkUxREMzRkFBQzAw
OTk0M0YyIC8qIGNvY29hICovLAogCQkJCTM3MDk1MDQxMThBODhCQTQwMDg3QUU1RCAvKiBjZiAq
LywKIAkJCQkxQUEyRTUxQTEyRTRDMDU2MDBCQzQ5NjYgLyogY2cgKi8sCiAJCQkJMzcwOTUwNDIx
OEE4OENERTAwODdBRTVEIC8qIGZvdW5kYXRpb24gKi8sCkBAIC05MzY3LDcgKzkzNzUsNiBAQAog
CQkJCTFBNjQyMEU0MTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzAxQTI2MDExMjY2MkYyMTAwQzlFRDU1IC8qIFNoYXJlYWJsZUJpdG1h
cENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMjE3NDYwMTY0QzIwRTMwMDM3QTVDMSAvKiBT
aGFyZWFibGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQTI0QkYzQTEyMDg5NkE2
MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQUYw
NkQ3MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTI3MkIyOEExNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTUwMyw2ICs5NTEwLDcgQEAKIAkJCQk1MTA1MjM3OTFDNzNEQTc3MDA3OTkzQ0Ig
LyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxNDEyOTk1MUM2NDI4QzIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNTIzNzUxQzczRDM4RjAwNzk5M0NCIC8q
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0NDUwQUVDMDFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNTg3ODAxRDFDNTA4MTAwNEJBOUFGIC8qIFdlYklEQlJl
c3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0NGNkFCQzEyQzkxRUY5MDA4RjlDMzUgLyog
V2ViSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MjExMjc1RDE1NDAwQkM3QkQw
IC8qIFdlYkluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293232</attachid>
            <date>2016-10-28 15:40:22 -0700</date>
            <delta_ts>2016-10-28 16:42:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164156-20161028153631.patch</filename>
            <type>text/plain</type>
            <size>26769</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODA3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTI4ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJl
ZE1lbW9yeU1hYyB0byBzb21ldGhpbmcgbW9yZSBhcHByb3ByaWF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTU2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lZCBTaGFyZWRNZW1vcnlNYWMg
dG8gU2hhcmVkTWVtb3J5Q29jb2EsIGFzIGl0IHJ1bnMgb24gYWxsIGNvY29hIHBsYXRmb3Jtcywg
bm90IGV4Y2x1c2l2ZWx5IGp1c3QgbWFjLCBhbmQKKyAgICAgICAgdGh1cyBzaG91bGQgYmUgbmFt
ZWQgdG8gcmVmbGVjdCB0aGF0IHJlYWxpdHkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYTog
QWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNw
cC4KKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTYtMTAt
MjggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBD
Rk5ldHdvcmsgY29ubmVjdGlvbiBjYWNoZSBmYXN0IGxhbmUgZm9yIFdlYktpdDIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5j
cHAJKHJldmlzaW9uIDIwODA3NikJKGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1No
YXJlZE1lbW9yeU1hYy5jcHA6MjA4MDc2KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vY29j
b2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWFjaFBvcnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hY2hWTVNQSS5oPgorI2luY2x1
ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF9wb3J0Lmg+CisjaW5j
bHVkZSA8bWFjaC92bV9tYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitTaGFyZWRNZW1vcnk6OkhhbmRsZTo6SGFuZGxlKCkKKyAgICA6IG1fcG9y
dChNQUNIX1BPUlRfTlVMTCkKKyAgICAsIG1fc2l6ZSgwKQoreworfQorCitTaGFyZWRNZW1vcnk6
OkhhbmRsZTo6fkhhbmRsZSgpCit7CisgICAgY2xlYXIoKTsKK30KKworYm9vbCBTaGFyZWRNZW1v
cnk6OkhhbmRsZTo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fcG9ydDsKK30KKwor
dm9pZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xlYXIoKQoreworICAgIGlmIChtX3BvcnQpCisg
ICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIG1fcG9ydCk7CisK
KyAgICBtX3BvcnQgPSBNQUNIX1BPUlRfTlVMTDsKKyAgICBtX3NpemUgPSAwOworfQorCit2b2lk
IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fc2l6ZSk7CisgICAg
ZW5jb2RlciA8PCBJUEM6Ok1hY2hQb3J0KG1fcG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQp
OworICAgIG1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOworfQorCitib29sIFNoYXJlZE1lbW9yeTo6
SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKK3sK
KyAgICBBU1NFUlQoIWhhbmRsZS5tX3BvcnQpOworICAgIEFTU0VSVCghaGFuZGxlLm1fc2l6ZSk7
CisKKyAgICB1aW50NjRfdCBzaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIElQQzo6TWFjaFBvcnQgbWFjaFBvcnQ7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtYWNoUG9ydCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBoYW5kbGUubV9zaXplID0gc2l6ZTsKKyAgICBoYW5kbGUubV9wb3J0ID0gbWFjaFBv
cnQucG9ydCgpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQqIHRv
UG9pbnRlcihtYWNoX3ZtX2FkZHJlc3NfdCBhZGRyZXNzKQoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpKTsKK30KKwor
c3RhdGljIGlubGluZSBtYWNoX3ZtX2FkZHJlc3NfdCB0b1ZNQWRkcmVzcyh2b2lkKiBwb2ludGVy
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxtYWNoX3ZtX2FkZHJlc3NfdD4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHBvaW50ZXIpKTsKK30KKyAgICAKK1JlZlB0cjxTaGFyZWRNZW1v
cnk+IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCit7CisgICAgQVNTRVJUKHNp
emUpOworCisgICAgbWFjaF92bV9hZGRyZXNzX3QgYWRkcmVzczsKKyAgICBrZXJuX3JldHVybl90
IGtyID0gbWFjaF92bV9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCAmYWRkcmVzcywgcm91bmRf
cGFnZShzaXplKSwgVk1fRkxBR1NfQU5ZV0hFUkUpOworICAgIGlmIChrciAhPSBLRVJOX1NVQ0NF
U1MpIHsKKyNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBhbGxvY2F0ZSBtYWNoX3ZtX2FsbG9jYXRlIHNoYXJlZCBtZW1vcnkgKCV6dSBieXRlcyku
ICVzICgleCkiLCBzaXplLCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKKyNlbHNlCisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFZpcnR1YWxNZW1vcnksICIlcCAtIFNoYXJlZE1lbW9yeTo6
YWxsb2NhdGU6IEZhaWxlZCB0byBhbGxvY2F0ZSBtYWNoX3ZtX2FsbG9jYXRlIHNoYXJlZCBtZW1v
cnkgKCV6dSBieXRlcykuICV7cHVibGljfXMgKCV4KSIsIG51bGxwdHIsIHNpemUsIG1hY2hfZXJy
b3Jfc3RyaW5nKGtyKSwga3IpOworI2VuZGlmCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkp
OworICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKKyAgICBzaGFyZWRNZW1vcnktPm1f
ZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKKyAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1B
Q0hfUE9SVF9OVUxMOworICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gUHJvdGVjdGlv
bjo6UmVhZFdyaXRlOworCisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKK30KKwor
c3RhdGljIGlubGluZSB2bV9wcm90X3QgbWFjaFByb3RlY3Rpb24oU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uIHByb3RlY3Rpb24pCit7CisgICAgc3dpdGNoIChwcm90ZWN0aW9uKSB7CisgICAgY2Fz
ZSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5OgorICAgICAgICByZXR1cm4gVk1f
UFJPVF9SRUFEOworICAgIGNhc2UgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGU6
CisgICAgICAgIHJldHVybiBWTV9QUk9UX1JFQUQgfCBWTV9QUk9UX1dSSVRFOworICAgIH0KKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBWTV9QUk9UX05PTkU7Cit9CisK
K3N0YXRpYyBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IG1ha2VNZW1vcnlFbnRyeShzaXplX3Qgc2l6
ZSwgdm1fb2Zmc2V0X3Qgb2Zmc2V0LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlv
biwgbWFjaF9wb3J0X3QgcGFyZW50RW50cnkpCit7CisgICAgbWVtb3J5X29iamVjdF9zaXplX3Qg
bWVtb3J5T2JqZWN0U2l6ZSA9IHJvdW5kX3BhZ2Uoc2l6ZSk7CisKKyAgICBtYWNoX3BvcnRfdCBw
b3J0OworICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX21ha2VfbWVtb3J5X2VudHJ5XzY0KG1h
Y2hfdGFza19zZWxmKCksICZtZW1vcnlPYmplY3RTaXplLCBvZmZzZXQsIG1hY2hQcm90ZWN0aW9u
KHByb3RlY3Rpb24pIHwgVk1fUFJPVF9JU19NQVNLIHwgTUFQX01FTV9WTV9TSEFSRSwgJnBvcnQs
IHBhcmVudEVudHJ5KTsKKyAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7CisjaWYgUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGEgbWFj
aCBwb3J0IGZvciBzaGFyZWQgbWVtb3J5LiAlcyAoJXgpIiwgbWFjaF9lcnJvcl9zdHJpbmcoa3Ip
LCBrcik7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihWaXJ0dWFsTWVtb3J5LCAi
JXAgLSBTaGFyZWRNZW1vcnk6Om1ha2VNZW1vcnlFbnRyeTogRmFpbGVkIHRvIGNyZWF0ZSBhIG1h
Y2ggcG9ydCBmb3Igc2hhcmVkIG1lbW9yeS4gJXtwdWJsaWN9cyAoJXgpIiwgbnVsbHB0ciwgbWFj
aF9lcnJvcl9zdHJpbmcoa3IpLCBrcik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnlPYmplY3RTaXplID49IHNpemUpOworCisg
ICAgcmV0dXJuIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQ6OmFkb3B0KHBvcnQpOworfQorCitSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qg
c2l6ZSwgUHJvdGVjdGlvbiBwcm90ZWN0aW9uKQoreworICAgIEFTU0VSVChzaXplKTsKKworICAg
IGF1dG8gc2VuZFJpZ2h0ID0gbWFrZU1lbW9yeUVudHJ5KHNpemUsIHRvVk1BZGRyZXNzKGRhdGEp
LCBwcm90ZWN0aW9uLCBNQUNIX1BPUlRfTlVMTCk7CisgICAgaWYgKCFzZW5kUmlnaHQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBzaGFyZWRNZW1vcnkoYWRvcHRSZWYoKm5l
dyBTaGFyZWRNZW1vcnkpKTsKKyAgICBzaGFyZWRNZW1vcnktPm1fc2l6ZSA9IHNpemU7CisgICAg
c2hhcmVkTWVtb3J5LT5tX2RhdGEgPSBudWxscHRyOworICAgIHNoYXJlZE1lbW9yeS0+bV9wb3J0
ID0gc2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKKyAgICBzaGFyZWRNZW1vcnktPm1fcHJvdGVj
dGlvbiA9IHByb3RlY3Rpb247CisKKyAgICByZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwor
fQorCitSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUm
IGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aW9uKQoreworICAgIGlmIChoYW5kbGUuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIEFTU0VSVChyb3VuZF9wYWdlKGhhbmRs
ZS5tX3NpemUpID09IGhhbmRsZS5tX3NpemUpOworCisgICAgdm1fcHJvdF90IHZtUHJvdGVjdGlv
biA9IG1hY2hQcm90ZWN0aW9uKHByb3RlY3Rpb24pOworICAgIG1hY2hfdm1fYWRkcmVzc190IG1h
cHBlZEFkZHJlc3MgPSAwOworICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3ZtX21hcChtYWNo
X3Rhc2tfc2VsZigpLCAmbWFwcGVkQWRkcmVzcywgcm91bmRfcGFnZShoYW5kbGUubV9zaXplKSwg
MCwgVk1fRkxBR1NfQU5ZV0hFUkUsIGhhbmRsZS5tX3BvcnQsIDAsIGZhbHNlLCB2bVByb3RlY3Rp
b24sIHZtUHJvdGVjdGlvbiwgVk1fSU5IRVJJVF9OT05FKTsKKyNpZiBSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBudWxscHRy
OworI2Vsc2UKKyAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFZpcnR1YWxNZW1vcnksICIlcCAtIFNoYXJlZE1lbW9yeTo6bWFwOiBGYWlsZWQg
dG8gbWFwIHNoYXJlZCBtZW1vcnkuICV7cHVibGljfXMgKCV4KSIsIG51bGxwdHIsIG1hY2hfZXJy
b3Jfc3RyaW5nKGtyKSwga3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5k
aWYKKworICAgIGF1dG8gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKCpuZXcgU2hhcmVkTWVtb3J5KSk7
CisgICAgc2hhcmVkTWVtb3J5LT5tX3NpemUgPSBoYW5kbGUubV9zaXplOworICAgIHNoYXJlZE1l
bW9yeS0+bV9kYXRhID0gdG9Qb2ludGVyKG1hcHBlZEFkZHJlc3MpOworICAgIHNoYXJlZE1lbW9y
eS0+bV9wb3J0ID0gTUFDSF9QT1JUX05VTEw7CisgICAgc2hhcmVkTWVtb3J5LT5tX3Byb3RlY3Rp
b24gPSBwcm90ZWN0aW9uOworCisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKK30K
KworU2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKK3sKKyAgICBpZiAobV9kYXRhKSB7Cisg
ICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3ZtX2RlYWxsb2NhdGUobWFjaF90YXNrX3Nl
bGYoKSwgdG9WTUFkZHJlc3MobV9kYXRhKSwgcm91bmRfcGFnZShtX3NpemUpKTsKKyNpZiBSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgICAgICBBU1NFUlRfVU5VU0VEKGtyLCBrciA9PSBLRVJOX1NV
Q0NFU1MpOworI2Vsc2UKKyAgICAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoVmlydHVhbE1lbW9yeSwgIiVwIC0gU2hhcmVkTWVtb3J5
Ojp+U2hhcmVkTWVtb3J5OiBGYWlsZWQgdG8gZGVhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5LiAle3B1
YmxpY31zICgleCkiLCB0aGlzLCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAg
ICBpZiAobV9wb3J0KSB7CisgICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3BvcnRfZGVh
bGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBtX3BvcnQpOworI2lmIFJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgICAgIEFTU0VSVF9VTlVTRUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7CisjZWxz
ZQorICAgICAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihWaXJ0dWFsTWVtb3J5LCAiJXAgLSBTaGFyZWRNZW1vcnk6On5TaGFyZWRNZW1v
cnk6IEZhaWxlZCB0byBkZWFsbG9jYXRlIHBvcnQuICV7cHVibGljfXMgKCV4KSIsIHRoaXMsIG1h
Y2hfZXJyb3Jfc3RyaW5nKGtyKSwga3IpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0gICAgICAgIAorfQorICAgIAorYm9vbCBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0
aW9uKQoreworICAgIEFTU0VSVCghaGFuZGxlLm1fcG9ydCk7CisgICAgQVNTRVJUKCFoYW5kbGUu
bV9zaXplKTsKKworICAgIGF1dG8gc2VuZFJpZ2h0ID0gY3JlYXRlU2VuZFJpZ2h0KHByb3RlY3Rp
b24pOworICAgIGlmICghc2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBo
YW5kbGUubV9wb3J0ID0gc2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKKyAgICBoYW5kbGUubV9z
aXplID0gcm91bmRfcGFnZShtX3NpemUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2ln
bmVkIFNoYXJlZE1lbW9yeTo6c3lzdGVtUGFnZVNpemUoKQoreworICAgIHJldHVybiB2bV9wYWdl
X3NpemU7Cit9CisKK1dlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgU2hhcmVkTWVtb3J5OjpjcmVhdGVT
ZW5kUmlnaHQoUHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAoreworICAgIEFTU0VSVChtX3By
b3RlY3Rpb24gPT0gcHJvdGVjdGlvbiB8fCBtX3Byb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVh
ZFdyaXRlICYmIHByb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIEFTU0VS
VCghIW1fZGF0YSBeICEhbV9wb3J0KTsKKworICAgIGlmIChtX3BvcnQgJiYgbV9wcm90ZWN0aW9u
ID09IHByb3RlY3Rpb24pCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0Ojpj
cmVhdGUobV9wb3J0KTsKKworICAgIEFTU0VSVChtX2RhdGEpOworICAgIHJldHVybiBtYWtlTWVt
b3J5RW50cnkobV9zaXplLCB0b1ZNQWRkcmVzcyhtX2RhdGEpLCBwcm90ZWN0aW9uLCBNQUNIX1BP
UlRfTlVMTCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TaGFyZWRNZW1vcnlNYWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TaGFyZWRNZW1vcnlNYWMuY3BwCShy
ZXZpc2lvbiAyMDgwNzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVt
b3J5TWFjLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotCi0jaW5jbHVk
ZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL01hY2hWTVNQSS5oPgotI2luY2x1ZGUgPG1hY2gvbWFjaF9l
cnJvci5oPgotI2luY2x1ZGUgPG1hY2gvbWFjaF9wb3J0Lmg+Ci0jaW5jbHVkZSA8bWFjaC92bV9t
YXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1T
aGFyZWRNZW1vcnk6OkhhbmRsZTo6SGFuZGxlKCkKLSAgICA6IG1fcG9ydChNQUNIX1BPUlRfTlVM
TCkKLSAgICAsIG1fc2l6ZSgwKQotewotfQotCi1TaGFyZWRNZW1vcnk6OkhhbmRsZTo6fkhhbmRs
ZSgpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQotYm9vbCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6aXNO
dWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fcG9ydDsKLX0KLQotdm9pZCBTaGFyZWRNZW1v
cnk6OkhhbmRsZTo6Y2xlYXIoKQotewotICAgIGlmIChtX3BvcnQpCi0gICAgICAgIG1hY2hfcG9y
dF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIG1fcG9ydCk7Ci0KLSAgICBtX3BvcnQgPSBN
QUNIX1BPUlRfTlVMTDsKLSAgICBtX3NpemUgPSAwOwotfQotCi12b2lkIFNoYXJlZE1lbW9yeTo6
SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fc2l6ZSk7Ci0gICAgZW5jb2RlciA8PCBJUEM6
Ok1hY2hQb3J0KG1fcG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOwotICAgIG1fcG9ydCA9
IE1BQ0hfUE9SVF9OVUxMOwotfQotCi1ib29sIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBBU1NFUlQoIWhh
bmRsZS5tX3BvcnQpOwotICAgIEFTU0VSVCghaGFuZGxlLm1fc2l6ZSk7Ci0KLSAgICB1aW50NjRf
dCBzaXplOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIElQQzo6TWFjaFBvcnQgbWFjaFBvcnQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtYWNoUG9ydCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBoYW5kbGUu
bV9zaXplID0gc2l6ZTsKLSAgICBoYW5kbGUubV9wb3J0ID0gbWFjaFBvcnQucG9ydCgpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQqIHRvUG9pbnRlcihtYWNoX3Zt
X2FkZHJlc3NfdCBhZGRyZXNzKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpKTsKLX0KLQotc3RhdGljIGlubGluZSBt
YWNoX3ZtX2FkZHJlc3NfdCB0b1ZNQWRkcmVzcyh2b2lkKiBwb2ludGVyKQotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxtYWNoX3ZtX2FkZHJlc3NfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHBvaW50ZXIpKTsKLX0KLSAgICAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9y
eTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCi17Ci0gICAgQVNTRVJUKHNpemUpOwotCi0gICAgbWFj
aF92bV9hZGRyZXNzX3QgYWRkcmVzczsKLSAgICBrZXJuX3JldHVybl90IGtyID0gbWFjaF92bV9h
bGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCAmYWRkcmVzcywgcm91bmRfcGFnZShzaXplKSwgVk1f
RkxBR1NfQU5ZV0hFUkUpOwotICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpIHsKLSNpZiBSRUxF
QVNFX0xPR19ESVNBQkxFRAotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBt
YWNoX3ZtX2FsbG9jYXRlIHNoYXJlZCBtZW1vcnkgKCV6dSBieXRlcykuICVzICgleCkiLCBzaXpl
LCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKLSNlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFZpcnR1YWxNZW1vcnksICIlcCAtIFNoYXJlZE1lbW9yeTo6YWxsb2NhdGU6IEZhaWxl
ZCB0byBhbGxvY2F0ZSBtYWNoX3ZtX2FsbG9jYXRlIHNoYXJlZCBtZW1vcnkgKCV6dSBieXRlcyku
ICV7cHVibGljfXMgKCV4KSIsIG51bGxwdHIsIHNpemUsIG1hY2hfZXJyb3Jfc3RyaW5nKGtyKSwg
a3IpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8g
c2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkpOwotICAgIHNoYXJlZE1l
bW9yeS0+bV9zaXplID0gc2l6ZTsKLSAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRl
cihhZGRyZXNzKTsKLSAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwot
ICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlOwot
Ci0gICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKLX0KLQotc3RhdGljIGlubGluZSB2
bV9wcm90X3QgbWFjaFByb3RlY3Rpb24oU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rp
b24pCi17Ci0gICAgc3dpdGNoIChwcm90ZWN0aW9uKSB7Ci0gICAgY2FzZSBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5OgotICAgICAgICByZXR1cm4gVk1fUFJPVF9SRUFEOwotICAg
IGNhc2UgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGU6Ci0gICAgICAgIHJldHVy
biBWTV9QUk9UX1JFQUQgfCBWTV9QUk9UX1dSSVRFOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBWTV9QUk9UX05PTkU7Ci19Ci0KLXN0YXRpYyBXZWJDb3Jl
OjpNYWNoU2VuZFJpZ2h0IG1ha2VNZW1vcnlFbnRyeShzaXplX3Qgc2l6ZSwgdm1fb2Zmc2V0X3Qg
b2Zmc2V0LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbiwgbWFjaF9wb3J0X3Qg
cGFyZW50RW50cnkpCi17Ci0gICAgbWVtb3J5X29iamVjdF9zaXplX3QgbWVtb3J5T2JqZWN0U2l6
ZSA9IHJvdW5kX3BhZ2Uoc2l6ZSk7Ci0KLSAgICBtYWNoX3BvcnRfdCBwb3J0OwotICAgIGtlcm5f
cmV0dXJuX3Qga3IgPSBtYWNoX21ha2VfbWVtb3J5X2VudHJ5XzY0KG1hY2hfdGFza19zZWxmKCks
ICZtZW1vcnlPYmplY3RTaXplLCBvZmZzZXQsIG1hY2hQcm90ZWN0aW9uKHByb3RlY3Rpb24pIHwg
Vk1fUFJPVF9JU19NQVNLIHwgTUFQX01FTV9WTV9TSEFSRSwgJnBvcnQsIHBhcmVudEVudHJ5KTsK
LSAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7Ci0jaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGEgbWFjaCBwb3J0IGZvciBzaGFy
ZWQgbWVtb3J5LiAlcyAoJXgpIiwgbWFjaF9lcnJvcl9zdHJpbmcoa3IpLCBrcik7Ci0jZWxzZQot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihWaXJ0dWFsTWVtb3J5LCAiJXAgLSBTaGFyZWRNZW1v
cnk6Om1ha2VNZW1vcnlFbnRyeTogRmFpbGVkIHRvIGNyZWF0ZSBhIG1hY2ggcG9ydCBmb3Igc2hh
cmVkIG1lbW9yeS4gJXtwdWJsaWN9cyAoJXgpIiwgbnVsbHB0ciwgbWFjaF9lcnJvcl9zdHJpbmco
a3IpLCBrcik7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBSRUxF
QVNFX0FTU0VSVChtZW1vcnlPYmplY3RTaXplID49IHNpemUpOwotCi0gICAgcmV0dXJuIFdlYkNv
cmU6Ok1hY2hTZW5kUmlnaHQ6OmFkb3B0KHBvcnQpOwotfQotCi1SZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgUHJvdGVjdGlv
biBwcm90ZWN0aW9uKQotewotICAgIEFTU0VSVChzaXplKTsKLQotICAgIGF1dG8gc2VuZFJpZ2h0
ID0gbWFrZU1lbW9yeUVudHJ5KHNpemUsIHRvVk1BZGRyZXNzKGRhdGEpLCBwcm90ZWN0aW9uLCBN
QUNIX1BPUlRfTlVMTCk7Ci0gICAgaWYgKCFzZW5kUmlnaHQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgYXV0byBzaGFyZWRNZW1vcnkoYWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkp
KTsKLSAgICBzaGFyZWRNZW1vcnktPm1fc2l6ZSA9IHNpemU7Ci0gICAgc2hhcmVkTWVtb3J5LT5t
X2RhdGEgPSBudWxscHRyOwotICAgIHNoYXJlZE1lbW9yeS0+bV9wb3J0ID0gc2VuZFJpZ2h0Lmxl
YWtTZW5kUmlnaHQoKTsKLSAgICBzaGFyZWRNZW1vcnktPm1fcHJvdGVjdGlvbiA9IHByb3RlY3Rp
b247Ci0KLSAgICByZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwotfQotCi1SZWZQdHI8U2hh
cmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUmIGhhbmRsZSwgUHJvdGVj
dGlvbiBwcm90ZWN0aW9uKQotewotICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIAotICAgIEFTU0VSVChyb3VuZF9wYWdlKGhhbmRsZS5tX3NpemUpID09IGhh
bmRsZS5tX3NpemUpOwotCi0gICAgdm1fcHJvdF90IHZtUHJvdGVjdGlvbiA9IG1hY2hQcm90ZWN0
aW9uKHByb3RlY3Rpb24pOwotICAgIG1hY2hfdm1fYWRkcmVzc190IG1hcHBlZEFkZHJlc3MgPSAw
OwotICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3ZtX21hcChtYWNoX3Rhc2tfc2VsZigpLCAm
bWFwcGVkQWRkcmVzcywgcm91bmRfcGFnZShoYW5kbGUubV9zaXplKSwgMCwgVk1fRkxBR1NfQU5Z
V0hFUkUsIGhhbmRsZS5tX3BvcnQsIDAsIGZhbHNlLCB2bVByb3RlY3Rpb24sIHZtUHJvdGVjdGlv
biwgVk1fSU5IRVJJVF9OT05FKTsKLSNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGlmIChr
ciAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2Vsc2UKLSAgICBp
ZiAoa3IgIT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFZpcnR1
YWxNZW1vcnksICIlcCAtIFNoYXJlZE1lbW9yeTo6bWFwOiBGYWlsZWQgdG8gbWFwIHNoYXJlZCBt
ZW1vcnkuICV7cHVibGljfXMgKCV4KSIsIG51bGxwdHIsIG1hY2hfZXJyb3Jfc3RyaW5nKGtyKSwg
a3IpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGF1dG8g
c2hhcmVkTWVtb3J5KGFkb3B0UmVmKCpuZXcgU2hhcmVkTWVtb3J5KSk7Ci0gICAgc2hhcmVkTWVt
b3J5LT5tX3NpemUgPSBoYW5kbGUubV9zaXplOwotICAgIHNoYXJlZE1lbW9yeS0+bV9kYXRhID0g
dG9Qb2ludGVyKG1hcHBlZEFkZHJlc3MpOwotICAgIHNoYXJlZE1lbW9yeS0+bV9wb3J0ID0gTUFD
SF9QT1JUX05VTEw7Ci0gICAgc2hhcmVkTWVtb3J5LT5tX3Byb3RlY3Rpb24gPSBwcm90ZWN0aW9u
OwotCi0gICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKLX0KLQotU2hhcmVkTWVtb3J5
Ojp+U2hhcmVkTWVtb3J5KCkKLXsKLSAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgIGtlcm5fcmV0
dXJuX3Qga3IgPSBtYWNoX3ZtX2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgdG9WTUFkZHJl
c3MobV9kYXRhKSwgcm91bmRfcGFnZShtX3NpemUpKTsKLSNpZiBSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgICAgICBBU1NFUlRfVU5VU0VEKGtyLCBrciA9PSBLRVJOX1NVQ0NFU1MpOwotI2Vsc2UK
LSAgICAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoVmlydHVhbE1lbW9yeSwgIiVwIC0gU2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5
OiBGYWlsZWQgdG8gZGVhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5LiAle3B1YmxpY31zICgleCkiLCB0
aGlzLCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBpZiAobV9wb3J0KSB7
Ci0gICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rh
c2tfc2VsZigpLCBtX3BvcnQpOwotI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgIEFT
U0VSVF9VTlVTRUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7Ci0jZWxzZQotICAgICAgICBpZiAo
a3IgIT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihWaXJ0
dWFsTWVtb3J5LCAiJXAgLSBTaGFyZWRNZW1vcnk6On5TaGFyZWRNZW1vcnk6IEZhaWxlZCB0byBk
ZWFsbG9jYXRlIHBvcnQuICV7cHVibGljfXMgKCV4KSIsIHRoaXMsIG1hY2hfZXJyb3Jfc3RyaW5n
KGtyKSwga3IpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0K
LSNlbmRpZgotICAgIH0gICAgICAgIAotfQotICAgIAotYm9vbCBTaGFyZWRNZW1vcnk6OmNyZWF0
ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aW9uKQotewotICAgIEFT
U0VSVCghaGFuZGxlLm1fcG9ydCk7Ci0gICAgQVNTRVJUKCFoYW5kbGUubV9zaXplKTsKLQotICAg
IGF1dG8gc2VuZFJpZ2h0ID0gY3JlYXRlU2VuZFJpZ2h0KHByb3RlY3Rpb24pOwotICAgIGlmICgh
c2VuZFJpZ2h0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBoYW5kbGUubV9wb3J0ID0g
c2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKLSAgICBoYW5kbGUubV9zaXplID0gcm91bmRfcGFn
ZShtX3NpemUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIFNoYXJlZE1lbW9y
eTo6c3lzdGVtUGFnZVNpemUoKQotewotICAgIHJldHVybiB2bV9wYWdlX3NpemU7Ci19Ci0KLVdl
YkNvcmU6Ok1hY2hTZW5kUmlnaHQgU2hhcmVkTWVtb3J5OjpjcmVhdGVTZW5kUmlnaHQoUHJvdGVj
dGlvbiBwcm90ZWN0aW9uKSBjb25zdAotewotICAgIEFTU0VSVChtX3Byb3RlY3Rpb24gPT0gcHJv
dGVjdGlvbiB8fCBtX3Byb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlICYmIHByb3Rl
Y3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIEFTU0VSVCghIW1fZGF0YSBeICEh
bV9wb3J0KTsKLQotICAgIGlmIChtX3BvcnQgJiYgbV9wcm90ZWN0aW9uID09IHByb3RlY3Rpb24p
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0OjpjcmVhdGUobV9wb3J0KTsK
LQotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIHJldHVybiBtYWtlTWVtb3J5RW50cnkobV9zaXpl
LCB0b1ZNQWRkcmVzcyhtX2RhdGEpLCBwcm90ZWN0aW9uLCBNQUNIX1BPUlRfTlVMTCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDgwNzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsx
NzcsNiBAQAogCQkxQTI0QjVGMjExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTI0QjVGMDEx
RjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTFBMjRCNUYzMTFG
NTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTI0QjVGMTExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0
aWxpdGllcy5oICovOyB9OwogCQkxQTI0QkVENTEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVt
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTI0
QkVEMzEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggKi87IH07Ci0JCTFBMjRCRjNB
MTIwODk2QTYwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyNEJGMzkxMjA4OTZBNjAwRkJCMDU5IC8q
IFNoYXJlZE1lbW9yeU1hYy5jcHAgKi87IH07CiAJCTFBMjU2RTM3MThBMUE3ODgwMDZGQjkyMiAv
KiBXS05hdmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTI1NkUzNTE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tICovOyB9OwogCQkxQTI1NkUzODE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9u
QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTI1NkUzNjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTI1NkUzQTE4QTFBN0RG
MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjU2RTM5MThBMUE3REYwMDZGQjkyMiAv
KiBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oICovOyB9OwpAQCAtODU5LDYgKzg1OCw3IEBA
CiAJCTNGODdCOUJEMTU4OTQwMTIwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4N0I5QkExNTg5M0Y2
MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5jcHAgKi87IH07CiAJCTNGODdCOUJFMTU4OTQw
MTkwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdCOUJCMTU4OTNGNjMwMDkwRkY2MiAvKiBXZWJDb2xv
ckNob29zZXIuaCAqLzsgfTsKIAkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9y
UGlja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
Rjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCAqLzsgfTsKKwkJNDQ1
MEFFQzAxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBBRUJGMURDM0ZBRTUwMDk5
NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgKi87IH07CiAJCTRBM0NDMThBMTlCMDYzRTcw
MEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzOTE5QUY3
QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
ICovOyB9OwogCQk0QTNDQzE4QjE5QjA2NDBGMDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRBNDEwRjNBMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oICovOyB9OwogCQk0QTNDQzE4QzE5QjA2NDE1MDBEMTRB
RUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQjE5QUY3QjA0MDAyRUJBQjUg
LyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgKi87IH07CkBAIC0yMTgxLDcg
KzIxODEsNiBAQAogCQkxQTI0QjVGMDExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNoVXRpbGl0aWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEI1RjExMUY1MzFFODAwQzM4MjY5
IC8qIE1hY2hVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFj
aFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI0QkVEMzEyMDg5
NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXJlZE1lbW9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTI0
QkYzOTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZE1lbW9yeU1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBMjU2RTM1MThBMUE3ODgwMDZGQjkyMiAvKiBXS05hdmlnYXRp
b25BY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS05h
dmlnYXRpb25BY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjU2RTM2
MThBMUE3ODgwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBMjU2RTM5MThBMUE3REYwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rp
b25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRp
b25BY3Rpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkxOSw2
ICsyOTE4LDcgQEAKIAkJM0Y4N0I5QkExNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb2xvckNob29z
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCQjE1ODkzRjYzMDA5
MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvbG9yQ2hvb3Nlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3
QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDQ1MEFFQkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNoYXJlZE1lbW9yeUNvY29h
LmNwcDsgcGF0aCA9IGNvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkx
OUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ0ODEsNyArNDQ4MSw2IEBACiAJCQkJMUEyNEI1RjExMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuaCAqLywKIAkJCQk1MTkzM0RFQjE5NjVFQjI0MDA4QUMzRUEgLyogTWVudVV0
aWxpdGllcy5oICovLAogCQkJCTUxOTMzREVDMTk2NUVCMjQwMDhBQzNFQSAvKiBNZW51VXRpbGl0
aWVzLm1tICovLAotCQkJCTFBMjRCRjM5MTIwODk2QTYwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlN
YWMuY3BwICovLAogCQkJCTI5NkJEODVCMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRp
ZXMuaCAqLywKIAkJCQkyOTZCRDg1QzE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVz
Lm1tICovLAogCQkJKTsKQEAgLTU0MTQsNiArNTQxMywxNCBAQAogCQkJcGF0aCA9IFJlc291cmNl
cy9tYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NDUwQUVCRTFEQzNG
QUFDMDA5OTQzRjIgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2Nv
YS5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJNEE0MTBGNDExOUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3RyZWFtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTY2ODYsNiArNjY5
Myw3IEBACiAJCUJDMkU2RTc0MTE0MTk2RjAwMEE2M0IxRSAvKiBQbGF0Zm9ybSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDQ1MEFFQkUxREMzRkFBQzAw
OTk0M0YyIC8qIGNvY29hICovLAogCQkJCTM3MDk1MDQxMThBODhCQTQwMDg3QUU1RCAvKiBjZiAq
LywKIAkJCQkxQUEyRTUxQTEyRTRDMDU2MDBCQzQ5NjYgLyogY2cgKi8sCiAJCQkJMzcwOTUwNDIx
OEE4OENERTAwODdBRTVEIC8qIGZvdW5kYXRpb24gKi8sCkBAIC05MzY3LDcgKzkzNzUsNiBAQAog
CQkJCTFBNjQyMEU0MTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzAxQTI2MDExMjY2MkYyMTAwQzlFRDU1IC8qIFNoYXJlYWJsZUJpdG1h
cENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMjE3NDYwMTY0QzIwRTMwMDM3QTVDMSAvKiBT
aGFyZWFibGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQTI0QkYzQTEyMDg5NkE2
MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQUYw
NkQ3MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTI3MkIyOEExNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTUwMyw2ICs5NTEwLDcgQEAKIAkJCQk1MTA1MjM3OTFDNzNEQTc3MDA3OTkzQ0Ig
LyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxNDEyOTk1MUM2NDI4QzIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNTIzNzUxQzczRDM4RjAwNzk5M0NCIC8q
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0NDUwQUVDMDFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNTg3ODAxRDFDNTA4MTAwNEJBOUFGIC8qIFdlYklEQlJl
c3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0NGNkFCQzEyQzkxRUY5MDA4RjlDMzUgLyog
V2ViSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MjExMjc1RDE1NDAwQkM3QkQw
IC8qIFdlYkluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="316145"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>