<?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>155389</bug_id>
          
          <creation_ts>2016-03-11 23:32:02 -0800</creation_ts>
          <short_desc>When generating Objective-C protocol types, getters for objects need to synthesize a new object instance</short_desc>
          <delta_ts>2016-03-12 19:48:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1173987</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-11 23:32:02 -0800</bug_when>
    <thetext>The current code does this (for example):

- (AutomationPoint *)origin
{
    return (AutomationPoint *)[super objectForKey:@&quot;origin&quot;];
}

However, at runtime the class of self is going to be RWIProtocolJSONObject *, not AutomationPoint *, so any subsequent calls to AutomationPoint properties on the return value will fail as the selectors will not be recognized.

Instead of doing a C-style pointer cast, we need to create a new AutomationPoint object that&apos;s backed by the InspectorObject retrieved from the parent object by key. This requires a new initWithXXX initializer for each object protocol type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173988</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-11 23:33:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/25125821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173993</commentid>
    <comment_count>2</comment_count>
      <attachid>273819</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-12 00:29:50 -0800</bug_when>
    <thetext>Created attachment 273819
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173996</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-12 00:30:50 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173997</commentid>
    <comment_count>4</comment_count>
      <attachid>273821</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-12 00:42:37 -0800</bug_when>
    <thetext>Created attachment 273821
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173998</commentid>
    <comment_count>5</comment_count>
      <attachid>273821</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-12 00:43:05 -0800</bug_when>
    <thetext>Comment on attachment 273821
Proposed Fix

Wrong bug#.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174137</commentid>
    <comment_count>6</comment_count>
      <attachid>273819</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-12 19:48:43 -0800</bug_when>
    <thetext>Comment on attachment 273819
Proposed Fix

Clearing flags on attachment: 273819

Committed r198077: &lt;http://trac.webkit.org/changeset/198077&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174138</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-12 19:48:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273819</attachid>
            <date>2016-03-12 00:29:50 -0800</date>
            <delta_ts>2016-03-12 19:48:43 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-155389-20160312002938.patch</filename>
            <type>text/plain</type>
            <size>30050</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZDk1Y2NkN2U1NWE3Y2VjM2M3Y2I3ZjNjYmRhZDc0MjI1NGJkNmQxLi4zN2ZiZDcwZGNkYmYyMjk5
