<?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>158529</bug_id>
          
          <creation_ts>2016-06-08 09:25:41 -0700</creation_ts>
          <short_desc>Improve code generator for functions with variadic parameters</short_desc>
          <delta_ts>2016-06-20 10:27:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158942</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nael Ouedraogo">nael.ouedp</reporter>
          <assigned_to name="Nael Ouedraogo">nael.ouedp</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1200467</commentid>
    <comment_count>0</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-08 09:25:41 -0700</bug_when>
    <thetext>Improve code generator for functions with variadic parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200469</commentid>
    <comment_count>1</comment_count>
      <attachid>280811</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-08 09:39:33 -0700</bug_when>
    <thetext>Created attachment 280811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200470</commentid>
    <comment_count>2</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-08 09:41:11 -0700</bug_when>
    <thetext>JS bindings code generated with variadic parameters can be improved as proposed in the uploaded patch.
A further possible improvement is to avoid using a Vector of pointers since each item is checked to be not null before being append to the Vector. I would like to use a Vector of &quot;references&quot; instead.
One solution would be to use a Vector of std::reference_wrapper&lt;T&gt;. Is there another solution ?

It seems that variadic parameters are not correctly supported in ObjC and GObject code generators. A test is added to skip functions with variadic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200854</commentid>
    <comment_count>3</comment_count>
      <attachid>280811</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-09 09:35:02 -0700</bug_when>
    <thetext>Comment on attachment 280811
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=280811&amp;action=review

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3666
&gt; +                push(@$outputArray, &quot;    $name.reserveInitialCapacity(state-&gt;argumentCount() - $argumentIndex);\n&quot;);

Do we have an ironclad guarantee that argumentCount() is &gt;= $argumentIndex? It‘s critical that we know that’s guaranteed, because if not this will try to reserve a colossal capacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201240</commentid>
    <comment_count>4</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-10 08:21:07 -0700</bug_when>
    <thetext>&gt; Do we have an ironclad guarantee that argumentCount() is &gt;= $argumentIndex?
&gt; It‘s critical that we know that’s guaranteed, because if not this will try
&gt; to reserve a colossal capacity.

Thanks for the review. 

Actually, we have no guarantee. It may happen when a variadic parameter is preceded by an optional parameter. This issue is also observed in toNativeArguments(). 

I will modify JS code generator so that it dies when an optional parameter is preceding a variadic. I will also add an assert before call to reserveInitialCapacity().

I am going to land a new patch with these modifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201825</commentid>
    <comment_count>5</comment_count>
      <attachid>281170</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-13 06:07:45 -0700</bug_when>
    <thetext>Created attachment 281170
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201828</commentid>
    <comment_count>6</comment_count>
      <attachid>281170</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 06:38:50 -0700</bug_when>
    <thetext>Comment on attachment 281170
Patch for landing

Clearing flags on attachment: 281170

Committed r201988: &lt;http://trac.webkit.org/changeset/201988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201829</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 06:38:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280811</attachid>
            <date>2016-06-08 09:39:33 -0700</date>
            <delta_ts>2016-06-13 06:07:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158529-20160608184059.patch</filename>
            <type>text/plain</type>
            <size>15165</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTMyZDk2ZTQ4MzNjZGEw
YjJiNGJhNzQxZDhmYjg4N2EzNzQ0Y2U5OS4uMmVhNjM5ZTIyZWYzNDI1YTc4MzQxYzcyMzM3MTc0
NDdkZjhmNWY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA2LTA4ICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBJbXBy
b3ZlIGNvZGUgZ2VuZXJhdG9yIGZvciBmdW5jdGlvbnMgd2l0aCB2YXJpYWRpYyBwYXJhbWV0ZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKUyBiaW5k
aW5ncyBjb2RlIG9mIGZ1bmN0aW9ucyB3aXRoIHZhcmlhZGljIHBhcmFtZXRlcnMgaXMgaW1wcm92
ZWQuCisKKyAgICAgICAgRnVuY3Rpb25zIHdpdGggdmFyaWFkaWMgcGFyYW1ldGVycyBhcmUgc2tp
cHBlZCBmb3IgT2JqQyBhbmQgR09iamVjdCBjb2RlIGdlbmVyYXRvcnMuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAgICAoU2tpcEZ1
bmN0aW9uKTogU2tpcCBmdW5jdGlvbnMgd2l0aCB2YXJpYWRpYyBwYXJhbWV0ZXJzLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJh
dGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvck9iakMucG06CisgICAgICAgIChTa2lwRnVuY3Rpb24pOlNraXAgZnVuY3Rpb25zIHdpdGgg
dmFyaWFkaWMgcGFyYW1ldGVycy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
YW55KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfYXR0YWNoX3NoYWRv
d19yb290KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRf
b25seV9sb25nX2F0dHIpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfcmVhZF9vbmx5X3N0cmluZ19hdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVN
ZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY05vZGVNZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLm1tOgorCiAyMDE2LTA2LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gSW1wbGVtZW50IGhhcmRMaW5rT3JDb3B5RmlsZSgp
IGluIEZpbGVTeXN0ZW1HbGliCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQppbmRleCA1NDFjYzc4NDA2ZWYxMTZkMTA5
NDkzZDU0MmMwODc0YjBiMmIzNWEyLi5kZjRkZGRhNTQzNDYyZDg1YWJmZjRlZDgyNTU4OWE5Mzcz
MzA5NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTMyMCwxNCArMzIwLDE0IEBAIHN1YiBTa2lwRnVu
Y3Rpb24gewogICAgICMgaG93IHRvIGF1dG8tZ2VuZXJhdGUgY2FsbGJhY2tzLiAgU2tpcCBmdW5j
dGlvbnMgdGhhdCBoYXZlICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiBvcgogICAgICMgc2VxdWVu
Y2U8VD4gcGFyYW1ldGVycywgYmVjYXVzZSB0aGlzIGNvZGUgZ2VuZXJhdG9yIGRvZXNuJ3Qga25v
dyBob3cgdG8gYXV0by1nZW5lcmF0ZQogICAgICMgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciBvciBz
ZXF1ZW5jZTxUPi4gU2tpcCBFdmVudExpc3RlbmVycyBiZWNhdXNlIHRoZXkgYXJlIGhhbmRsZWQg
ZWxzZXdoZXJlLgorICAgICMgU2tpcCBmdW5jdGlvbnMgdGhhdCBoYXZlIHZhcmlhZGljIHBhcmFt
ZXRlcnMgYmVjYXVzZSBub3Qgc3VwcG9ydGVkIHlldC4KICAgICBmb3JlYWNoIG15ICRwYXJhbSAo
QHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SXNGdW5jdGlvbk9ubHlDYWxsYmFja0ludGVyZmFjZSgkcGFyYW0tPnR5cGUpIHx8Ci0gICAgICAg
ICAgICAkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFtcCJ9IHx8Ci0gICAgICAgICAg
ICAkcGFyYW0tPnR5cGUgZXEgIk1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiIHx8Ci0gICAgICAgICAg
ICAkcGFyYW0tPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiIHx8Ci0gICAgICAgICAgICAkY29kZUdl
bmVyYXRvci0+R2V0U2VxdWVuY2VUeXBlKCRwYXJhbS0+dHlwZSkpIHsKLSAgICAgICAgICAgIHJl
dHVybiAxOwotICAgICAgICB9CisgICAgICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5J
c0Z1bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYWNlKCRwYXJhbS0+dHlwZSk7CisgICAgICAgIHJl
dHVybiAxIGlmICRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNsYW1wIn07CisgICAgICAg
IHJldHVybiAxIGlmICRwYXJhbS0+dHlwZSBlcSAiTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciI7Cisg
ICAgICAgIHJldHVybiAxIGlmICRwYXJhbS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciI7CisgICAg
ICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHBhcmFtLT50
eXBlKTsKKyAgICAgICAgcmV0dXJuIDEgaWYgJHBhcmFtLT5pc1ZhcmlhZGljOwogICAgIH0KIAog
ICAgICMgVGhpcyBpcyBmb3IgRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsIGFkZChGaWxlKSBtZXRo
b2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggNmYxYThjMTZjYjBmMjhlMmZiNTk1NWE1YzIwNjAyZDFlYzBiZmIzYi4uZDhk
ZmM2YTRkZGI2OGZmZjVlMTJiMTIxODk5ZWIzOWJlZGU4YWQ2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM2NjMsMTYg
KzM2NjMsMTkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICBteSAk
bmF0aXZlRWxlbWVudFR5cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKICAg
ICAgICAgICAgIGlmICghSXNOYXRpdmVUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkbmFtZTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmFtZS5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHN0YXRlLT5hcmd1bWVudENvdW50KCkgLSAkYXJndW1lbnRJbmRl
eCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9yICh1
bnNpZ25lZCBpID0gJGFyZ3VtZW50SW5kZXgsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQo
KTsgaSA8IGNvdW50OyArK2kpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkuaW5oZXJpdHMo
SlMke3R5cGV9OjppbmZvKCkpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBhdXRvKiBpdGVtID0gSlMke3R5cGV9Ojp0b1dyYXBwZWQoc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgaWYgKCFpdGVtKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0
YXRlLCBpLCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFt
ZSwgXCIkdHlwZVwiKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgJG5hbWUuYXBwZW5kKEpTJHt0eXBlfTo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudChpKSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICAkbmFtZS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIikKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZlY3RvcjwkbmF0aXZl
RWxlbWVudFR5cGU+ICRuYW1lID0gdG9OYXRpdmVBcmd1bWVudHM8JG5hdGl2ZUVsZW1lbnRUeXBl
PihzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOwogICAgICAgICB9IGVsc2lmICgkY29kZUdl
bmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgIG15ICRjbGFzc05hbWUg
PSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmlu
ZGV4IDgxYzQ1ZTA1MTlhZWU1YWM4MWVkN2U0YmVhMjRkNTllOTEzMmFlODAuLjYwYTNiOTI3NGIw
NDUxMzcxODE0NmE5Y2EyNmE0MTJmZDNlZGQ0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtNTQ3LDYgKzU0Nyw3
IEBAIHN1YiBTa2lwRnVuY3Rpb24KICAgICAgICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3It
PkdldFNlcXVlbmNlVHlwZSgkcGFyYW0tPnR5cGUpOwogICAgICAgICByZXR1cm4gMSBpZiAkY29k
ZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCRwYXJhbS0+dHlwZSk7CiAgICAgICAgIHJldHVybiAx
IGlmICRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNsYW1wIn07CisgICAgICAgIHJldHVy
biAxIGlmICRwYXJhbS0+aXNWYXJpYWRpYzsKICAgICB9CiAKICAgICByZXR1cm4gMSBpZiAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlByaXZhdGUifTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5kZXggN2VkNjAzYjEzZWIwZjRjNzFhZGQ5MTFk
YjQ4OGNkNTVmYzQ5NDIzZC4uZTI1NThjODMyYzE0OTY5YWM2MGM0Njg3MmUyOWExNWVkNWRlOGFh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRET01E
aWN0aW9uYXJ5UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9N
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVNWR1BvaW50UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdERPTVRlc3REaWN0aW9uYXJ5UHJpdmF0ZS5oIgpAQCAtMTk5MiwzOCArMTk5MSw2
IEBAIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0X2Z1bmN0aW9uX3dpdGhfYXJy
YXkoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21ldGhvZChXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBjb25zdCBnY2hhciogaGVhZCwgY29uc3QgZ2NoYXIqIHRhaWwpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCho
ZWFkKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHRhaWwpOwotICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkSGVh
ZCA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChoZWFkKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRUYWlsID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRhaWwpOwotICAgIGl0ZW0tPnZhcmlhZGlj
U3RyaW5nTWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOwotfQotCi12b2lkIHdl
YmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZChXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnZG91YmxlIGhlYWQsIGdkb3VibGUgdGFpbCkKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfT0JKKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnZhcmlhZGljRG91YmxlTWV0aG9kKGhlYWQsIHRhaWwp
OwotfQotCi12b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfbm9kZV9tZXRob2QoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NTm9kZSogaGVhZCwgV2ViS2l0RE9NTm9kZSog
dGFpbCkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTk9ERShoZWFkKSk7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX05PREUodGFpbCkpOwotICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6Tm9kZSogY29udmVydGVkSGVh
ZCA9IFdlYktpdDo6Y29yZShoZWFkKTsKLSAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRUYWls
ID0gV2ViS2l0Ojpjb3JlKHRhaWwpOwotICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhvZCgqY29u
dmVydGVkSGVhZCwgY29udmVydGVkVGFpbCk7Ci19Ci0KIHZvaWQgd2Via2l0X2RvbV90ZXN0X29i
al9hbnkoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2Zsb2F0IGEsIGdsb25nIGIpCiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5oCmluZGV4IDExYTVlZTg1YmJmYmJiNzBiMzFmYzg2MWYxMThjNDM1ZTUxZmZiNmIu
LjhiMDU2NjIxZWEzNDcyNmM2YzEzZWE4MDIwYjgzN2ZmYmIwYTZmMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RP
YmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLmgKQEAgLTg5OSwzOSArODk5LDYgQEAgV0VCS0lUX0FQSSBnYm9vbGVh
bgogd2Via2l0X2RvbV90ZXN0X29ial9zdHJpY3RfZnVuY3Rpb25fd2l0aF9hcnJheShXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcsIGdsb25nIGFycmF5LCBH
RXJyb3IqKiBlcnJvcik7CiAKIC8qKgotICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19z
dHJpbmdfbWV0aG9kOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKLSAqIEBoZWFkOiBB
ICNnY2hhcgotICogQHRhaWw6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQot
KiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5n
X21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogaGVhZCwgY29uc3Qg
Z2NoYXIqIHRhaWwpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91
YmxlX21ldGhvZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCi0gKiBAaGVhZDogQSAj
Z2RvdWJsZQotICogQHRhaWw6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19kb3Vi
bGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdkb3VibGUgaGVhZCwgZ2RvdWJsZSB0
YWlsKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbWV0aG9k
OgotICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKLSAqIEBoZWFkOiBBICNXZWJLaXRET01O
b2RlCi0gKiBAdGFpbDogQSAjV2ViS2l0RE9NTm9kZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25v
ZGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTU5vZGUqIGhlYWQsIFdl
YktpdERPTU5vZGUqIHRhaWwpOwotCi0vKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfYW55Ogog
ICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKICAqIEBhOiBBICNnZmxvYXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
aW5kZXggMmY4YmUyNmEzYjIwNmQ5ZjRlYjY0MTY2MTdiZGEzN2IzMjI1ZWQxMi4uMTkwYjEyYWUw
Y2FiOWFjOWRmZTg1ZjU1MDIxNjY2MWY3YWRiZDQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTUzODUsMTIg
KzUzODUsMTQgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3QKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7Cisg
ICAgYmxvYkFyZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IC0gMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRD
b3VudCgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoIXN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudChpKS5pbmhlcml0cyhKU0Jsb2I6OmluZm8oKSkpCisgICAgICAgIGF1dG8qIGl0ZW0g
PSBKU0Jsb2I6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgICAg
ICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigq
c3RhdGUsIGksICJibG9iQXJncyIsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiQmxv
YiIpOwotICAgICAgICBibG9iQXJncy5hcHBlbmQoSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKSk7CisgICAgICAgIGJsb2JBcmdzLnVuY2hlY2tlZEFwcGVuZChp
dGVtKTsKICAgICB9Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKGJsb2JBcmdzKTsKKyAgICBp
bXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5MTEsNyArNTkxMyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1N0cmluZ01ldGhvZChFeGVjCiAgICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZl
QXJndW1lbnRzPFN0cmluZz4oc3RhdGUsIDEpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgIGltcGwudmFyaWFkaWNTdHJpbmdNZXRob2QoV1RGTW92ZShoZWFkKSwgdGFpbCk7
CisgICAgaW1wbC52YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRh
aWwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBA
IC01OTMxLDcgKzU5MzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlYwogICAgIFZlY3Rvcjxk
b3VibGU+IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50czxkb3VibGU+KHN0YXRlLCAxKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9k
KFdURk1vdmUoaGVhZCksIHRhaWwpOworICAgIGltcGwudmFyaWFkaWNEb3VibGVNZXRob2QoV1RG
TW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTk0OSwxMiArNTk1MSwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0
aG9kKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghaGVhZCkpCiAgICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgImhlYWQiLCAiVGVzdE9iaiIsICJ2YXJpYWRp
Y05vZGVNZXRob2QiLCAiTm9kZSIpOwogICAgIFZlY3RvcjxOb2RlKj4gdGFpbDsKKyAgICB0YWls
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSAtIDEpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDEsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8
IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSku
aW5oZXJpdHMoSlNOb2RlOjppbmZvKCkpKQorICAgICAgICBhdXRvKiBpdGVtID0gSlNOb2RlOjp0
b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgaWYgKCFpdGVt
KQogICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCAi
dGFpbCIsICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Ci0gICAgICAg
IHRhaWwuYXBwZW5kKEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChp
KSkpOworICAgICAgICB0YWlsLnVuY2hlY2tlZEFwcGVuZChpdGVtKTsKICAgICB9Ci0gICAgaW1w
bC52YXJpYWRpY05vZGVNZXRob2QoKmhlYWQsIHRhaWwpOworICAgIGltcGwudmFyaWFkaWNOb2Rl
TWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKaW5kZXggYWRiZmEwOTlkMDQzYmFiMTk2
ZjFlNjIxY2RkNmI4MjhmMzE5MWExNi4uNmQ2YTBmOGQ3MzNlZjhhNmU3MWU2OTc3YzNlMTE5YWFh
ZmQ1MzEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaApAQCAtMjgsNyArMjgsNiBAQAogCiBAY2xhc3MgRE9NRGlj
dGlvbmFyeTsKIEBjbGFzcyBET01Eb2N1bWVudDsKLUBjbGFzcyBET01Ob2RlOwogQGNsYXNzIERP
TVNWR0RvY3VtZW50OwogQGNsYXNzIERPTVNWR1BvaW50OwogQGNsYXNzIERPTVRlc3REaWN0aW9u
YXJ5OwpAQCAtMjE0LDkgKzIxMyw2IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVGVz
dE9iaiA6IERPTU9iamVjdAogLSAoRE9NU1ZHUG9pbnQgKilpbW11dGFibGVQb2ludEZ1bmN0aW9u
OwogLSAodm9pZClvcmFuZ2U7CiAtIChCT09MKXN0cmljdEZ1bmN0aW9uOihOU1N0cmluZyAqKXN0
ciBhOihmbG9hdClhIGI6KGludCliOwotLSAodm9pZCl2YXJpYWRpY1N0cmluZ01ldGhvZDooTlNT
dHJpbmcgKiloZWFkIHRhaWw6KE5TU3RyaW5nICopdGFpbDsKLS0gKHZvaWQpdmFyaWFkaWNEb3Vi
bGVNZXRob2Q6KGRvdWJsZSloZWFkIHRhaWw6KGRvdWJsZSl0YWlsOwotLSAodm9pZCl2YXJpYWRp
Y05vZGVNZXRob2Q6KERPTU5vZGUgKiloZWFkIHRhaWw6KERPTU5vZGUgKil0YWlsOwogLSAodm9p
ZClhbnk6KGZsb2F0KWEgYjooaW50KWI7CiAtICh2b2lkKWF0dGFjaFNoYWRvd1Jvb3Q6KERPTVRl
c3REaWN0aW9uYXJ5ICopaW5pdDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDFmZmU2NDkzYzkz
NmM2NDU0YzVkMjI2NWVmMTg1YjRiNGUxNzRlZWYuLjE2ZDdiOTQxMTYwYzU0N2NkOWQ0ZTQzMzE3
NWNlMTIyNTk0OWUxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtNTAsNyArNTAsNiBAQAogI2ltcG9y
dCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJPYmpD
RXZlbnRMaXN0ZW5lci5oIgogI2ltcG9ydCAiU1ZHRG9jdW1lbnQuaCIKICNpbXBvcnQgIlNWR1Bv
aW50LmgiCkBAIC0xNjIxLDI2ICsxNjIwLDYgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0t
ICh2b2lkKXZhcmlhZGljU3RyaW5nTWV0aG9kOihOU1N0cmluZyAqKWhlYWQgdGFpbDooTlNTdHJp
bmcgKil0YWlsCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIElNUEwtPnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOwotfQotCi0tICh2b2lk
KXZhcmlhZGljRG91YmxlTWV0aG9kOihkb3VibGUpaGVhZCB0YWlsOihkb3VibGUpdGFpbAotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT52YXJp
YWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKLX0KLQotLSAodm9pZCl2YXJpYWRpY05vZGVN
ZXRob2Q6KERPTU5vZGUgKiloZWFkIHRhaWw6KERPTU5vZGUgKil0YWlsCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGlmICghaGVhZCkKLSAgICAgICAg
V2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBJTVBMLT52YXJpYWRpY05v
ZGVNZXRob2QoKmNvcmUoaGVhZCksIGNvcmUodGFpbCkpOwotfQotCiAtICh2b2lkKWFueTooZmxv
YXQpYSBiOihpbnQpYgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281170</attachid>
            <date>2016-06-13 06:07:45 -0700</date>
            <delta_ts>2016-06-13 06:38:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-158529-20160613150918.patch</filename>
            <type>text/plain</type>
            <size>15996</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRkMDcyZTVjODJmZTEw
MjJhYzgxOGEyNjg4MTIzMjFiYWZjNDA1YS4uOGY3MWNmNTVjZTlkYjBkZjg3OTIwMTY4Y2Q2NWFh
MzMyZGI4OTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA2LTEzICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBJbXBy
b3ZlIGNvZGUgZ2VuZXJhdG9yIGZvciBmdW5jdGlvbnMgd2l0aCB2YXJpYWRpYyBwYXJhbWV0ZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBKUyBiaW5kaW5n
cyBjb2RlIG9mIGZ1bmN0aW9ucyB3aXRoIHZhcmlhZGljIHBhcmFtZXRlcnMgaXMgaW1wcm92ZWQu
CisKKyAgICAgICAgRnVuY3Rpb25zIHdpdGggdmFyaWFkaWMgcGFyYW1ldGVycyBhcmUgc2tpcHBl
ZCBmb3IgT2JqQyBhbmQgR09iamVjdCBjb2RlIGdlbmVyYXRvcnMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAgICAoU2tpcEZ1bmN0
aW9uKTogU2tpcCBmdW5jdGlvbnMgd2l0aCB2YXJpYWRpYyBwYXJhbWV0ZXJzLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ck9iakMucG06CisgICAgICAgIChTa2lwRnVuY3Rpb24pOiBTa2lwIGZ1bmN0aW9ucyB3aXRoIHZh
cmlhZGljIHBhcmFtZXRlcnMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2Fu
eSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2F0dGFjaF9zaGFkb3df
cm9vdCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29u
bHlfbG9uZ19hdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0
X3JlYWRfb25seV9zdHJpbmdfYXR0cik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNOb2RlTWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9i
ai5tbToKKwogMjAxNi0wNi0xMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIENsZWFudXAgUmVuZGVyQmxvY2s6OnJlbW92ZVBvc2l0aW9uZWRPYmplY3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09i
amVjdC5wbQppbmRleCA1NDFjYzc4NDA2ZWYxMTZkMTA5NDkzZDU0MmMwODc0YjBiMmIzNWEyLi5k
ZjRkZGRhNTQzNDYyZDg1YWJmZjRlZDgyNTU4OWE5MzczMzA5NTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0K
QEAgLTMyMCwxNCArMzIwLDE0IEBAIHN1YiBTa2lwRnVuY3Rpb24gewogICAgICMgaG93IHRvIGF1
dG8tZ2VuZXJhdGUgY2FsbGJhY2tzLiAgU2tpcCBmdW5jdGlvbnMgdGhhdCBoYXZlICJNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyIiBvcgogICAgICMgc2VxdWVuY2U8VD4gcGFyYW1ldGVycywgYmVjYXVz
ZSB0aGlzIGNvZGUgZ2VuZXJhdG9yIGRvZXNuJ3Qga25vdyBob3cgdG8gYXV0by1nZW5lcmF0ZQog
ICAgICMgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciBvciBzZXF1ZW5jZTxUPi4gU2tpcCBFdmVudExp
c3RlbmVycyBiZWNhdXNlIHRoZXkgYXJlIGhhbmRsZWQgZWxzZXdoZXJlLgorICAgICMgU2tpcCBm
dW5jdGlvbnMgdGhhdCBoYXZlIHZhcmlhZGljIHBhcmFtZXRlcnMgYmVjYXVzZSBub3Qgc3VwcG9y
dGVkIHlldC4KICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7Ci0gICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNGdW5jdGlvbk9ubHlDYWxsYmFja0lu
dGVyZmFjZSgkcGFyYW0tPnR5cGUpIHx8Ci0gICAgICAgICAgICAkcGFyYW0tPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDbGFtcCJ9IHx8Ci0gICAgICAgICAgICAkcGFyYW0tPnR5cGUgZXEgIk1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIiIHx8Ci0gICAgICAgICAgICAkcGFyYW0tPnR5cGUgZXEgIkV2ZW50
TGlzdGVuZXIiIHx8Ci0gICAgICAgICAgICAkY29kZUdlbmVyYXRvci0+R2V0U2VxdWVuY2VUeXBl
KCRwYXJhbS0+dHlwZSkpIHsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9CisgICAg
ICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50
ZXJmYWNlKCRwYXJhbS0+dHlwZSk7CisgICAgICAgIHJldHVybiAxIGlmICRwYXJhbS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNsYW1wIn07CisgICAgICAgIHJldHVybiAxIGlmICRwYXJhbS0+dHlw
ZSBlcSAiTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciI7CisgICAgICAgIHJldHVybiAxIGlmICRwYXJh
bS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciI7CisgICAgICAgIHJldHVybiAxIGlmICRjb2RlR2Vu
ZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHBhcmFtLT50eXBlKTsKKyAgICAgICAgcmV0dXJuIDEg
aWYgJHBhcmFtLT5pc1ZhcmlhZGljOwogICAgIH0KIAogICAgICMgVGhpcyBpcyBmb3IgRGF0YVRy
YW5zZmVySXRlbUxpc3QuaWRsIGFkZChGaWxlKSBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZDNmMGRiOTM5M2E4
YzVkNmJjYzRlNDNiMzdlZjY2ZmRlZDk0OTMyOC4uMDJjOTk2MTczOThmOWU5YTEyNjM0Y2YwYWY2
ZThmNDFhZjI4ZDgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM2MTksNiArMzYxOSw3IEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgICAgICBteSAkdHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CiAKICAg
ICAgICAgZGllICJPcHRpb25hbCBwYXJhbWV0ZXJzIG9mIG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5
cGVzIGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICEkcGFy
YW1ldGVyLT5pc051bGxhYmxlICYmICRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBl
KTsKKyAgICAgICAgZGllICJPcHRpb25hbCBwYXJhbWV0ZXJzIHByZWNlZGluZyB2YXJpYWRpYyBw
YXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCAm
JiAgQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9WyRudW1QYXJhbWV0ZXJzIC0gMV0tPmlzVmFyaWFk
aWMpOwogCiAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRw
YXJhbWV0ZXItPmRlZmF1bHQpKSB7CiAgICAgICAgICAgICAjIEFzIHBlciBXZWIgSURMLCBvcHRp
b25hbCBkaWN0aW9uYXJ5IHBhcmFtZXRlcnMgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGhhdmUg
YSBkZWZhdWx0IHZhbHVlIG9mIGFuIGVtcHR5IGRpY3Rpb25hcnksIHVubGVzcyBvdGhlcndpc2Ug
c3BlY2lmaWVkLgpAQCAtMzY3OSwxNiArMzY4MCwyMCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2sKICAgICAgICAgICAgIG15ICRuYXRpdmVFbGVtZW50VHlwZSA9IEdldE5hdGl2ZVR5cGUo
JGludGVyZmFjZSwgJHR5cGUpOwogICAgICAgICAgICAgaWYgKCFJc05hdGl2ZVR5cGUoJHR5cGUp
KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZlY3RvcjwkbmF0
aXZlRWxlbWVudFR5cGU+ICRuYW1lO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIEFTU0VSVCgkYXJndW1lbnRJbmRleCA8PSBzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmFt
ZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0YXRlLT5hcmd1bWVudENvdW50KCkgLSAkYXJndW1l
bnRJbmRleCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
Zm9yICh1bnNpZ25lZCBpID0gJGFyZ3VtZW50SW5kZXgsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50
Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkuaW5o
ZXJpdHMoSlMke3R5cGV9OjppbmZvKCkpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBhdXRvKiBpdGVtID0gSlMke3R5cGV9Ojp0b1dyYXBwZWQoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFpdGVtKVxuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJy
b3IoKnN0YXRlLCBpLCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0
aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgJG5hbWUuYXBwZW5kKEpTJHt0eXBlfTo6dG9XcmFwcGVkKHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudChpKSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAkbmFtZS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7XG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIikKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZlY3Rvcjwk
bmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lID0gdG9OYXRpdmVBcmd1bWVudHM8JG5hdGl2ZUVsZW1l
bnRUeXBlPihzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOwogICAgICAgICB9IGVsc2lmICgk
Y29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgIG15ICRjbGFz
c05hbWUgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9i
akMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtCmluZGV4IDgxYzQ1ZTA1MTlhZWU1YWM4MWVkN2U0YmVhMjRkNTllOTEzMmFlODAuLjYwYTNi
OTI3NGIwNDUxMzcxODE0NmE5Y2EyNmE0MTJmZDNlZGQ0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtNTQ3LDYg
KzU0Nyw3IEBAIHN1YiBTa2lwRnVuY3Rpb24KICAgICAgICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5l
cmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkcGFyYW0tPnR5cGUpOwogICAgICAgICByZXR1cm4gMSBp
ZiAkY29kZUdlbmVyYXRvci0+R2V0QXJyYXlUeXBlKCRwYXJhbS0+dHlwZSk7CiAgICAgICAgIHJl
dHVybiAxIGlmICRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNsYW1wIn07CisgICAgICAg
IHJldHVybiAxIGlmICRwYXJhbS0+aXNWYXJpYWRpYzsKICAgICB9CiAKICAgICByZXR1cm4gMSBp
ZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlByaXZhdGUifTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5kZXggN2VkNjAzYjEzZWIwZjRjNzFh
ZGQ5MTFkYjQ4OGNkNTVmYzQ5NDIzZC4uZTI1NThjODMyYzE0OTY5YWM2MGM0Njg3MmUyOWExNWVk
NWRlOGFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJL
aXRET01EaWN0aW9uYXJ5UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJp
dmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0RE9NUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVNWR1BvaW50UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdERPTVRlc3REaWN0aW9uYXJ5UHJpdmF0ZS5oIgpAQCAtMTk5MiwzOCAr
MTk5MSw2IEBAIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0X2Z1bmN0aW9uX3dp
dGhfYXJyYXkoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21ldGhvZChXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogaGVhZCwgY29uc3QgZ2NoYXIqIHRhaWwpCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbChoZWFkKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHRhaWwpOwotICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkSGVhZCA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChoZWFkKTsKLSAgICBXVEY6OlN0cmluZyBj
b252ZXJ0ZWRUYWlsID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRhaWwpOwotICAgIGl0ZW0tPnZh
cmlhZGljU3RyaW5nTWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOwotfQotCi12
b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZChXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBnZG91YmxlIGhlYWQsIGdkb3VibGUgdGFpbCkKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnZhcmlhZGljRG91YmxlTWV0aG9kKGhlYWQs
IHRhaWwpOwotfQotCi12b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfbm9kZV9tZXRo
b2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NTm9kZSogaGVhZCwgV2ViS2l0RE9N
Tm9kZSogdGFpbCkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTk9ERShoZWFkKSk7Ci0gICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX05PREUodGFpbCkpOwotICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6Tm9kZSogY29udmVy
dGVkSGVhZCA9IFdlYktpdDo6Y29yZShoZWFkKTsKLSAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0
ZWRUYWlsID0gV2ViS2l0Ojpjb3JlKHRhaWwpOwotICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhv
ZCgqY29udmVydGVkSGVhZCwgY29udmVydGVkVGFpbCk7Ci19Ci0KIHZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial9hbnkoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2Zsb2F0IGEsIGdsb25nIGIpCiB7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5oCmluZGV4IDExYTVlZTg1YmJmYmJiNzBiMzFmYzg2MWYxMThjNDM1ZTUx
ZmZiNmIuLjhiMDU2NjIxZWEzNDcyNmM2YzEzZWE4MDIwYjgzN2ZmYmIwYTZmMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmgKQEAgLTg5OSwzOSArODk5LDYgQEAgV0VCS0lUX0FQSSBn
Ym9vbGVhbgogd2Via2l0X2RvbV90ZXN0X29ial9zdHJpY3RfZnVuY3Rpb25fd2l0aF9hcnJheShX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcsIGdsb25nIGFy
cmF5LCBHRXJyb3IqKiBlcnJvcik7CiAKIC8qKgotICogd2Via2l0X2RvbV90ZXN0X29ial92YXJp
YWRpY19zdHJpbmdfbWV0aG9kOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKLSAqIEBo
ZWFkOiBBICNnY2hhcgotICogQHRhaWw6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNf
c3RyaW5nX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogaGVhZCwg
Y29uc3QgZ2NoYXIqIHRhaWwpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFk
aWNfZG91YmxlX21ldGhvZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCi0gKiBAaGVh
ZDogQSAjZ2RvdWJsZQotICogQHRhaWw6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRp
Y19kb3VibGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdkb3VibGUgaGVhZCwgZ2Rv
dWJsZSB0YWlsKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVf
bWV0aG9kOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKLSAqIEBoZWFkOiBBICNXZWJL
aXRET01Ob2RlCi0gKiBAdGFpbDogQSAjV2ViS2l0RE9NTm9kZQotICoKLSAqIFN0YWJpbGl0eTog
VW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX3Zhcmlh
ZGljX25vZGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTU5vZGUqIGhl
YWQsIFdlYktpdERPTU5vZGUqIHRhaWwpOwotCi0vKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpf
YW55OgogICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKICAqIEBhOiBBICNnZmxvYXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKaW5kZXggOWZkYWM4NWM4NTI0Nzc1NjFkMGUxNjczYTkzNThlMjdhZmMyZTU5Ny4uNzAx
ZDFmYzVlOWRiMTY1NzNlOWQzMmYxZTJkN2ZkNTY5ZjQxYjE0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTUz
ODcsMTIgKzUzODcsMTUgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3QKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFy
Z3M7CisgICAgQVNTRVJUKDAgPD0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgYmxvYkFy
Z3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoIXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChp
KS5pbmhlcml0cyhKU0Jsb2I6OmluZm8oKSkpCisgICAgICAgIGF1dG8qIGl0ZW0gPSBKU0Jsb2I6
OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgICAgICBpZiAoIWl0
ZW0pCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIGks
ICJibG9iQXJncyIsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiQmxvYiIpOwotICAg
ICAgICBibG9iQXJncy5hcHBlbmQoSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KGkpKSk7CisgICAgICAgIGJsb2JBcmdzLnVuY2hlY2tlZEFwcGVuZChpdGVtKTsKICAg
ICB9Ci0gICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKGJsb2JBcmdzKTsKKyAgICBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5MTMsNyArNTkxNiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmlu
Z01ldGhvZChFeGVjCiAgICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRz
PFN0cmluZz4oc3RhdGUsIDEpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
IGltcGwudmFyaWFkaWNTdHJpbmdNZXRob2QoV1RGTW92ZShoZWFkKSwgdGFpbCk7CisgICAgaW1w
bC52YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTMzLDcg
KzU5MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlYwogICAgIFZlY3Rvcjxkb3VibGU+IHRh
aWwgPSB0b05hdGl2ZUFyZ3VtZW50czxkb3VibGU+KHN0YXRlLCAxKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUo
aGVhZCksIHRhaWwpOworICAgIGltcGwudmFyaWFkaWNEb3VibGVNZXRob2QoV1RGTW92ZShoZWFk
KSwgV1RGTW92ZSh0YWlsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNTk1MSwxMiArNTk1NCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNT
dAogICAgIGlmIChVTkxJS0VMWSghaGVhZCkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgMCwgImhlYWQiLCAiVGVzdE9iaiIsICJ2YXJpYWRpY05vZGVNZXRo
b2QiLCAiTm9kZSIpOwogICAgIFZlY3RvcjxOb2RlKj4gdGFpbDsKKyAgICBBU1NFUlQoMSA8PSBz
dGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICB0YWlsLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSAtIDEpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDEsIGNv
dW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
aWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkuaW5oZXJpdHMoSlNOb2RlOjppbmZvKCkp
KQorICAgICAgICBhdXRvKiBpdGVtID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCAidGFpbCIsICJUZXN0T2JqIiwgInZhcmlh
ZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Ci0gICAgICAgIHRhaWwuYXBwZW5kKEpTTm9kZTo6dG9X
cmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOworICAgICAgICB0YWlsLnVuY2hl
Y2tlZEFwcGVuZChpdGVtKTsKICAgICB9Ci0gICAgaW1wbC52YXJpYWRpY05vZGVNZXRob2QoKmhl
YWQsIHRhaWwpOworICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRh
aWwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLmgKaW5kZXggYWRiZmEwOTlkMDQzYmFiMTk2ZjFlNjIxY2RkNmI4MjhmMzE5MWExNi4u
NmQ2YTBmOGQ3MzNlZjhhNmU3MWU2OTc3YzNlMTE5YWFhZmQ1MzEyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaApA
QCAtMjgsNyArMjgsNiBAQAogCiBAY2xhc3MgRE9NRGljdGlvbmFyeTsKIEBjbGFzcyBET01Eb2N1
bWVudDsKLUBjbGFzcyBET01Ob2RlOwogQGNsYXNzIERPTVNWR0RvY3VtZW50OwogQGNsYXNzIERP
TVNWR1BvaW50OwogQGNsYXNzIERPTVRlc3REaWN0aW9uYXJ5OwpAQCAtMjE0LDkgKzIxMyw2IEBA
IFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVGVzdE9iaiA6IERPTU9iamVjdAogLSAoRE9N
U1ZHUG9pbnQgKilpbW11dGFibGVQb2ludEZ1bmN0aW9uOwogLSAodm9pZClvcmFuZ2U7CiAtIChC
T09MKXN0cmljdEZ1bmN0aW9uOihOU1N0cmluZyAqKXN0ciBhOihmbG9hdClhIGI6KGludCliOwot
LSAodm9pZCl2YXJpYWRpY1N0cmluZ01ldGhvZDooTlNTdHJpbmcgKiloZWFkIHRhaWw6KE5TU3Ry
aW5nICopdGFpbDsKLS0gKHZvaWQpdmFyaWFkaWNEb3VibGVNZXRob2Q6KGRvdWJsZSloZWFkIHRh
aWw6KGRvdWJsZSl0YWlsOwotLSAodm9pZCl2YXJpYWRpY05vZGVNZXRob2Q6KERPTU5vZGUgKilo
ZWFkIHRhaWw6KERPTU5vZGUgKil0YWlsOwogLSAodm9pZClhbnk6KGZsb2F0KWEgYjooaW50KWI7
CiAtICh2b2lkKWF0dGFjaFNoYWRvd1Jvb3Q6KERPTVRlc3REaWN0aW9uYXJ5ICopaW5pdDsKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLm1tCmluZGV4IDFmZmU2NDkzYzkzNmM2NDU0YzVkMjI2NWVmMTg1YjRiNGUx
NzRlZWYuLjE2ZDdiOTQxMTYwYzU0N2NkOWQ0ZTQzMzE3NWNlMTIyNTk0OWUxNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbQpAQCAtNTAsNyArNTAsNiBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
ICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
Ci0jaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9y
dCAiU1ZHRG9jdW1lbnQuaCIKICNpbXBvcnQgIlNWR1BvaW50LmgiCkBAIC0xNjIxLDI2ICsxNjIw
LDYgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tICh2b2lkKXZhcmlhZGljU3RyaW5nTWV0
aG9kOihOU1N0cmluZyAqKWhlYWQgdGFpbDooTlNTdHJpbmcgKil0YWlsCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnZhcmlhZGljU3RyaW5n
TWV0aG9kKGhlYWQsIHRhaWwpOwotfQotCi0tICh2b2lkKXZhcmlhZGljRG91YmxlTWV0aG9kOihk
b3VibGUpaGVhZCB0YWlsOihkb3VibGUpdGFpbAotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT52YXJpYWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0
YWlsKTsKLX0KLQotLSAodm9pZCl2YXJpYWRpY05vZGVNZXRob2Q6KERPTU5vZGUgKiloZWFkIHRh
aWw6KERPTU5vZGUgKil0YWlsCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGlmICghaGVhZCkKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JF
eGNlcHRpb24oKTsKLSAgICBJTVBMLT52YXJpYWRpY05vZGVNZXRob2QoKmNvcmUoaGVhZCksIGNv
cmUodGFpbCkpOwotfQotCiAtICh2b2lkKWFueTooZmxvYXQpYSBiOihpbnQpYgogewogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>