Yjc5MjE2YTAyY2RkZDBjY2E3MTViN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNi0wMy0xMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXaGVuIGdlbmVyYXRpbmcgT2JqZWN0aXZlLUMgcHJvdG9jb2wgdHlwZXMsIGdldHRl
cnMgZm9yIG9iamVjdHMgbmVlZCB0byBzeW50aGVzaXplIGEgbmV3IG9iamVjdCBpbnN0YW5jZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Mzg5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTEyNTgyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIGluIG9iamVjdCBwcm9wZXJ0eSBn
ZXR0ZXJzIGZvciBPYmplY3RpdmUtQyBwcm90b2NvbCB0eXBlcywgd2UgdXNlCisgICAgICAgIGEg
Qy1zdHlsZSBjYXN0IG9mIHRoZSBtZW1iZXIncyBSV0lQcm90b2NvbEpTT05PYmplY3QgKiB0byB0
aGUgdHlwZSBvZiB0aGUgcHJvcGVydHkuCisgICAgICAgIEhvd2V2ZXIsIGF0IHJ1bnRpbWUgdGhl
IGNsYXNzIG9mIGBzZWxmYCBpcyBnb2luZyB0byBiZSBSV0lQcm90b2NvbEpTT05PYmplY3QgKiwK
KyAgICAgICAgbm90IE1lbWJlclR5cGUgKiwgc28gYW55IHN1YnNlcXVlbnQgY2FsbHMgdG8gTWVt
YmVyVHlwZSBwcm9wZXJ0aWVzIG9uIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgICAgd2lsbCBmYWls
IGFzIHRoZSBzZWxlY3RvcnMgd2lsbCBub3QgYmUgcmVjb2duaXplZC4KKworICAgICAgICBJbnN0
ZWFkIG9mIGRvaW5nIGEgQy1zdHlsZSBwb2ludGVyIGNhc3QsIHdlIG5lZWQgdG8gY3JlYXRlIGEg
bmV3IE1lbWJlclR5cGUgb2JqZWN0CisgICAgICAgIHRoYXQncyBiYWNrZWQgYnkgdGhlIEluc3Bl
Y3Rvck9iamVjdCByZXRyaWV2ZWQgZnJvbSB0aGUgcGFyZW50IG9iamVjdCBieSBrZXkuCisgICAg
ICAgIFRoaXMgcmVxdWlyZXMgYSBuZXcgaW5pdFdpdGhKU09OT2JqZWN0IGluaXRpYWxpemVyIGZv
ciBlYWNoIG9iamVjdCBwcm90b2NvbCB0eXBlLgorCisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weToKKyAgICAgICAgKE9iakNIZWFkZXJH
ZW5lcmF0b3IuX2dlbmVyYXRlX3R5cGVfaW50ZXJmYWNlKTogQWRkIG5ldyBkZWNsYXJhdGlvbi4K
KworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVz
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9pbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV9pbml0X21ldGhvZF9mb3JfanNvbl9vYmplY3QpOiBBZGRlZC4KKyAgICAgICAgRm9yd2FyZCB0
aHJvdWdoIHRvIHRoZSBzdXBlciBjbGFzcyBpbml0aWFsaXplciB3aG8gYXNzaWducyB0aGUgdW5k
ZXJseWluZyBJbnNwZWN0b3JPYmplY3QuCisKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVzSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9yZXF1aXJlZF9t
ZW1iZXJzKToKKyAgICAgICAgRHJpdmUtYnkgY2xlYW51cCB0byB1c2UgdGhlIG1vcmUgY29tcGFj
dCBbc3VwZXIgaW5pdF0gZm9ybS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3Rv
X29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKyAgICAgICAgRm9yIHByb3BlcnR5IGdldHRl
cnMgb2Ygb2JqZWN0cywgdXNlIGluaXRXaXRoSlNPTk9iamVjdDogcmF0aGVyIHRoYW4gYSBDLXN0
eWxlIGNhc3QuCisKKyAgICAgICAgUmViYXNlbGluZSByZWxldmFudCB0ZXN0IHJlc3VsdHMuCisK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVz
dWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJl
c3VsdDoKKwogMjAxNi0wMy0xMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBnZW5lcmF0ZWQgaW5pdFdpdGhQYXlsb2FkOiBwcm90b2NvbCBv
YmplY3QgaW5pdGlhbGl6ZXJzIHNob3VsZCByZWN1cnNpdmVseSBkZWNvZGUgYXJyYXkgYW5kIG9i
amVjdCBtZW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5
CmluZGV4IDgzODZmMzgxODBjMDIyMmM3MjdiOGMzMDBjYTNkYTg1MWNjODFjMGYuLmY1YmE3YWJh
ZmIxMzE0YzdjZDhhYjI4OGQwMTc2Y2YzMmRkMmFiYzMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVy
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CkBAIC0xNjAsOSArMTYwLDEwIEBAIGNsYXNzIE9iakNI
ZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCdAaW50ZXJmYWNlICVzIDogJXNKU09OT2JqZWN0JyAlIChvYmpjX25hbWUsIE9iakNHZW5l
cmF0b3IuT0JKQ19TVEFUSUNfUFJFRklYKSkKIAotICAgICAgICAjIFRoZSBpbml0aWFsaXplciB0
aGF0IHRha2VzIGEgcGF5bG9hZCBpcyBvbmx5IG5lZWRlZCBieSB0aGUgZnJvbnRlbmQuCisgICAg
ICAgICMgVGhlIGluaXRpYWxpemVycyB0aGF0IHRha2UgYSBwYXlsb2FkIG9yIGluc3BlY3RvciBv
YmplY3QgYXJlIG9ubHkgbmVlZGVkIGJ5IHRoZSBmcm9udGVuZC4KICAgICAgICAgaWYgc2VsZi5n
ZXRfZ2VuZXJhdG9yX3NldHRpbmcoJ2dlbmVyYXRlX2Zyb250ZW5kJywgRmFsc2UpOgogICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCctIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0Rp
Y3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsnKQorICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCctIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpT
T05PYmplY3QgKilqc29uT2JqZWN0OycpCiAKICAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZp
bHRlcihsYW1iZGEgbWVtYmVyOiBub3QgbWVtYmVyLmlzX29wdGlvbmFsLCBkZWNsYXJhdGlvbi50
eXBlX21lbWJlcnMpCiAgICAgICAgIG9wdGlvbmFsX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1l
bWJlcjogbWVtYmVyLmlzX29wdGlvbmFsLCBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQppbmRleCBiOGE0NWUyNDdhYjFhNWEyZjUwZmE0
MzcxZjY0Njk5MDk5ZWYwNDU1Li45N2VmMjRhMjczY2Q4YmQ3MTZkZDQ0N2M3MmY2ZmRjODY4Y2Y2
OWI0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTk0LDYgKzk0LDcg
QEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2Vu
ZXJhdG9yKToKICAgICAgICAgaWYgc2VsZi5nZXRfZ2VuZXJhdG9yX3NldHRpbmcoJ2dlbmVyYXRl
X2Zyb250ZW5kJywgRmFsc2UpOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9wYXlsb2Fk
KGRvbWFpbiwgZGVjbGFyYXRpb24pKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dl
bmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9qc29uX29iamVjdChkb21haW4sIGRlY2xhcmF0aW9uKSkK
ICAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBub3QgbWVt
YmVyLmlzX29wdGlvbmFsLCBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCiAgICAgICAgIGlmIHJl
cXVpcmVkX21lbWJlcnM6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJycpCkBAIC0xMDcsNiAr
MTA4LDE3IEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3Io
T2JqQ0dlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnQGVuZCcpCiAgICAgICAgIHJl
dHVybiAnXG4nLmpvaW4obGluZXMpCiAKKyAgICBkZWYgX2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zv
cl9qc29uX29iamVjdChzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uKToKKyAgICAgICAgbGluZXMg
PSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05P
YmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QnKQorICAgICAgICBsaW5l
cy5hcHBlbmQoJ3snKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0
XS5nZXQoKV0pKScpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm4gbmlsOycp
CisgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0
dXJuIHNlbGY7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKKyAgICAgICAgcmV0dXJuICdc
bicuam9pbihsaW5lcykKKwogICAgIGRlZiBfZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX3BheWxv
YWQoc2VsZiwgZG9tYWluLCBkZWNsYXJhdGlvbik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAg
ICAgbGluZXMuYXBwZW5kKCctIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihub25udWxs
IE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkJykKQEAgLTEzNyw4ICsxNDks
NyBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNH
ZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoJXM7JyAlICcgJy5qb2luKHBhaXJzKSkKICAgICAgICAgbGlu
ZXMuYXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgc2VsZiA9IFtzdXBlciBp
bml0XTsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoIXNlbGYpJykKKyAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpJykKICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybiBuaWw7JykKICAgICAgICAgbGluZXMuYXBwZW5k
KCcnKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CmluZGV4IGJlZTk4Y2NkYWQx
ZjE2Yjc1MTkxNTBiZmI2YTcwMWI3NGZlZjM0MzcuLjlhMWFlYzhjZmFiZTMxZjFjYTYwZWNmODVh
MGRjMmJkNGY3MWJjYWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CkBAIC00
NDMsOCArNDQzLDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAg
ICAgICAgIHJldHVybiAnZnJvbVByb3RvY29sU3RyaW5nPCVzPiglcyknICUgKHNlbGYub2JqY19l
bnVtX25hbWVfZm9yX25vbl9hbm9ueW1vdXNfZW51bShtZW1iZXIudHlwZSksIHN1Yl9leHByZXNz
aW9uKQogICAgICAgICAgICAgcmV0dXJuIHN1Yl9leHByZXNzaW9uCiAgICAgICAgIGlmIGNhdGVn
b3J5IGlzIE9iakNUeXBlQ2F0ZWdvcnkuT2JqZWN0OgotICAgICAgICAgICAgb2JqY190eXBlID0g
c2VsZi5vYmpjX3R5cGVfZm9yX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVyKQotICAgICAgICAg
ICAgcmV0dXJuICcoJXMpJXMnICUgKG9iamNfdHlwZSwgc3ViX2V4cHJlc3Npb24pCisgICAgICAg
ICAgICBvYmpjX2NsYXNzID0gc2VsZi5vYmpjX2NsYXNzX2Zvcl90eXBlKG1lbWJlci50eXBlKQor
ICAgICAgICAgICAgcmV0dXJuICdbWyVzIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpb
JXMgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXScgJSAob2JqY19jbGFzcywgc3ViX2V4cHJlc3Np
b24pCiAgICAgICAgIGlmIGNhdGVnb3J5IGlzIE9iakNUeXBlQ2F0ZWdvcnkuQXJyYXk6CiAgICAg
ICAgICAgICBwcm90b2NvbF90eXBlID0gT2JqQ0dlbmVyYXRvci5wcm90b2NvbF90eXBlX2Zvcl90
eXBlKG1lbWJlci50eXBlLmVsZW1lbnRfdHlwZSkKICAgICAgICAgICAgIG9iamNfY2xhc3MgPSBz
ZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUobWVtYmVyLnR5cGUuZWxlbWVudF90eXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDlkNGIyZTNlNmEwODkyMzk4NzJk
NTMwMWQ0YjJhMTBkMzc2MzU1ZGYuLjk3Yjc0YTQxMTgzYjYzZDZmMWQwYmRmZjk1Y2JhNDUwNTRl
NmI0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTEzMDYs
NiArMTMwNiw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvcikgewogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBS
V0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5T
RGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihp
bnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0
cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24pIGludCBjb2RlOwpAQCAtMTY4NywxMSArMTY4OCwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhK
U09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0lu
c3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVy
biBzZWxmOworfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAq
KW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAg
ICBpZiAoIXNlbGYpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKG1l
c3NhZ2UsIEAibWVzc2FnZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2Fs
bC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNh
bGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggYjRiYzE3M2JhMmIyMGYxNGEw
ZWZhN2FhNDQ4ODYyYmMwYmY1NGU3ZC4uZTFjOGJjNDU5ZTg2NDkwMjg3ODMzMWY1OWE4MDkzYjRl
MjlhYTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xMTYzLDYgKzExNjMsNyBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByaW50QwogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBA
aW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmpl
Y3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBpZD4gKilwYXlsb2FkOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDoo
UldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVp
cmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8q
IHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAt
MTU0MiwxMSArMTU0MywxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0
KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBzZWxmOworfQogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50
KWNvZGU7CiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBU
SFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKG1lc3NhZ2UsIEAibWVzc2FnZSIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCAxYWFiYWQy
M2IwOTBlYWJmMzJkZGJkN2E3NmI5YmYxNDIzMmNhNGU3Li4wOTk2Y2UwNDY3NzA5ZGEyMzFiZWVk
ODgyMjU0ZWUzZWNiNzFiNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1l
dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29u
LXJlc3VsdApAQCAtOTE5LDYgKzkxOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFBy
b3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxv
YWQ7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05P
YmplY3QgKilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNT
dHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8gQHBy
b3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CkBAIC0xMTYwLDExICsxMTYxLDE3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KWpzb25PYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9y
T2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIHsKLSAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKKyAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfUkVRVUlSRURfUFJPUEVSVFkobWVzc2FnZSwgQCJtZXNzYWdlIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRv
bWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCA1YTdkNGY2YTM1NTVh
YzhlZWFiZDQyNDZkMWU2MTVmZGY5YjUyOGU5Li5lMWFhNmU3ODVkZTA4OTg4MTUyNjliOGRhOWE4
ZmFhMzBkNWVmMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3Vh
cmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMu
anNvbi1yZXN1bHQKQEAgLTk2Niw2ICs5NjYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRl
c3RQcm90b2NvbE5ldHdvcmsyTmV0d29ya0Vycm9yIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICopcGF5bG9hZDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhN
ZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAq
LyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1
aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTExOTQs
MTEgKzExOTUsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBz
ZWxmOwogfQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xK
U09OT2JqZWN0ICopanNvbk9iamVjdAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gc2VsZjsKK30KIAogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2Rl
OwogewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQorICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVEhST1df
RVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShtZXNzYWdlLCBAIm1lc3NhZ2UiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93
ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDcxM2VkOTU2ZTc0NzVi
OTc5YmQxNTMwNmU3ZTJmNjdlYzhmYWYwYTIuLmQ3MzljYzNjZTY0MTJhYWIwZGJlYjg0NDFlZjdl
ZGE2OWJiNzkxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdApA
QCAtNzczLDYgKzc3Myw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2Nv
bFJ1bnRpbWVLZXlQYXRoVHlwZSkgewogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoIDogUldJUHJvdG9j
b2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25h
cnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpT
T05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhUeXBlOihUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpdHlwZTsK
IC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFRlc3RQcm90b2Nv
bFJ1bnRpbWVLZXlQYXRoVHlwZSB0eXBlOwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdHJpbmc7CkBAIC0xMDEzLDExICsxMDE0LDE3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25P
YmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFR5
cGU6KFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSl0eXBlOwogewotICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgc2VsZi50eXBlID0gdHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggN2FiNjE2MTViMjU2N2Q5NTUxYTEz
ZjgzNmNjMjlkOGMwNGU2OWNiMC4uY2ZjYzNkMTI1MTA4ZjBkMTE2ZjYzYWIyNzE5Zjg4MGEwMDUw
MzlkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTExNjYsNiAr
MTE2Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJv
ciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9h
ZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0
OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNv
ZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbikgaW50IGNvZGU7CkBAIC0xMTc0LDYgKzExNzUsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVy
QnVuZGxlIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQ
YXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25P
YmplY3Q7CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJh
eS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lczsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbm90ZXM7CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVy
dHkgKG5vbmF0b21pYywgYXNzaWduKSBkb3VibGUgdGltZXN0YW1wOwpAQCAtMTE4Niw2ICsxMTg4
LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0
YWJhc2VQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXls
b2FkOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopanNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVz
OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilu
b3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05P
YmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBl
cnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yIGVycm9yTGlzdDooTlNBcnJh
eS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3Q7CiAvKiByZXF1aXJl
ZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiovICpj
b2x1bW5OYW1lczsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBO
U1N0cmluZyAqbm90ZXM7CkBAIC0xMTk5LDYgKzEyMDIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9wZXJ0eU5h
bWVDb25mbGljdHMgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICop
anNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEludGVnZXI6KE5TU3RyaW5nICop
aW50ZWdlciBhcnJheTooTlNTdHJpbmcgKilhcnJheSBzdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIG9iamVjdDooTlNTdHJpbmcgKilvYmplY3Q7CiAvKiBy
ZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmludGVnZXI7
CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmFy
cmF5OwpAQCAtMTIxMCwxMSArMTIxNCwxMyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGlu
dGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUR1bW15T2JqZWN0IDogUldJUHJvdG9jb2xKU09O
T2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmpl
Y3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiBAZW5kCiAKIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xU
ZXN0UGFyYW1ldGVyQnVuZGxlIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9h
ZDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9i
amVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2x1bW5OYW1lczoo
TlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90
ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgZXJy
b3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcjsKIC8qIHJlcXVpcmVkICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5h
bWVzOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5n
ICpub3RlczsKQEAgLTE0NzgsMTEgKzE0ODQsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAogICAgIHJldHVybiBzZWxmOwogfQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9i
amVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0
b3JPYmplY3RdLmdldCgpXSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gc2Vs
ZjsKK30KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNz
YWdlIGNvZGU6KGludCljb2RlOwogewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYg
KCFzZWxmKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShtZXNzYWdl
LCBAIm1lc3NhZ2UiKTsKQEAgLTE1MzgsNiArMTU1MCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhK
U09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0lu
c3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVy
biBzZWxmOworfQogCiAtICh2b2lkKXNldENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+
Ki8gKiljb2x1bW5OYW1lcwogewpAQCAtMTU3Niw3ICsxNTk1LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogLSAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzCiB7Ci0gICAg
cmV0dXJuIChSV0lQcm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFs
dWVzIl07CisgICAgcmV0dXJuIFtbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0
aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdIHRvSW5zcGVj
dG9yT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQpc2V0UGF5bG9hZDooUldJUHJvdG9jb2xK
U09OT2JqZWN0ICopcGF5bG9hZApAQCAtMTU4Niw3ICsxNjA1LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogLSAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZAogewotICAg
IHJldHVybiAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpAInBh
eWxvYWQiXTsKKyAgICByZXR1cm4gW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRX
aXRoSW5zcGVjdG9yT2JqZWN0Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdIHRvSW5z
cGVjdG9yT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQpc2V0RXJyb3I6KFRlc3RQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKillcnJvcgpAQCAtMTU5Niw3ICsxNjE1LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yCiB7
Ci0gICAgcmV0dXJuIChUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopW3N1cGVyIG9iamVjdEZv
cktleTpAImVycm9yIl07CisgICAgcmV0dXJuIFtbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciBh
bGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJlcnJv
ciJdIHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQpc2V0RXJyb3JMaXN0
OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdApAQCAt
MTY0MiwxMSArMTY2MSwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0
KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBzZWxmOworfQogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICop
Y29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGlt
ZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJX
SVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgZXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNl
RXJyb3IgKillcnJvciBlcnJvckxpc3Q6KE5TQXJyYXkvKjxUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yPiovICopZXJyb3JMaXN0OwogewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYg
KCFzZWxmKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShjb2x1bW5O
YW1lcywgQCJjb2x1bW5OYW1lcyIpOwpAQCAtMTcwNSw3ICsxNzMwLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogLSAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzCiB7Ci0g
ICAgcmV0dXJuIChSV0lQcm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAi
dmFsdWVzIl07CisgICAgcmV0dXJuIFtbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0
V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdIHRvSW5z
cGVjdG9yT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQpc2V0UGF5bG9hZDooUldJUHJvdG9j
b2xKU09OT2JqZWN0ICopcGF5bG9hZApAQCAtMTcxNSw3ICsxNzQwLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogLSAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZAogewot
ICAgIHJldHVybiAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpA
InBheWxvYWQiXTsKKyAgICByZXR1cm4gW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGlu
aXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdIHRv
SW5zcGVjdG9yT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQpc2V0RXJyb3I6KFRlc3RQcm90
b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcgpAQCAtMTcyNSw3ICsxNzUwLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9y
CiB7Ci0gICAgcmV0dXJuIChUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopW3N1cGVyIG9iamVj
dEZvcktleTpAImVycm9yIl07CisgICAgcmV0dXJuIFtbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJv
ciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJl
cnJvciJdIHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQpc2V0RXJyb3JM
aXN0OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdApA
QCAtMTc2NSwxMSArMTc5MCwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQ
cm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0u
Z2V0KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBzZWxmOworfQogCiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbnRlZ2VyOihOU1N0cmluZyAqKWludGVnZXIgYXJyYXk6
KE5TU3RyaW5nICopYXJyYXkgc3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB2YWx1ZTooTlNTdHJp
bmcgKil2YWx1ZSBvYmplY3Q6KE5TU3RyaW5nICopb2JqZWN0OwogewotICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJF
RF9QUk9QRVJUWShpbnRlZ2VyLCBAImludGVnZXIiKTsKQEAgLTE4NDgsNiArMTg3OSwxMyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29u
T2JqZWN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVj
dDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHJldHVybiBzZWxmOworfQogCiBAZW5kCiAKQEAgLTE4NzksMTEgKzE5MTcs
MTcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopanNvbk9iamVjdAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0
b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gc2VsZjsKK30KIAogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5v
dGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6
KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05P
YmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3I7
CiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCisgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJPV19F
WENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5hbWVz
Iik7CkBAIC0xOTM5LDcgKzE5ODMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAt
IChSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKIHsKLSAgICByZXR1cm4gKFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXTsKKyAgICByZXR1
cm4gW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFsdWVzIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgp
XTsKIH0KIAogLSAodm9pZClzZXRQYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXls
b2FkCkBAIC0xOTQ5LDcgKzE5OTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAt
IChSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCiB7Ci0gICAgcmV0dXJuIChSV0lQcm90
b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdOworICAgIHJl
dHVybiBbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmpl
Y3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdl
dCgpXTsKIH0KIAogLSAodm9pZClzZXRFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAq
KWVycm9yCkBAIC0xOTU5LDcgKzIwMDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiAtIChUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IKIHsKLSAgICByZXR1cm4gKFRl
c3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3IiXTsK
KyAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aElu
c3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl0gdG9JbnNwZWN0b3JP
YmplY3RdLmdldCgpXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRp
bWUtY2FzdHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJl
c3VsdAppbmRleCBiZWQxNDgyYmZmOGU0N2NmMmUwNTY2ODZjNjlmMGU0M2E4MTU2NDc3Li40OGEy
MDcxNGFlZTU4YjExOWNkNWVjYzQ3NzA3OTFiODhjOTEwNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1
aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGlt
ZS1jYXN0cy5qc29uLXJlc3VsdApAQCAtMTA2MSw2ICsxMDYxLDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMpIHsKIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0
VHlwZU5lZWRpbmdDYXN0IDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIG51bWJlcjooaW50KW51bWJlciBhbmltYWxzOihUZXN0UHJvdG9jb2xUZXN0Q2Fz
dGVkQW5pbWFscylhbmltYWxzIGlkZW50aWZpZXI6KGludClpZGVudGlmaWVyIHRyZWU6KFRlc3RQ
cm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopdHJlZTsKIC8qIHJlcXVpcmVkICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqc3RyaW5nOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IG51bWJlcjsKQEAgLTEwNzIsMTIgKzEw
NzMsMTQgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29s
VGVzdFJlY3Vyc2l2ZU9iamVjdDEgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXls
b2FkOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopanNvbk9iamVjdDsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4pIFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICpvYmo7CiBAZW5kCiAK
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0
UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlk
PiAqKXBheWxvYWQ7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChu
b25hdG9taWMsIHJldGFpbikgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgKm9iajsK
IEBlbmQKIApAQCAtMTM5OCwxMSArMTQwMSwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2Jq
ZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rv
ck9iamVjdF0uZ2V0KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBzZWxm
OworfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IG51bWJlcjooaW50KW51bWJlciBhbmltYWxzOihUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFs
cylhbmltYWxzIGlkZW50aWZpZXI6KGludClpZGVudGlmaWVyIHRyZWU6KFRlc3RQcm90b2NvbFRl
c3RSZWN1cnNpdmVPYmplY3QxICopdHJlZTsKIHsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwot
ICAgIGlmICghc2VsZikKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFko
c3RyaW5nLCBAInN0cmluZyIpOwpAQCAtMTQ2NCw3ICsxNDczLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgKil0cmVl
CiB7Ci0gICAgcmV0dXJuIChUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqKVtzdXBl
ciBvYmplY3RGb3JLZXk6QCJ0cmVlIl07CisgICAgcmV0dXJuIFtbVGVzdFByb3RvY29sVGVzdFJl
Y3Vyc2l2ZU9iamVjdDEgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltbc3VwZXIgb2Jq
ZWN0Rm9yS2V5OkAidHJlZSJdIHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV07CiB9CiAKIEBlbmQK
QEAgLTE0ODAsNiArMTQ4OSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQ
cm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0u
Z2V0KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBzZWxmOworfQogCiAt
ICh2b2lkKXNldE9iajooVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDIgKilvYmoKIHsK
QEAgLTE0ODgsNyArMTUwNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKFRl
c3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICopb2JqCiB7Ci0gICAgcmV0dXJuIChUZXN0
UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJvYmoi
XTsKKyAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiBhbGxvY10g
aW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJvYmoiXSB0b0lu
c3BlY3Rvck9iamVjdF0uZ2V0KCldOwogfQogCiBAZW5kCkBAIC0xNTA0LDYgKzE1MjAsMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQorLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNv
bk9iamVjdAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmpl
Y3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICByZXR1cm4gc2VsZjsKK30KIAogLSAodm9pZClzZXRPYmo6KFRlc3RQcm90
b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopb2JqCiB7CkBAIC0xNTEyLDcgKzE1MzUsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtIChUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZl
T2JqZWN0MSAqKW9iagogewotICAgIHJldHVybiAoVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9i
amVjdDEgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAib2JqIl07CisgICAgcmV0dXJuIFtbVGVzdFBy
b3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAib2JqIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXTsK
IH0KIAogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273821</attachid>
            <date>2016-03-12 00:42:37 -0800</date>
            <delta_ts>2016-03-12 00:43:05 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-155389-20160312004224.patch</filename>
            <type>text/plain</type>
            <size>49064</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZDk1Y2NkN2U1NWE3Y2VjM2M3Y2I3ZjNjYmRhZDc0MjI1NGJkNmQxLi4zN2ZiZDcwZGNkYmYyMjk5
Yjc5MjE2YTAyY2RkZDBjY2E3MTViN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNi0wMy0xMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXaGVuIGdlbmVyYXRpbmcgT2JqZWN0aXZlLUMgcHJvdG9jb2wgdHlwZXMsIGdldHRl
cnMgZm9yIG9iamVjdHMgbmVlZCB0byBzeW50aGVzaXplIGEgbmV3IG9iamVjdCBpbnN0YW5jZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1Mzg5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTEyNTgyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIGluIG9iamVjdCBwcm9wZXJ0eSBn
ZXR0ZXJzIGZvciBPYmplY3RpdmUtQyBwcm90b2NvbCB0eXBlcywgd2UgdXNlCisgICAgICAgIGEg
Qy1zdHlsZSBjYXN0IG9mIHRoZSBtZW1iZXIncyBSV0lQcm90b2NvbEpTT05PYmplY3QgKiB0byB0
aGUgdHlwZSBvZiB0aGUgcHJvcGVydHkuCisgICAgICAgIEhvd2V2ZXIsIGF0IHJ1bnRpbWUgdGhl
IGNsYXNzIG9mIGBzZWxmYCBpcyBnb2luZyB0byBiZSBSV0lQcm90b2NvbEpTT05PYmplY3QgKiwK
KyAgICAgICAgbm90IE1lbWJlclR5cGUgKiwgc28gYW55IHN1YnNlcXVlbnQgY2FsbHMgdG8gTWVt
YmVyVHlwZSBwcm9wZXJ0aWVzIG9uIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgICAgd2lsbCBmYWls
IGFzIHRoZSBzZWxlY3RvcnMgd2lsbCBub3QgYmUgcmVjb2duaXplZC4KKworICAgICAgICBJbnN0
ZWFkIG9mIGRvaW5nIGEgQy1zdHlsZSBwb2ludGVyIGNhc3QsIHdlIG5lZWQgdG8gY3JlYXRlIGEg
bmV3IE1lbWJlclR5cGUgb2JqZWN0CisgICAgICAgIHRoYXQncyBiYWNrZWQgYnkgdGhlIEluc3Bl
Y3Rvck9iamVjdCByZXRyaWV2ZWQgZnJvbSB0aGUgcGFyZW50IG9iamVjdCBieSBrZXkuCisgICAg
ICAgIFRoaXMgcmVxdWlyZXMgYSBuZXcgaW5pdFdpdGhKU09OT2JqZWN0IGluaXRpYWxpemVyIGZv
ciBlYWNoIG9iamVjdCBwcm90b2NvbCB0eXBlLgorCisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weToKKyAgICAgICAgKE9iakNIZWFkZXJH
ZW5lcmF0b3IuX2dlbmVyYXRlX3R5cGVfaW50ZXJmYWNlKTogQWRkIG5ldyBkZWNsYXJhdGlvbi4K
KworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVz
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9pbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV9pbml0X21ldGhvZF9mb3JfanNvbl9vYmplY3QpOiBBZGRlZC4KKyAgICAgICAgRm9yd2FyZCB0
aHJvdWdoIHRvIHRoZSBzdXBlciBjbGFzcyBpbml0aWFsaXplciB3aG8gYXNzaWducyB0aGUgdW5k
ZXJseWluZyBJbnNwZWN0b3JPYmplY3QuCisKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVzSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9yZXF1aXJlZF9t
ZW1iZXJzKToKKyAgICAgICAgRHJpdmUtYnkgY2xlYW51cCB0byB1c2UgdGhlIG1vcmUgY29tcGFj
dCBbc3VwZXIgaW5pdF0gZm9ybS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3Rv
X29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKyAgICAgICAgRm9yIHByb3BlcnR5IGdldHRl
cnMgb2Ygb2JqZWN0cywgdXNlIGluaXRXaXRoSlNPTk9iamVjdDogcmF0aGVyIHRoYW4gYSBDLXN0
eWxlIGNhc3QuCisKKyAgICAgICAgUmViYXNlbGluZSByZWxldmFudCB0ZXN0IHJlc3VsdHMuCisK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVz
dWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJl
c3VsdDoKKwogMjAxNi0wMy0xMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBnZW5lcmF0ZWQgaW5pdFdpdGhQYXlsb2FkOiBwcm90b2NvbCBv
YmplY3QgaW5pdGlhbGl6ZXJzIHNob3VsZCByZWN1cnNpdmVseSBkZWNvZGUgYXJyYXkgYW5kIG9i
amVjdCBtZW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmQwYWNjNDljNWJjMmE2OWFiMzJhZDI2NzcwM2Jj
ZDg4MmIzODFlMy4uYjBkYjNkYmE4YTkxYmEyYjg2YWMwZTdlMTBjNjBlMjg0MDc4MmVkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE2LTAzLTEyICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgY29tbWFuZHMgdG8gbW92
ZSBhbmQgcmVzaXplIGEgYnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzQ5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yNTEwNDkxMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQYXJzZSB0aGUgbmV3IG9yaWdpbiBvciBzaXplIGFuZCByZXF1ZXN0IHRoZSB3
aW5kb3cgdG8gY2hhbmdlIHRvIHRoZQorICAgICAgICBuZXcgZnJhbWUuIFRoaXMgY2FsbHMgdGhy
b3VnaCB0byBQYWdlVUlDbGllbnQ6OnNldFdpbmRvd0ZyYW1lKCkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb246CisgICAgICAgIEFkZCBuZXcgZW51bSB2
YWx1ZXMgZm9yIHByb3RvY29sIHBhcnNpbmcgZXJyb3IgY2FzZXMuCisgICAgICAgIEFkZCBuZXcg
Y29tbWFuZHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNp
emVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjptb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQpOgorICAgICAgICBBZGRlZC4g
UGFyc2UgdGhlIGluY29taW5nIHBheWxvYWQgYW5kIGJhaWwgaWYgbm90aGluZyB3b3VsZCBoYXBw
ZW4KKyAgICAgICAgb3IgdGhlIHZhbHVlcyBhcmUgbm90IHVzYWJsZSBvciBvdXQgb2YgcmFuZ2Uu
IENvbXBsYWluIGlmIGEgY2hhbmdlCisgICAgICAgIGRpZCBub3QgaGFwcGVuIHdoZW4gdGhlIHJl
cXVlc3RlZCBhbmQgYWN0dWFsIHNpemUgYXJlIGRpZmZlcmVudC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOiBNb3ZlIHNldFdpbmRvd0ZyYW1lIHRvIGJlIHB1YmxpYy4KKwor
MjAxNi0wMy0xMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
QXV0b21hdGlvbjogcmVwb3J0IHRoZSBicm93c2luZyBjb250ZXh0J3Mgd2luZG93IGZyYW1lIChz
aXplIGFuZCBvcmlnaW4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTUzMjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1MDk0MDg5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHByZXBhcmUgZm9y
IGltcGxlbWVudGluZyByZXNpemUgYW5kIG1vdmUgY29tbWFuZHMsIGFkZCBhCisgICAgICAgIHdp
bmRvd0ZyYW1lIG1lbWJlciB0byB0aGUgYnJvd3NpbmcgY29udGV4dCBwcm90b2NvbCB0eXBlLgor
CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uOgorICAgICAg
ICBBZGQgUmVjdCwgUG9pbnQsIGFuZCBTaXplIG9iamVjdHMuIFRoZXNlIGNvcnJlc3BvbmQgdG8g
dGhlCisgICAgICAgIENHL05TIGFuZCBXZWJDb3JlIGdlb21ldHJ5IHN0cnVjdHMuIEFkZCBhIGZy
YW1lIFJlY3QgdG8KKyAgICAgICAgQnJvd3NpbmdDb250ZXh0LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICBUaWdodGVu
IHVwIHR5cGVzIGJ5IHVzaW5nIHJlZmVyZW5jZXMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYlBhZ2VQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpidWlsZEJyb3dzaW5nQ29udGV4
dEZvclBhZ2UpOgorICAgICAgICBFeHRyYWN0IHRoZSBjb2RlIHRvIGJ1aWxkIGEgQnJvd3NpbmdD
b250ZXh0IG9iamVjdC4gQWRkCisgICAgICAgIGNvZGUgdG8gY2FsY3VsYXRlIGFuZCBpbnNlcnQg
dGhlIHBhZ2UncyB3aW5kb3cgZnJhbWUgc2l6ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0cyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpnZXRCcm93c2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y3JlYXRlQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNsb3NlQnJvd3NpbmdDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250
ZXh0KToKKyAgICAgICAgUmVmYWN0b3JpbmcgYXMgYWJvdmUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorICAgICAgICBBZGp1c3Qgc2ln
bmF0dXJlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDogTWFrZSBnZXRX
aW5kb3dGcmFtZSBwdWJsaWMuCisKIDIwMTYtMDMtMTAgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTk3OTg2KTogRG9uJ3QgdHJ5IHRv
IGxpbmsgdG8gdW5kZWZpbmVkICQoV0VCS0lUX1NZU1RFTV9JTlRFUkZBQ0VfTElCUkFSWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19oZWFkZXIucHkKaW5kZXggODM4NmYzODE4
MGMwMjIyYzcyN2I4YzMwMGNhM2RhODUxY2M4MWMwZi4uZjViYTdhYmFmYjEzMTRjN2NkOGFiMjg4
ZDAxNzZjZjMyZGQyYWJjMyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19oZWFkZXIucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19o
ZWFkZXIucHkKQEAgLTE2MCw5ICsxNjAsMTAgQEAgY2xhc3MgT2JqQ0hlYWRlckdlbmVyYXRvcihP
YmpDR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMuYXBwZW5kKCdfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSknKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ0BpbnRlcmZhY2Ug
JXMgOiAlc0pTT05PYmplY3QnICUgKG9iamNfbmFtZSwgT2JqQ0dlbmVyYXRvci5PQkpDX1NUQVRJ
Q19QUkVGSVgpKQogCi0gICAgICAgICMgVGhlIGluaXRpYWxpemVyIHRoYXQgdGFrZXMgYSBwYXls
b2FkIGlzIG9ubHkgbmVlZGVkIGJ5IHRoZSBmcm9udGVuZC4KKyAgICAgICAgIyBUaGUgaW5pdGlh
bGl6ZXJzIHRoYXQgdGFrZSBhIHBheWxvYWQgb3IgaW5zcGVjdG9yIG9iamVjdCBhcmUgb25seSBu
ZWVkZWQgYnkgdGhlIGZyb250ZW5kLgogICAgICAgICBpZiBzZWxmLmdldF9nZW5lcmF0b3Jfc2V0
dGluZygnZ2VuZXJhdGVfZnJvbnRlbmQnLCBGYWxzZSk6CiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBpZD4gKilwYXlsb2FkOycpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25P
YmplY3Q7JykKIAogICAgICAgICByZXF1aXJlZF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1i
ZXI6IG5vdCBtZW1iZXIuaXNfb3B0aW9uYWwsIGRlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKICAg
ICAgICAgb3B0aW9uYWxfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBtZW1iZXIuaXNf
b3B0aW9uYWwsIGRlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJv
dG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxl
bWVudGF0aW9uLnB5CmluZGV4IGI4YTQ1ZTI0N2FiMWE1YTJmNTBmYTQzNzFmNjQ2OTkwOTllZjA0
NTUuLjk3ZWYyNGEyNzNjZDhiZDcxNmRkNDQ3YzcyZjZmZGM4NjhjZjY5YjQgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTQsNiArOTQsNyBAQCBjbGFzcyBPYmpDUHJv
dG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAg
ICBpZiBzZWxmLmdldF9nZW5lcmF0b3Jfc2V0dGluZygnZ2VuZXJhdGVfZnJvbnRlbmQnLCBGYWxz
ZSk6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJycpCiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoc2VsZi5fZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX3BheWxvYWQoZG9tYWluLCBkZWNsYXJh
dGlvbikpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfaW5pdF9tZXRo
b2RfZm9yX2pzb25fb2JqZWN0KGRvbWFpbiwgZGVjbGFyYXRpb24pKQogICAgICAgICByZXF1aXJl
ZF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1iZXI6IG5vdCBtZW1iZXIuaXNfb3B0aW9uYWws
IGRlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKICAgICAgICAgaWYgcmVxdWlyZWRfbWVtYmVyczoK
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKQEAgLTEwNyw2ICsxMDgsMTcgQEAgY2xhc3Mg
T2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToK
ICAgICAgICAgbGluZXMuYXBwZW5kKCdAZW5kJykKICAgICAgICAgcmV0dXJuICdcbicuam9pbihs
aW5lcykKIAorICAgIGRlZiBfZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX2pzb25fb2JqZWN0KHNl
bGYsIGRvbWFpbiwgZGVjbGFyYXRpb24pOgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9j
b2xKU09OT2JqZWN0ICopanNvbk9iamVjdCcpCisgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCisg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNw
ZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpJykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybiBuaWw7JykKKyAgICAgICAgbGluZXMu
YXBwZW5kKCcnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICByZXR1cm4gc2VsZjsnKQorICAg
ICAgICBsaW5lcy5hcHBlbmQoJ30nKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQor
CiAgICAgZGVmIF9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcGF5bG9hZChzZWxmLCBkb21haW4s
IGRlY2xhcmF0aW9uKToKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBsaW5lcy5hcHBlbmQo
Jy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KG5vbm51bGwgTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIGlkPiAqKXBheWxvYWQnKQpAQCAtMTM3LDggKzE0OSw3IEBAIGNsYXNzIE9iakNQ
cm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAg
ICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBwZW5kKCctIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGglczsnICUgJyAnLmpvaW4ocGFpcnMpKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQot
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBzZWxmID0gW3N1cGVyIGluaXRdOycpCi0gICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIGlmICghc2VsZiknKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSknKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICAgICAgcmV0dXJuIG5pbDsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJycpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNf
Z2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKaW5kZXggYmVlOThjY2RhZDFmMTZiNzUxOTE1MGJmYjZh
NzAxYjc0ZmVmMzQzNy4uOWExYWVjOGNmYWJlMzFmMWNhNjBlY2Y4NWEwZGMyYmQ0ZjcxYmNhZiAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKQEAgLTQ0Myw4ICs0NDMsOCBAQCBj
bGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdm
cm9tUHJvdG9jb2xTdHJpbmc8JXM+KCVzKScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3Jfbm9u
X2Fub255bW91c19lbnVtKG1lbWJlci50eXBlKSwgc3ViX2V4cHJlc3Npb24pCiAgICAgICAgICAg
ICByZXR1cm4gc3ViX2V4cHJlc3Npb24KICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVD
YXRlZ29yeS5PYmplY3Q6Ci0gICAgICAgICAgICBvYmpjX3R5cGUgPSBzZWxmLm9iamNfdHlwZV9m
b3JfbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpCi0gICAgICAgICAgICByZXR1cm4gJyglcykl
cycgJSAob2JqY190eXBlLCBzdWJfZXhwcmVzc2lvbikKKyAgICAgICAgICAgIG9iamNfY2xhc3Mg
PSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUobWVtYmVyLnR5cGUpCisgICAgICAgICAgICByZXR1
cm4gJ1tbJXMgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OlslcyB0b0luc3BlY3Rvck9i
amVjdF0uZ2V0KCldJyAlIChvYmpjX2NsYXNzLCBzdWJfZXhwcmVzc2lvbikKICAgICAgICAgaWYg
Y2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5BcnJheToKICAgICAgICAgICAgIHByb3RvY29s
X3R5cGUgPSBPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfZm9yX3R5cGUobWVtYmVyLnR5cGUu
ZWxlbWVudF90eXBlKQogICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19m
b3JfdHlwZShtZW1iZXIudHlwZS5lbGVtZW50X3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1
dGUuanNvbi1yZXN1bHQKaW5kZXggOWQ0YjJlM2U2YTA4OTIzOTg3MmQ1MzAxZDRiMmExMGQzNzYz
NTVkZi4uOTdiNzRhNDExODNiNjNkNmYxZDBiZGZmOTVjYmE0NTA1NGU2YjRhNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTMwNiw2ICsxMzA2LDcgQEAgdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5
bmNQcmludENvbG9yKSB7CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9i
amVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIGlkPiAqKXBheWxvYWQ7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyogcmVx
dWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwog
LyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CkBA
IC0xNjg3LDExICsxNjg4LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICBy
ZXR1cm4gc2VsZjsKIH0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5n
ZXQoKV0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihp
bnQpY29kZTsKIHsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKKyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkobWVzc2FnZSwgQCJtZXNzYWdl
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdAppbmRleCBiNGJjMTczYmEyYjIwZjE0YTBlZmE3YWE0NDg4NjJiYzBi
ZjU0ZTdkLi5lMWM4YmM0NTllODY0OTAyODc4MzMxZjU5YTgwOTNiNGUyOWFhN2M2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNv
bi1yZXN1bHQKQEAgLTExNjMsNiArMTE2Myw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDCiBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFBy
b3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxv
YWQ7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05P
YmplY3QgKilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNT
dHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8gQHBy
b3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CkBAIC0xNTQyLDExICsxNTQzLDE3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KWpzb25PYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9y
T2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIHsKLSAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKKyAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfUkVRVUlSRURfUFJPUEVSVFkobWVzc2FnZSwgQCJtZXNzYWdlIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZl
bnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRp
b25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDFhYWJhZDIzYjA5MGVhYmYzMmRkYmQ3
YTc2YjliZjE0MjMyY2E0ZTcuLjA5OTZjZTA0Njc3MDlkYTIzMWJlZWQ4ODIyNTRlZTNlY2I3MWI2
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC05MTks
NiArOTE5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXls
b2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmpl
Y3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2Ug
Y29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTExNjAsMTEgKzExNjEsMTcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmpl
Y3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICByZXR1cm4gc2VsZjsKK30KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNT
dHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogewotICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07Ci0gICAgaWYgKCFzZWxmKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9Q
RVJUWShtZXNzYWdlLCBAIm1lc3NhZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1
cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDVhN2Q0ZjZhMzU1NWFjOGVlYWJkNDI0NmQxZTYx
NWZkZjliNTI4ZTkuLmUxYWE2ZTc4NWRlMDg5ODgxNTI2OWI4ZGE5YThmYWEzMGQ1ZWYyZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAt
OTY2LDYgKzk2Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sTmV0d29y
azJOZXR3b3JrRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopanNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5n
ICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTE5NCwxMSArMTE5NSwxNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29u
T2JqZWN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVj
dDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHJldHVybiBzZWxmOworfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhN
ZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiB7Ci0gICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JF
UVVJUkVEX1BST1BFUlRZKG1lc3NhZ2UsIEAibWVzc2FnZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2Vk
LW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBl
LXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggNzEzZWQ5NTZlNzQ3NWI5NzliZDE1MzA2ZTdlMmY2
N2VjOGZhZjBhMi4uZDczOWNjM2NlNjQxMmFhYjBkYmViODQ0MWVmN2VkYTY5YmI3OTEzMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hh
ZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC03NzMsNiArNzczLDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhU
eXBlKSB7CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZh
Y2UgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGggOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilwYXlsb2FkOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJv
dG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFR5
cGU6KFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSl0eXBlOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhU
eXBlIHR5cGU7CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNT
dHJpbmcgKnN0cmluZzsKQEAgLTEwMTMsMTEgKzEwMTQsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAoreworICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9J
bnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1
cm4gc2VsZjsKK30KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooVGVzdFByb3RvY29s
UnVudGltZUtleVBhdGhUeXBlKXR5cGU7CiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAg
ICBpZiAoIXNlbGYpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICBzZWxmLnR5cGUgPSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlw
ZS5qc29uLXJlc3VsdAppbmRleCA3YWI2MTYxNWIyNTY3ZDk1NTFhMTNmODM2Y2MyOWQ4YzA0ZTY5
Y2IwLi5jZmNjM2QxMjUxMDhmMGQxMTZmNjNhYjI3MTlmODgwYTAwNTAzOWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdApAQCAtMTE2Niw2ICsxMTY2LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUldJUHJvdG9jb2xK
U09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05P
YmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAv
KiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3Nh
Z2U7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29k
ZTsKQEAgLTExNzQsNiArMTE3NSw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJm
YWNlIFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQcm90
b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlv
bmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC8qIG9wdGlv
bmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
KmNvbHVtbk5hbWVzOwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IE5TU3RyaW5nICpub3RlczsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBh
c3NpZ24pIGRvdWJsZSB0aW1lc3RhbXA7CkBAIC0xMTg2LDYgKzExODgsNyBAQCBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkg
KCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1
bmRsZSA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5
bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2Jq
ZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDoo
ZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBw
YXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yICopZXJyb3IgZXJyb3JMaXN0OihOU0FycmF5Lyo8VGVzdFByb3RvY29s
RGF0YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdDsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzOwogLyog
cmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpub3RlczsK
QEAgLTExOTksNiArMTIwMiw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNl
IFRlc3RQcm90b2NvbERhdGFiYXNlT2JqZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cyA6IFJX
SVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OwogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoSW50ZWdlcjooTlNTdHJpbmcgKilpbnRlZ2VyIGFycmF5OihO
U1N0cmluZyAqKWFycmF5IHN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgdmFsdWU6KE5TU3RyaW5n
ICopdmFsdWUgb2JqZWN0OihOU1N0cmluZyAqKW9iamVjdDsKIC8qIHJlcXVpcmVkICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqaW50ZWdlcjsKIC8qIHJlcXVpcmVkICov
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqYXJyYXk7CkBAIC0xMjEwLDEx
ICsxMjE0LDEzIEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90
b2NvbERhdGFiYXNlRHVtbXlPYmplY3QgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilw
YXlsb2FkOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xK
U09OT2JqZWN0ICopanNvbk9iamVjdDsKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5k
bGUgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxv
YWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVj
dDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRv
dWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5
bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29s
RGF0YWJhc2VFcnJvciAqKWVycm9yOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXM7CiAvKiByZXF1aXJl
ZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm5vdGVzOwpAQCAtMTQ3
OCwxMSArMTQ4NCwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2Nv
bEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCld
KSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBzZWxmOworfQogCiAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNv
ZGU7CiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJP
V19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKG1lc3NhZ2UsIEAibWVzc2FnZSIpOwpA
QCAtMTUzOCw2ICsxNTUwLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICBy
ZXR1cm4gc2VsZjsKIH0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5n
ZXQoKV0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0g
KHZvaWQpc2V0Q29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVz
CiB7CkBAIC0xNTc2LDcgKzE1OTUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAt
IChSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKIHsKLSAgICByZXR1cm4gKFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXTsKKyAgICByZXR1
cm4gW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFsdWVzIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgp
XTsKIH0KIAogLSAodm9pZClzZXRQYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXls
b2FkCkBAIC0xNTg2LDcgKzE2MDUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAt
IChSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCiB7Ci0gICAgcmV0dXJuIChSV0lQcm90
b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdOworICAgIHJl
dHVybiBbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmpl
Y3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdl
dCgpXTsKIH0KIAogLSAodm9pZClzZXRFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAq
KWVycm9yCkBAIC0xNTk2LDcgKzE2MTUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiAtIChUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IKIHsKLSAgICByZXR1cm4gKFRl
c3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3IiXTsK
KyAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aElu
c3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl0gdG9JbnNwZWN0b3JP
YmplY3RdLmdldCgpXTsKIH0KIAogLSAodm9pZClzZXRFcnJvckxpc3Q6KE5TQXJyYXkvKjxUZXN0
UHJvdG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0CkBAIC0xNjQyLDExICsxNjYxLDE3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KWpzb25PYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9y
T2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3Rl
czooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihS
V0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yIGVy
cm9yTGlzdDooTlNBcnJheS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxp
c3Q7CiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJP
V19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5h
bWVzIik7CkBAIC0xNzA1LDcgKzE3MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiAtIChSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKIHsKLSAgICByZXR1cm4gKFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXTsKKyAgICBy
ZXR1cm4gW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2Jq
ZWN0Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFsdWVzIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdl
dCgpXTsKIH0KIAogLSAodm9pZClzZXRQYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilw
YXlsb2FkCkBAIC0xNzE1LDcgKzE3NDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiAtIChSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCiB7Ci0gICAgcmV0dXJuIChSV0lQ
cm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdOworICAg
IHJldHVybiBbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JP
YmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl0gdG9JbnNwZWN0b3JPYmplY3Rd
LmdldCgpXTsKIH0KIAogLSAodm9pZClzZXRFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJv
ciAqKWVycm9yCkBAIC0xNzI1LDcgKzE3NTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiAtIChUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IKIHsKLSAgICByZXR1cm4g
KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3Ii
XTsKKyAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0
aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl0gdG9JbnNwZWN0
b3JPYmplY3RdLmdldCgpXTsKIH0KIAogLSAodm9pZClzZXRFcnJvckxpc3Q6KE5TQXJyYXkvKjxU
ZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0CkBAIC0xNzY1LDExICsxNzkw
LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKWpzb25PYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVj
dG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEludGVnZXI6KE5TU3RyaW5nICopaW50ZWdlciBhcnJheTooTlNTdHJpbmcgKilhcnJh
eSBzdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIG9iamVj
dDooTlNTdHJpbmcgKilvYmplY3Q7CiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBp
ZiAoIXNlbGYpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKGludGVn
ZXIsIEAiaW50ZWdlciIpOwpAQCAtMTg0OCw2ICsxODc5LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRv
SW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0
dXJuIHNlbGY7Cit9CiAKIEBlbmQKIApAQCAtMTg3OSwxMSArMTkxNywxNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9i
amVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIHJldHVybiBzZWxmOworfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2x1bW5OYW1l
czooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICop
bm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQg
ZXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcjsKIHsKLSAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVR
VUlSRURfUFJPUEVSVFkoY29sdW1uTmFtZXMsIEAiY29sdW1uTmFtZXMiKTsKQEAgLTE5MzksNyAr
MTk4Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKFJXSVByb3RvY29sSlNP
Tk9iamVjdCAqKXZhbHVlcwogewotICAgIHJldHVybiAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICop
W3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOworICAgIHJldHVybiBbW1JXSVByb3RvY29s
SlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RG
b3JLZXk6QCJ2YWx1ZXMiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOwogfQogCiAtICh2b2lk
KXNldFBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKQEAgLTE5NDksNyAr
MTk5Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKFJXSVByb3RvY29sSlNP
Tk9iamVjdCAqKXBheWxvYWQKIHsKLSAgICByZXR1cm4gKFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KVtzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl07CisgICAgcmV0dXJuIFtbUldJUHJvdG9j
b2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVj
dEZvcktleTpAInBheWxvYWQiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOwogfQogCiAtICh2
b2lkKXNldEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IKQEAgLTE5NTks
NyArMjAwMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKFRlc3RQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKillcnJvcgogewotICAgIHJldHVybiAoVGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvciAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJlcnJvciJdOworICAgIHJldHVybiBbW1Rl
c3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltb
c3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3IiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IGJlZDE0
ODJiZmY4ZTQ3Y2YyZTA1NjY4NmM2OWYwZTQzYTgxNTY0NzcuLjQ4YTIwNzE0YWVlNThiMTE5Y2Q1
ZWNjNDc3MDc5MWI4OGM5MTA1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNh
c3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVz
dWx0CkBAIC0xMDYxLDYgKzEwNjEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0
UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscykgewogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAo
ImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RUeXBlTmVlZGluZ0Nhc3Qg
OiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6
KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsK
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbnVtYmVy
OihpbnQpbnVtYmVyIGFuaW1hbHM6KFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKWFuaW1h
bHMgaWRlbnRpZmllcjooaW50KWlkZW50aWZpZXIgdHJlZTooVGVzdFByb3RvY29sVGVzdFJlY3Vy
c2l2ZU9iamVjdDEgKil0cmVlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIE5TU3RyaW5nICpzdHJpbmc7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0
b21pYywgYXNzaWduKSBpbnQgbnVtYmVyOwpAQCAtMTA3MiwxMiArMTA3MywxNCBAQCBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2Jq
ZWN0MSA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5
bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2Jq
ZWN0OwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgVGVzdFBy
b3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDIgKm9iajsKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RSZWN1
cnNpdmVPYmplY3QyIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KWpzb25PYmplY3Q7CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWlu
KSBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqb2JqOwogQGVuZAogCkBAIC0xMzk4
LDExICsxNDAxLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4g
c2VsZjsKIH0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29s
SlNPTk9iamVjdCAqKWpzb25PYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRX
aXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0p
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbnVtYmVyOihpbnQpbnVt
YmVyIGFuaW1hbHM6KFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKWFuaW1hbHMgaWRlbnRp
ZmllcjooaW50KWlkZW50aWZpZXIgdHJlZTooVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVj
dDEgKil0cmVlOwogewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShzdHJpbmcsIEAic3RyaW5n
Iik7CkBAIC0xNDY0LDcgKzE0NzMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAt
IChUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqKXRyZWUKIHsKLSAgICByZXR1cm4g
KFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopW3N1cGVyIG9iamVjdEZvcktleTpA
InRyZWUiXTsKKyAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSBh
bGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJ0cmVl
Il0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXTsKIH0KIAogQGVuZApAQCAtMTQ4MCw2ICsxNDg5
LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKWpzb25PYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVj
dG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CiAKIC0gKHZvaWQpc2V0T2JqOihU
ZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiAqKW9iagogewpAQCAtMTQ4OCw3ICsxNTA0
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sVGVzdFJl
Y3Vyc2l2ZU9iamVjdDIgKilvYmoKIHsKLSAgICByZXR1cm4gKFRlc3RQcm90b2NvbFRlc3RSZWN1
cnNpdmVPYmplY3QyICopW3N1cGVyIG9iamVjdEZvcktleTpAIm9iaiJdOworICAgIHJldHVybiBb
W1Rlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rv
ck9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAIm9iaiJdIHRvSW5zcGVjdG9yT2JqZWN0XS5n
ZXQoKV07CiB9CiAKIEBlbmQKQEAgLTE1MDQsNiArMTUyMCwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0
b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJl
dHVybiBzZWxmOworfQogCiAtICh2b2lkKXNldE9iajooVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2
ZU9iamVjdDEgKilvYmoKIHsKQEAgLTE1MTIsNyArMTUzNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIC0gKFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopb2JqCiB7
Ci0gICAgcmV0dXJuIChUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqKVtzdXBlciBv
YmplY3RGb3JLZXk6QCJvYmoiXTsKKyAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xUZXN0UmVjdXJz
aXZlT2JqZWN0MSBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RG
b3JLZXk6QCJvYmoiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpz
b24gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24K
aW5kZXggYzcwODk0NjNjNTFiZGUzNzJhMDk0Zjc5YWY2NjAzZWFjYTkxMWVlMC4uNzljMzYwZjNh
MTRhYTc4MGY3NGU4ZjA2NjUwODNkNDJhZTcxYWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgpAQCAtMyw2ICszLDMwIEBA
CiAgICAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpb24gZG9tYWluIGV4cG9zZXMgY29tbWFuZHMg
Zm9yIGF1dG9tYXRpbmcgdXNlciBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYnJvd3Nlci4iLAogICAg
ICJ0eXBlcyI6IFsKICAgICAgICAgeworICAgICAgICAgICAgImlkIjogIlBvaW50IiwKKyAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIngiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ5IiwgInR5cGUiOiAibnVtYmVyIiB9CisgICAgICAgICAgICBd
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJTaXplIiwKKyAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIndpZHRoIiwgInR5cGUiOiAibnVtYmVyIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAibnVtYmVyIiB9CisgICAg
ICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJSZWN0
IiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGll
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9yaWdpbiIsICIkcmVmIjogIlBvaW50
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2l6ZSIsICIkcmVmIjogIlNpemUiIH0K
KyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAgICAgImlkIjog
IkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAog
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciBhIGJy
b3dzaW5nIGNvbnRleHQuIgpAQCAtMTQsNyArMzgsOSBAQAogICAgICAgICAgICAgImVudW0iOiBb
CiAgICAgICAgICAgICAgICAgIkludGVybmFsRXJyb3IiLAogICAgICAgICAgICAgICAgICJXaW5k
b3dOb3RGb3VuZCIsCi0gICAgICAgICAgICAgICAgIk5vdEltcGxlbWVudGVkIgorICAgICAgICAg
ICAgICAgICJOb3RJbXBsZW1lbnRlZCIsCisgICAgICAgICAgICAgICAgIk1pc3NpbmdQYXJhbWV0
ZXIiLAorICAgICAgICAgICAgICAgICJJbnZhbGlkUGFyYW1ldGVyIgogICAgICAgICAgICAgXQog
ICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNCw3ICs1MCw4IEBACiAgICAgICAgICAgICAicHJv
cGVydGllcyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjog
IkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJPcGFxdWUgaGFuZGxlIGZv
ciBhIGJyb3dzaW5nIGNvbnRleHQgKHdpbmRvdyBvciB0YWIpLiBVc2VkIGFzIGEga2V5IGZvciB3
aW5kb3ctcmVsYXRlZCBjb21tYW5kcy4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJh
Y3RpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIldoZXRoZXIgdGhlIGJy
b3dzaW5nIGNvbnRleHQgaGFzIGZvY3VzIGF0IHRoZSB0aW1lIHRoZSBjb21tYW5kIGlzIGhhbmRs
ZWQuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIlRoZSBVUkwgbG9hZGVkIGJ5IHRoZSBicm93c2luZyBjb250ZXh0
IGF0IHRoZSB0aW1lIHRoZSBjb21tYW5kIGlzIGhhbmRsZWQuIiB9CisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVGhlIFVS
TCBsb2FkZWQgYnkgdGhlIGJyb3dzaW5nIGNvbnRleHQgYXQgdGhlIHRpbWUgdGhlIGNvbW1hbmQg
aXMgaGFuZGxlZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aW5kb3dGcmFtZSIs
ICIkcmVmIjogIlJlY3QiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGN1cnJlbnQgZnJhbWUgKHBvc2l0
aW9uIGFuZCBzaXplKSBvZiB0aGUgYnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4iIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCkBAIC02OCw2ICs5NSwyMiBAQAogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJyZXNpemVX
aW5kb3dPZkJyb3dzaW5nQ29udGV4dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVz
aXplcyB0aGUgd2luZG93IG9mIHRoZSBzcGVjaWZpZWQgYnJvd3NpbmcgY29udGV4dCB0byB0aGUg
c3BlY2lmaWVkIHNpemUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxl
IiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBicm93c2luZyBjb250ZXh0IHRv
IGJlIHJlc2l6ZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2l6ZSIsICIkcmVm
IjogIlNpemUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5ldyBzaXplIGZvciB0aGUgYnJvd3Npbmcg
Y29udGV4dCdzIHdpbmRvdy4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAibW92ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0IiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJNb3ZlcyB0aGUgd2luZG93IG9mIHRoZSBzcGVjaWZp
ZWQgYnJvd3NpbmcgY29udGV4dCB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiIsCisgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIs
ICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFu
ZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBtb3ZlZC4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJvcmlnaW4iLCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgbmV3IG9yaWdpbiBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cuIFRoZSBw
b3NpdGlvbiBpcyBpbnRlcnByZXRlZCBpbiBzY3JlZW4gY29vcmRpbmF0ZSBzcGFjZSwgcmVsYXRp
dmUgdG8gdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JlZW4uIiB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogIm5hdmlnYXRl
QnJvd3NpbmdDb250ZXh0IiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXZpZ2F0ZXMg
YSBicm93c2luZyBjb250ZXh0IHRvIGEgc3BlY2lmaWVkIFVSTC4iLAogICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOTQ2ZDQwMTgxMTQzNzQ1
NGM3NzUzYjk5ZjkyYWQ4Y2RhZWViOTlmMy4uM2I3OGNkOGFmNDU2MGIyMTE4Y2JlYWFiYzQ0OGQ3
NDlhNWZjMWE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTA5LDYxICsxMDksODEg
QEAgV2ViUGFnZVByb3h5KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2ViUGFnZVByb3h5Rm9ySGFu
ZGxlKGNvbnN0IFN0cmluZyYgaGFuZGxlKQogICAgIHJldHVybiBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UoaXRlci0+dmFsdWUpOwogfQogCi1TdHJpbmcgV2ViQXV0b21hdGlvblNlc3Npb246Omhh
bmRsZUZvcldlYlBhZ2VQcm94eShXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSkKK1N0cmluZyBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQ
cm94eSYgd2ViUGFnZVByb3h5KQogewotICAgIGF1dG8gaXRlciA9IG1fd2ViUGFnZUhhbmRsZU1h
cC5maW5kKHdlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgIGF1dG8gaXRlciA9IG1fd2ViUGFn
ZUhhbmRsZU1hcC5maW5kKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CiAgICAgaWYgKGl0ZXIgIT0g
bV93ZWJQYWdlSGFuZGxlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAK
ICAgICBTdHJpbmcgaGFuZGxlID0gV2ViQ29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CiAKLSAgICBhdXRvIGZpcnN0QWRkUmVzdWx0ID0g
bV93ZWJQYWdlSGFuZGxlTWFwLmFkZCh3ZWJQYWdlUHJveHktPnBhZ2VJRCgpLCBoYW5kbGUpOwor
ICAgIGF1dG8gZmlyc3RBZGRSZXN1bHQgPSBtX3dlYlBhZ2VIYW5kbGVNYXAuYWRkKHdlYlBhZ2VQ
cm94eS5wYWdlSUQoKSwgaGFuZGxlKTsKICAgICBSRUxFQVNFX0FTU0VSVChmaXJzdEFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKIAotICAgIGF1dG8gc2Vjb25kQWRkUmVzdWx0ID0gbV9oYW5kbGVXZWJQ
YWdlTWFwLmFkZChoYW5kbGUsIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgIGF1dG8gc2Vj
b25kQWRkUmVzdWx0ID0gbV9oYW5kbGVXZWJQYWdlTWFwLmFkZChoYW5kbGUsIHdlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2Vjb25kQWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAorUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4gV2ViQXV0b21hdGlvblNlc3Npb246OmJ1
aWxkQnJvd3NpbmdDb250ZXh0Rm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lOworICAgIHBhZ2UuZ2V0V2luZG93RnJhbWUod2lu
ZG93RnJhbWUpOworCisgICAgYXV0byBvcmlnaW5PYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpQb2ludDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFgod2luZG93RnJhbWUu
eCgpKQorICAgICAgICAuc2V0WSh3aW5kb3dGcmFtZS55KCkpCisgICAgICAgIC5yZWxlYXNlKCk7
CisgICAgCisgICAgYXV0byBzaXplT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6U2l6ZTo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFdpZHRoKHdpbmRvd0ZyYW1lLndpZHRo
KCkpCisgICAgICAgIC5zZXRIZWlnaHQod2luZG93RnJhbWUuaGVpZ2h0KCkpCisgICAgICAgIC5y
ZWxlYXNlKCk7CisKKyAgICBhdXRvIHdpbmRvd0ZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6UmVjdDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldE9yaWdpbihXVEZN
b3ZlKG9yaWdpbk9iamVjdCkpCisgICAgICAgIC5zZXRTaXplKFdURk1vdmUoc2l6ZU9iamVjdCkp
CisgICAgICAgIC5yZWxlYXNlKCk7CisKKyAgICBTdHJpbmcgaGFuZGxlID0gaGFuZGxlRm9yV2Vi
UGFnZVByb3h5KHBhZ2UpOworCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkJyb3dzaW5nQ29udGV4dDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldEhhbmRsZShoYW5k
bGUpCisgICAgICAgIC5zZXRBY3RpdmUobV9hY3RpdmVCcm93c2luZ0NvbnRleHRIYW5kbGUgPT0g
aGFuZGxlKQorICAgICAgICAuc2V0VXJsKHBhZ2UucGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgp
KQorICAgICAgICAuc2V0V2luZG93RnJhbWUoV1RGTW92ZSh3aW5kb3dGcmFtZU9iamVjdCkpCisg
ICAgICAgIC5yZWxlYXNlKCk7Cit9CisKIC8vIEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciBBUEkKIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJv
d3NpbmdDb250ZXh0cyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkJyb3dzaW5nQ29udGV4dD4+JiBjb250ZXh0cykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmdldEJyb3dzaW5nQ29udGV4dHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6QnJvd3NpbmdDb250ZXh0Pj4mIGNvbnRleHRzKQogewogICAgIGNvbnRleHRzID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJv
d3NpbmdDb250ZXh0Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3By
b2Nlc3NQb29sLT5wcm9jZXNzZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwcm9j
ZXNzLT5wYWdlcygpKSB7CisgICAgICAgIGZvciAoYXV0byogcGFnZSA6IHByb2Nlc3MtPnBhZ2Vz
KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChwYWdlKTsKKwogICAgICAgICAgICAgaWYgKCFwYWdl
LT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgU3RyaW5nIGhhbmRsZSA9IGhhbmRsZUZvcldlYlBhZ2VQcm94eShwYWdl
KTsKLQotICAgICAgICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHQ6OmNyZWF0ZSgpCi0gICAgICAgICAgICAg
ICAgLnNldEhhbmRsZShoYW5kbGVGb3JXZWJQYWdlUHJveHkocGFnZSkpCi0gICAgICAgICAgICAg
ICAgLnNldEFjdGl2ZShtX2FjdGl2ZUJyb3dzaW5nQ29udGV4dEhhbmRsZSA9PSBoYW5kbGUpCi0g
ICAgICAgICAgICAgICAgLnNldFVybChwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkp
Ci0gICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKLQotICAgICAgICAgICAgY29udGV4dHMtPmFk
ZEl0ZW0oYnJvd3NpbmdDb250ZXh0LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBjb250ZXh0cy0+
YWRkSXRlbShidWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2UoKnBhZ2UpKTsKICAgICAgICAgfQog
ICAgIH0KIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0
KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRs
ZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4
dD4mIGNvbnRleHQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRCcm93c2luZ0NvbnRl
eHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4mIGNvbnRl
eHQpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhh
bmRsZSk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9NRVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIGNvbnRleHQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHQ6OmNyZWF0ZSgpCi0gICAgICAgIC5z
ZXRIYW5kbGUoaGFuZGxlRm9yV2ViUGFnZVByb3h5KHBhZ2UpKQotICAgICAgICAuc2V0QWN0aXZl
KG1fYWN0aXZlQnJvd3NpbmdDb250ZXh0SGFuZGxlID09IGhhbmRsZSkKLSAgICAgICAgLnNldFVy
bChwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpCi0gICAgICAgIC5yZWxlYXNlKCk7
CisgICAgY29udGV4dCA9IGJ1aWxkQnJvd3NpbmdDb250ZXh0Rm9yUGFnZSgqcGFnZSk7CiB9CiAK
LXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNyZWF0ZUJyb3dzaW5nQ29udGV4dChJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBoYW5kbGUpCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpjcmVhdGVCcm93c2luZ0NvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBTdHJpbmcqIGhhbmRsZSkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGlm
ICghbV9jbGllbnQpCkBAIC0xNzMsMTAgKzE5MywxMSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpjcmVhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JT
dAogICAgIGlmICghcGFnZSkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVT
U0FHRShJbnRlcm5hbEVycm9yKTsKIAotICAgIG1fYWN0aXZlQnJvd3NpbmdDb250ZXh0SGFuZGxl
ID0gKmhhbmRsZSA9IGhhbmRsZUZvcldlYlBhZ2VQcm94eShwYWdlKTsKKyAgICBtX2FjdGl2ZUJy
b3dzaW5nQ29udGV4dEhhbmRsZSA9IGhhbmRsZUZvcldlYlBhZ2VQcm94eSgqcGFnZSk7CisgICAg
KmhhbmRsZSA9IG1fYWN0aXZlQnJvd3NpbmdDb250ZXh0SGFuZGxlOwogfQogCi12b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpjbG9zZUJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpjbG9zZUJyb3dzaW5nQ29udGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgaGFuZGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBh
Z2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwogICAgIGlmICghcGFnZSkKQEAgLTE4OCw3ICsyMDks
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjbG9zZUJyb3dzaW5nQ29udGV4dChJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cgogICAgIHBhZ2UtPmNsb3NlUGFnZShmYWxzZSk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0
KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRs
ZSkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUpCiB7CiAgICAgV2Vi
UGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYg
KCFwYWdlKQpAQCAtMjAxLDYgKzIyMiw4MCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpz
d2l0Y2hUb0Jyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvcgogICAg
IHBhZ2UtPnNldEZvY3VzKHRydWUpOwogfQogCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpy
ZXNpemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0JiBzaXplT2JqZWN0KQoreworICAgIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS8yNTA5
NDEwNj46IFNwZWNpZnkgd2hhdCBwYXJhbWV0ZXIgd2FzIG1pc3Npbmcgb3IgaW52YWxpZCBhbmQg
aG93LgorICAgIC8vIFRoaXMgcmVxdWlyZXMgc29tZSBjaGFuZ2VzIHRvIHRoZSBvdGhlciBlbmQn
cyBlcnJvciBoYW5kbGluZy4gUmlnaHQgbm93IGl0IGxvb2tzIGZvciBhbgorICAgIC8vIGV4YWN0
IGVycm9yIG1lc3NhZ2UgbWF0Y2guIFdlIGNvdWxkIHN0dWZmIHRoaXMgaW50byB0aGUgJ2RhdGEn
IGZpZWxkIG9uIGVycm9yIG9iamVjdC4KKyAgICBmbG9hdCB3aWR0aDsKKyAgICBpZiAoIXNpemVP
YmplY3QuZ2V0RG91YmxlKFdURjo6QVNDSUlMaXRlcmFsKCJ3aWR0aCIpLCB3aWR0aCkpCisgICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7
CisKKyAgICBmbG9hdCBoZWlnaHQ7CisgICAgaWYgKCFzaXplT2JqZWN0LmdldERvdWJsZShXVEY6
OkFTQ0lJTGl0ZXJhbCgiaGVpZ2h0IiksIGhlaWdodCkpCisgICAgICAgIEZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisKKyAgICBpZiAod2lkdGgg
PCAwIHx8IGhlaWdodCA8IDApCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01F
U1NBR0UoSW52YWxpZFBhcmFtZXRlcik7CisKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQ
YWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworCisgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IG9yaWdpbmFsRnJhbWU7CisgICAgcGFnZS0+Z2V0V2luZG93RnJhbWUo
b3JpZ2luYWxGcmFtZSk7CisgICAgCisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0g
V2ViQ29yZTo6RmxvYXRSZWN0KG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKSwgV2ViQ29yZTo6Rmxv
YXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICBpZiAobmV3RnJhbWUgPT0gb3JpZ2luYWxGcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+c2V0V2luZG93RnJhbWUobmV3RnJhbWUp
OworICAgIAorICAgIC8vIElmIG5vdGhpbmcgY2hhbmdlZCBhdCBhbGwsIGl0J3MgcHJvYmFibHkg
ZmFpciB0byByZXBvcnQgdGhhdCBzb21ldGhpbmcgd2VudCB3cm9uZy4KKyAgICAvLyAoV2UgY2Fu
J3QgYXNzdW1lIHRoYXQgdGhlIHJlcXVlc3RlZCBmcmFtZSBzaXplIHdpbGwgYmUgaG9ub3JlZCBl
eGFjdGx5LCBob3dldmVyLikKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdXBkYXRlZEZyYW1lOwor
ICAgIHBhZ2UtPmdldFdpbmRvd0ZyYW1lKHVwZGF0ZWRGcmFtZSk7CisgICAgaWYgKG9yaWdpbmFs
RnJhbWUgPT0gdXBkYXRlZEZyYW1lKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9NRVNTQUdFKEludGVybmFsRXJyb3IpOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
Ojptb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCYgcG9zaXRpb25PYmplY3QpCit7CisgICAgLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVt
LzI1MDk0MTA2PjogU3BlY2lmeSB3aGF0IHBhcmFtZXRlciB3YXMgbWlzc2luZyBvciBpbnZhbGlk
IGFuZCBob3cuCisgICAgLy8gVGhpcyByZXF1aXJlcyBzb21lIGNoYW5nZXMgdG8gdGhlIG90aGVy
IGVuZCdzIGVycm9yIGhhbmRsaW5nLiBSaWdodCBub3cgaXQgbG9va3MgZm9yIGFuCisgICAgLy8g
ZXhhY3QgZXJyb3IgbWVzc2FnZSBtYXRjaC4gV2UgY291bGQgc3R1ZmYgdGhpcyBpbnRvIHRoZSAn
ZGF0YScgZmllbGQgb24gZXJyb3Igb2JqZWN0LgorICAgIGZsb2F0IHg7CisgICAgaWYgKCFwb3Np
dGlvbk9iamVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoIngiKSwgeCkpCisgICAgICAg
IEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisK
KyAgICBmbG9hdCB5OworICAgIGlmICghcG9zaXRpb25PYmplY3QuZ2V0RG91YmxlKFdURjo6QVND
SUlMaXRlcmFsKCJ5IiksIHkpKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9N
RVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIpOworCisgICAgaWYgKHggPCAwIHx8IHkgPCAwKQorICAg
ICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIp
OworCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRs
ZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9N
RVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBvcmlnaW5h
bEZyYW1lOworICAgIHBhZ2UtPmdldFdpbmRvd0ZyYW1lKG9yaWdpbmFsRnJhbWUpOworICAgIAor
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBuZXdGcmFtZSA9IFdlYkNvcmU6OkZsb2F0UmVjdChXZWJD
b3JlOjpGbG9hdFBvaW50KHgsIHkpLCBvcmlnaW5hbEZyYW1lLnNpemUoKSk7CisgICAgaWYgKG5l
d0ZyYW1lID09IG9yaWdpbmFsRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNl
dFdpbmRvd0ZyYW1lKG5ld0ZyYW1lKTsKKyAgICAKKyAgICAvLyBJZiBub3RoaW5nIGNoYW5nZWQg
YXQgYWxsLCBpdCdzIHByb2JhYmx5IGZhaXIgdG8gcmVwb3J0IHRoYXQgc29tZXRoaW5nIHdlbnQg
d3JvbmcuCisgICAgLy8gKFdlIGNhbid0IGFzc3VtZSB0aGF0IHRoZSByZXF1ZXN0ZWQgZnJhbWUg
c2l6ZSB3aWxsIGJlIGhvbm9yZWQgZXhhY3RseSwgaG93ZXZlci4pCisgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IHVwZGF0ZWRGcmFtZTsKKyAgICBwYWdlLT5nZXRXaW5kb3dGcmFtZSh1cGRhdGVkRnJh
bWUpOworICAgIGlmIChvcmlnaW5hbEZyYW1lID09IHVwZGF0ZWRGcmFtZSkKKyAgICAgICAgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShJbnRlcm5hbEVycm9yKTsKK30KKwogdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBT
dHJpbmcmIHVybCkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JI
YW5kbGUoaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDJmZDhhYTU0MTBlMTkyZWFk
NGQ1YmExM2Y4M2Y3NTdiMTk3ZjY0YzkuLmMwODZjZTkyMTM1YTM0NjNiZTU2OTk3MjljODg3NmFi
MDIzYmZmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjcmVhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYs
IFN0cmluZyopIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VCcm93c2luZ0NvbnRleHQoSW5zcGVj
dG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3dp
dGNoVG9Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQoSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdCYgc2l6ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBtb3ZlV2luZG93
T2ZCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcG9zaXRpb24pIG92ZXJy
aWRlOwogICAgIHZvaWQgbmF2aWdhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnb0JhY2tJbkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5n
Q29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CkBAIC05MSw3ICs5Myw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlBh
Z2VQcm94eSogd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmlu
ZyBoYW5kbGVGb3JXZWJQYWdlUHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKKyAgICBTdHJp
bmcgaGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQcm94eSYpOworCisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4gYnVp
bGRCcm93c2luZ0NvbnRleHRGb3JQYWdlKFdlYlBhZ2VQcm94eSYpOwogCiAgICAgV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbCB7IG51bGxwdHIgfTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggODI5MTZiNTQ3OTgyMGFkNjUwZTU1NTc0
ODBiZmMzOThmYzkyMzYzYi4uYTlkZDA2MjAyZjk0ZmRlMjE4ZGVkNThkNTYzMjQ5NmJiOTFkNmE0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTA5Niw2ICsx
MDk2LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAK
ICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CisgICAgdm9pZCBzZXRXaW5kb3dGcmFt
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICB2b2lkIGdldFdpbmRvd0ZyYW1lKFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJik7CkBAIC0xMTk2LDggKzExOTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
Z2V0U3RhdHVzQmFySXNWaXNpYmxlKGJvb2wmIHN0YXR1c0JhcklzVmlzaWJsZSk7CiAgICAgdm9p
ZCBzZXRJc1Jlc2l6YWJsZShib29sIGlzUmVzaXphYmxlKTsKICAgICB2b2lkIGdldElzUmVzaXph
YmxlKGJvb2wmIGlzUmVzaXphYmxlKTsKLSAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIHZvaWQgZ2V0V2luZG93RnJhbWUoV2ViQ29yZTo6Rmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICB2
b2lkIHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QsIFdl
YkNvcmU6OkludFJlY3QmIHJlc3VsdCk7CiAjaWYgUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>