<?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>159048</bug_id>
          
          <creation_ts>2016-06-22 16:58:14 -0700</creation_ts>
          <short_desc>We should have a DFG intrinsic that checks if a value is a TypedArrayView</short_desc>
          <delta_ts>2016-06-22 18:39:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1204730</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-22 16:58:14 -0700</bug_when>
    <thetext>We should have a DFG intrinsic that checks if a value is a TypedArrayView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204732</commentid>
    <comment_count>1</comment_count>
      <attachid>281887</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-22 17:02:55 -0700</bug_when>
    <thetext>Created attachment 281887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204733</commentid>
    <comment_count>2</comment_count>
      <attachid>281888</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-22 17:10:23 -0700</bug_when>
    <thetext>Created attachment 281888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204736</commentid>
    <comment_count>3</comment_count>
      <attachid>281888</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-22 17:34:10 -0700</bug_when>
    <thetext>Comment on attachment 281888
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1276
&gt; +            if (!(child.m_type &amp; ~SpecTypedArrayView)) {

Shouldn&apos;t this also check !!child.m_type?

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1281
&gt; +            if (!(child.m_type &amp; SpecTypedArrayView)) {

ditto

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6121
&gt; +        m_out.branch(isCell(value, provenType(m_node-&gt;child1())), unsure(isCellCase), unsure(continuation));

I would guess the isCellCase is likely.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:707
&gt; +        GlobalPropertyInfo(vm.propertyNames-&gt;builtinNames().isTypedArrayViewPrivateName(), privateFuncIsTypedArrayView, DontEnum | DontDelete | ReadOnly),

Where is this used from besides the test?

&gt; Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp:70
&gt; +    return JSValue::encode(jsBoolean(value.isObject() &amp;&amp; isTypedView(value.getObject()-&gt;classInfo()-&gt;typedArrayStorageType)));

I think this would be faster as:
jsBoolean(value.isCell() &amp;&amp; isTypedView(value.asCell()-&gt;classInfo()-&gt;typedArrayStorageType))
because most cells you will see are going to be objects.

&gt; Source/JavaScriptCore/tests/stress/istypedarrayview-intrinsic.js:4
&gt; +    let foo = createBuiltin(`(function (a) { &quot;use strict&quot;; return @isTypedArrayView(a); })`);

Neat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204737</commentid>
    <comment_count>4</comment_count>
      <attachid>281888</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-22 17:35:12 -0700</bug_when>
    <thetext>Comment on attachment 281888
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1281
&gt;&gt; +            if (!(child.m_type &amp; SpecTypedArrayView)) {
&gt; 
&gt; ditto

ignore this ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204743</commentid>
    <comment_count>5</comment_count>
      <attachid>281888</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-22 18:04:26 -0700</bug_when>
    <thetext>Comment on attachment 281888
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1276
&gt;&gt; +            if (!(child.m_type &amp; ~SpecTypedArrayView)) {
&gt; 
&gt; Shouldn&apos;t this also check !!child.m_type?

I&apos;m pretty sure that we force OSR if the child has no speculated type.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6121
&gt;&gt; +        m_out.branch(isCell(value, provenType(m_node-&gt;child1())), unsure(isCellCase), unsure(continuation));
&gt; 
&gt; I would guess the isCellCase is likely.

While I agree with you in general, my thought process is that this node will be eliminated in most of the cases where the value is a TypedArray. In the cases where we can&apos;t eliminate the node I think its harder to claim the value is a usually a cell.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:707
&gt;&gt; +        GlobalPropertyInfo(vm.propertyNames-&gt;builtinNames().isTypedArrayViewPrivateName(), privateFuncIsTypedArrayView, DontEnum | DontDelete | ReadOnly),
&gt; 
&gt; Where is this used from besides the test?

I&apos;m going to use this when I move subarray to a builtin. Currently it is not used elsewhere.

&gt;&gt; Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp:70
&gt;&gt; +    return JSValue::encode(jsBoolean(value.isObject() &amp;&amp; isTypedView(value.getObject()-&gt;classInfo()-&gt;typedArrayStorageType)));
&gt; 
&gt; I think this would be faster as:
&gt; jsBoolean(value.isCell() &amp;&amp; isTypedView(value.asCell()-&gt;classInfo()-&gt;typedArrayStorageType))
&gt; because most cells you will see are going to be objects.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204745</commentid>
    <comment_count>6</comment_count>
      <attachid>281892</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-22 18:10:48 -0700</bug_when>
    <thetext>Created attachment 281892
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204751</commentid>
    <comment_count>7</comment_count>
      <attachid>281892</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 18:39:13 -0700</bug_when>
    <thetext>Comment on attachment 281892
Patch for landing

Clearing flags on attachment: 281892

Committed r202363: &lt;http://trac.webkit.org/changeset/202363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204752</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 18:39:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281887</attachid>
            <date>2016-06-22 17:02:55 -0700</date>
            <delta_ts>2016-06-22 17:10:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159048-20160622170246.patch</filename>
            <type>text/plain</type>
            <size>22351</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTM3MzhkMWI0NmZmOThmM2Y3NzFhMTBjMGI2ZTA0NmNhOTMwNThlLi5kMTY0ZWNjNTMyZDliZmRh
NjY3ODhiOTkwYWJkZDEwNzRhMjBjNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0yMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXZSBzaG91bGQgaGF2ZSBhIERGRyBpbnRyaW5zaWMgdGhhdCBjaGVj
a3MgaWYgYSB2YWx1ZSBpcyBhIFR5cGVkQXJyYXlWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgREZHIEludHJp
bnNpYyB0aGF0IGNoZWNrcyBpZiBhIHZhbHVlIGlzIGEgVHlwZWRBcnJheVZpZXcuCisgICAgICAg
IFRoZSBpbnRyaW5zaWMsIElzVHlwZWRBcnJheVZpZXcsIHdvcmtzIGluIHRoZSBzYW1lIHdheSB0
aGF0IHRoZSBvdGhlciBJczxpbnNlcnQtdHlwZT4KKyAgICAgICAgREZHIG5vZGVzIHdvcmsuIEFk
ZGl0aW9uYWxseSwgYSBuZXcgYnVpbHRpbiBmdW5jdGlvbiBpc1R5cGVkQXJyYXlWaWV3IGhhcyBi
ZWVuIGFkZGVkLgorICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBuZWVkZWQgdG8gZml4IHJlZ3Jl
c3Npb25zIGluICVUeXBlZEFycmF5JS5wcm90b3R5cGUuc3ViYXJyYXkuCisKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzVHlw
ZWRBcnJheVZpZXcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzVHlwZWRBcnJheVZpZXcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0eXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2lz
dHlwZWRhcnJheXZpZXctaW50cmluc2ljLmpzOiBBZGRlZC4KKyAgICAgICAgKG1ha2VGbik6Cisg
ICAgICAgICh0eXBlZEFycmF5cy5mb3JFYWNoKToKKyAgICAgICAgKGxldC50ZXN0KToKKyAgICAg
ICAgKHRlc3QpOgorCiAyMDE2LTA2LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDBiYmExMDYxNTYzMmJhMGQ3ZGIxZTk3NzU0ZGMz
Nzg2MWFmNjZhM2UuLmYwODUwMDgwYzBhMzY3YzEwOWZkYzNjNWJmYmI5MzVhNDk2YWRiNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTEy
MSw2ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyh0aGlzTnVtYmVyVmFsdWUp
IFwKICAgICBtYWNybyhuZXdUYXJnZXRMb2NhbCkgXAogICAgIG1hY3JvKGRlcml2ZWRDb25zdHJ1
Y3RvcikgXAorICAgIG1hY3JvKGlzVHlwZWRBcnJheVZpZXcpIFwKICAgICBtYWNybyhpc0JvdW5k
RnVuY3Rpb24pIFwKICAgICBtYWNybyhoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pIFwKICAgICBt
YWNybyhpbnN0YW5jZU9mKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2RjY2FjMzlmMmQ1ZmJj
ZWFlNWU4Y2Y5MWI0YTkxOTk2OTUwNGE2NS4uYWQ4MjdkNWFhZGQ4NWEwZmYxZDkxYzdiOTlkODIz
ZTZjZGMzN2ZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTAzNSw3ICsxMDM1LDggQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmpl
Y3RPck51bGw6CiAgICAgY2FzZSBJc0Z1bmN0aW9uOgotICAgIGNhc2UgSXNSZWdFeHBPYmplY3Q6
IHsKKyAgICBjYXNlIElzUmVnRXhwT2JqZWN0OgorICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlldzog
ewogICAgICAgICBBYnN0cmFjdFZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIGlmIChjaGlsZC52YWx1ZSgpKSB7CiAgICAgICAgICAgICBib29sIGNvbnN0YW50
V2FzU2V0ID0gdHJ1ZTsKQEAgLTEwOTcsNiArMTA5OCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgICAgICBjYXNlIElzRW1wdHk6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNFbXB0eSgpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CisgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNPYmpl
Y3QoKSAmJiBpc1R5cGVkVmlldyhjaGlsZC52YWx1ZSgpLmdldE9iamVjdCgpLT5jbGFzc0luZm8o
KS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI2OCw2ICsxMjcyLDE5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5
cGUgJiB+U3BlY1R5cGVkQXJyYXlWaWV3KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQg
PSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCEoY2hpbGQubV90eXBlICYgU3BlY1R5cGVkQXJyYXlWaWV3KSkgeworICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAg
ICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMDc2N2UyZGMwZjhjOWJiNmFkYTE2ZGI3YThmYjE3
YmM4ZjNhODg0Li5mNjk3YTZlMDFjZGY2OGJiMTFiYjAxNzAyMTYxNzEzMzQ5N2NiNDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MjMxNCw2ICsyMzE0LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYzogewor
ICAgICAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMik7CisKKyAgICAg
ICAgaW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3Bl
cmFuZCksIGFkZFRvR3JhcGgoSXNUeXBlZEFycmF5VmlldywgT3BJbmZvKHByZWRpY3Rpb24pLCBn
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVJlcGxh
Y2VJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9
IDMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCmluZGV4IDlhNDhkNTg4NzJmNjZmNzg1YjE3YWZjZTU3NGFhYWIyN2Zh
M2FhNTIuLjk3YTQwNGI1NzNmZjI5MWVmNGQwMjY1NjJhY2MyNTgzZDljZjFhM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNzIsNiArMTcyLDcgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIElzU3RyaW5nOgogICAgIGNhc2UgSXNP
YmplY3Q6CiAgICAgY2FzZSBJc1JlZ0V4cE9iamVjdDoKKyAgICBjYXNlIElzVHlwZWRBcnJheVZp
ZXc6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICBj
YXNlIERvdWJsZVJlcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRl
eCBjYTkyYjU4M2NkYzljZTExYjgwYTQ3MGVmNjVkMzhkZWQ2NTg5OGI4Li44ZDhmOWUyNGU5OGNm
OWVkZTdiZmQ4NzlhNjYxMzEzZDRiZDQxNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCkBAIC0xNjUsNiArMTY1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CiAgICAgY2FzZSBJc0Z1bmN0
aW9uOgogICAgIGNhc2UgSXNSZWdFeHBPYmplY3Q6CisgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3
OgogICAgIGNhc2UgVHlwZU9mOgogICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIFRvUHJp
bWl0aXZlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5k
ZXggYTI1ZDgyMDc4OTc1YTEyMjIyMzQ1ZWRjOGZkZjgwNmI3MjQ3MGQ3Mi4uNWNmMDA4N2YzM2Fl
YmYzZTc5NzZlM2Q2NDIzOTgzYWEyYTA0MGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTQ3LDYgKzE1NDcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAg
IGNhc2UgSXNKU0FycmF5OgorICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAg
IGNhc2UgSXNFbXB0eToKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICAgICAgY2FzZSBJ
c0Jvb2xlYW46CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZGUz
NGE0ODU4ZGI4YjkyZmNjM2E2ODJkMWIwMGQyY2Q2ZDJhZGZhYi4uNTQyYjQ3ZmVlMTQ1N2E3ODA3
ODBmNDQ5YTgwY2MwZWFiZThjZDQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMzE3LDYgKzMxNyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhJc09iamVjdE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBt
YWNybyhJc0Z1bmN0aW9uLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzUmVnRXhw
T2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKElzVHlwZWRBcnJheVZpZXcs
IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKFRv
UHJpbWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDYxNTQ3NGIwNGIxNDFjMzRlZGIxYmU2YTAzMTgyYTZmZDAwZGU1MmQu
Ljc5MmFhODUyNjU5MWIyY2M0MGI5Y2Y1NzFjNTY1Njg5N2FjYjQ1MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC03OTIsNyArNzkyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc09i
amVjdDoKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Z1bmN0
aW9uOgotICAgICAgICBjYXNlIElzUmVnRXhwT2JqZWN0OiB7CisgICAgICAgIGNhc2UgSXNSZWdF
eHBPYmplY3Q6CisgICAgICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzogewogICAgICAgICAgICAg
c2V0UHJlZGljdGlvbihTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA2
MDQ4NGIwODcyMmM4YWYzMDUzZjkyYzkwZGNkZmZiZGVjOWZkMTg3Li5mOGU2NjEzNTZlOGI5ODhm
YTAzZTc2YTQ1MTdhZjY3OTRiM2I0ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjY2LDYgKzI2Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIElzT2JqZWN0T3JOdWxsOgogICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICBjYXNlIElz
UmVnRXhwT2JqZWN0OgorICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoKICAgICBjYXNlIFR5cGVP
ZjoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IGI5MTRkMzkxMTllYTY5ZTNjM2Y3MGJiZWM3NDhmYmVhMjVhMzA1OWEuLmVmNmRkZjJkMjNh
MzM1NmNlYjFlODI5ZDI1MGQ0NWIyZGU2NjhjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNDU1LDYgKzM0NTUsMzIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzUmVnRXhwT2JqZWN0KE5vZGUqIG5vZGUpCiAgICAg
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUlzVHlwZWRBcnJheVZpZXcoTm9kZSogbm9kZSkKK3sKKyAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOworCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZO
b3RDZWxsKHZhbHVlUmVncyk7CisKKyAgICBtX2ppdC5sb2FkOChKSVRDb21waWxlcjo6QWRkcmVz
cyh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
cmVzdWx0R1BSKTsKKyAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoSW50OEFycmF5VHlwZSks
IHJlc3VsdEdQUik7CisgICAgbV9qaXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpCZWxvd09yRXF1
YWwsCisgICAgICAgIHJlc3VsdEdQUiwKKyAgICAgICAgVHJ1c3RlZEltbTMyKEZsb2F0NjRBcnJh
eVR5cGUgLSBJbnQ4QXJyYXlUeXBlKSwKKyAgICAgICAgcmVzdWx0R1BSKTsKKyAgICBibGVzc0Jv
b2xlYW4ocmVzdWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVt
cCgpOworCisgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKKyAgICBtb3ZlRmFsc2VUbyhyZXN1
bHRHUFIpOworCisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgYmxlc3NlZEJvb2xlYW5SZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNh
bGxPYmplY3RDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAxMTQxNmM0NzQwOGI1MzE5YWIz
YmU5ZjJmZWM1NDA3OGZhMzZlYWU3Li5kZWJkMjU4OGFiMTNhZjNiMDE2ZTk5NDRhZWFhZjEwMWQz
MjBhODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCkBAIC03NTQsNiArNzU0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21waWxlSXNKU0Fy
cmF5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJc1JlZ0V4cE9iamVjdChOb2RlKik7CisgICAg
dm9pZCBjb21waWxlSXNUeXBlZEFycmF5VmlldyhOb2RlKik7CiAKICAgICB2b2lkIGVtaXRDYWxs
KE5vZGUqKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGEwMzU4OWE5NWQ3NzFkN2VhMDhiZDIyYTIwMWYy
ZmE0YzQyMGZhZjQuLjViMTgyYjRkMDJlODhhMTM1NGVkZWJlZTEyMzY2NTY4ZDIyZDZmMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNDczMyw2ICs0NzMzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJc1R5cGVk
QXJyYXlWaWV3OiB7CisgICAgICAgIGNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFR5cGVPZjogewogICAgICAgICBjb21waWxl
VHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM4YjRlOTQzMWE2Mzk3MGRhNGMw
MDJkZTIyMzlmMzc0NDMwODBmNDQuLmI2M2JhMWE3NmFhMzFmZDBhZjM0YTFmYzg0YmUyNjg3OGE5
NTI5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtNDY1OCw2ICs0NjU4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJc1R5
cGVkQXJyYXlWaWV3OiB7CisgICAgICAgIGNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFR5cGVPZjogewogICAgICAgICBjb21w
aWxlVHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkNDYyYWZiMTlkZjI5OTUwNTgwZGZiNDFj
M2ViNzZkYTE5OTcxMWEzLi45M2UxYzI2MzE3ODVlZTJjMDAyNDNmN2NjZWNjMDU2NjgyYTQyN2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBA
IC0xODcsNiArMTg3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICBjYXNlIElzRnVuY3Rpb246CiAg
ICAgY2FzZSBJc1JlZ0V4cE9iamVjdDoKKyAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAg
Y2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToK
ICAgICBjYXNlIEluc3RhbmNlT2Y6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggMTViZmU5MTRhNjNiNTEyNjlkMDdjYjQ1YzgxOWFmNDc3ODM0
MTEyMS4uYTY1ZGE3OTEzYTVlZmZjYzM3YjY1Yzg5NjIxN2MyOGE2YjEzODdhNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTAwLDYgKzkw
MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNSZWdFeHBPYmplY3Q6CiAgICAgICAgICAg
ICBjb21waWxlSXNSZWdFeHBPYmplY3QoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIElzVHlwZWRBcnJheVZpZXc6CisgICAgICAgICAgICBjb21waWxlSXNUeXBlZEFycmF5Vmll
dygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZU9mOgogICAgICAgICAg
ICAgY29tcGlsZVR5cGVPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MTA3LDYgKzYxMTAs
MjQgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9vbGVh
biwgbm90Q2VsbFJlc3VsdCwgY2VsbFJlc3VsdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGls
ZUlzVHlwZWRBcnJheVZpZXcoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0g
bV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1fb3V0LmJyYW5j
aChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXND
ZWxsQ2FzZSksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoaXNUeXBlZEFycmF5
Vmlldyh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xl
YW4sIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVUeXBlT2YoKQogICAgIHsKICAgICAgICAgRWRnZSBjaGlsZCA9IG1fbm9kZS0+Y2hpbGQxKCk7
CkBAIC0xMDA3Niw2ICsxMDA5NywxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQubG9h
ZDhaZXJvRXh0MzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9UeXBlKSwKICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50MzIoQXJyYXlUeXBlKSk7CiAgICAgfQorCisgICAgTFZhbHVlIGlz
VHlwZWRBcnJheVZpZXcoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVs
bFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0
eXBlICYgU3BlY0NlbGwsIFNwZWNUeXBlZEFycmF5VmlldykpCisgICAgICAgICAgICByZXR1cm4g
cHJvdmVuOworICAgICAgICBMVmFsdWUganNUeXBlID0gbV9vdXQuc3ViKAorICAgICAgICAgICAg
bV9vdXQubG9hZDhaZXJvRXh0MzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9UeXBlKSwK
KyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoSW50OEFycmF5VHlwZSkpOworICAgICAgICBy
ZXR1cm4gbV9vdXQuYmVsb3dPckVxdWFsKAorICAgICAgICAgICAganNUeXBlLAorICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnQzMihGbG9hdDY0QXJyYXlUeXBlIC0gSW50OEFycmF5VHlwZSkpOwor
ICAgIH0KICAgICAKICAgICBMVmFsdWUgaXNPYmplY3QoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCmluZGV4IGRmZDgzMDEzMzE5OGY3Y2MyYzA3OWU4MWY3YThhZDQyZmMy
ZTFmMzAuLjRhMDc5Mzk5NzdjZGE5MjFiYTczZGU3NzBiMmFlZmM0MTU3MmVlNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC02MCw2ICs2MCw3IEBAIGVu
dW0gSlNfRVhQT1JUX1BSSVZBVEUgSW50cmluc2ljIHsKICAgICBGUm91bmRJbnRyaW5zaWMsCiAg
ICAgVHJ1bmNJbnRyaW5zaWMsCiAgICAgSXNSZWdFeHBPYmplY3RJbnRyaW5zaWMsCisgICAgSXNU
eXBlZEFycmF5Vmlld0ludHJpbnNpYywKICAgICBCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJ
bnRyaW5zaWMsCiAKICAgICAvLyBHZXR0ZXIgaW50cmluc2ljcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBhYjAxOWNhODdjMmMy
MWJhMDU2N2ZmNDJmZDM1ZTdjMGNkYWIyNjllLi43YzkzMjc0MzEwOGU2NjI0MGFlOGFmOGMxNjc1
NDI5MGFlMTg2MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC02NTUsNiArNjU1LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1
Y3QKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5ndGggPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVG
dW5jTGVuZ3RoKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5cGVkQXJyYXlHZXRPcmln
aW5hbENvbnN0cnVjdG9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3RydWN0b3IpOwogICAg
IEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheVNvcnQgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk7
CisgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3ID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVu
Y0lzVHlwZWRBcnJheVZpZXcsIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMpOwogICAgIEpTRnVu
Y3Rpb24qIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNCb3VuZEZ1bmN0aW9uKTsKICAgICBKU0Z1bmN0aW9uKiBw
cml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7CiAgICAgSlNG
dW5jdGlvbiogcHJpdmF0ZUZ1bmNJbnN0YW5jZU9mID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKTsKQEAgLTcwMyw2
ICs3MDQsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheUxlbmd0aFBy
aXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheUxlbmd0aCwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3JQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9y
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5U29ydFBy
aXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheVNvcnQsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzVHlwZWRBcnJheVZpZXdQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmlzQm91bmRGdW5jdGlvblByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNCb3VuZEZ1
bmN0aW9uLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNJbnN0YW5j
ZUJvdW5kRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRG
dW5jdGlvbiwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5zdGFuY2VP
ZlByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSW5zdGFuY2VPZiwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRleCBhNTYyNTY3MzQ0OTUy
ZmNiYzcyYzE4ZTUxODAxMDNhOWYyYWVkODc1Li5jZDE5ZDEwOWE5OTIzY2E2ZDY3YzY5MTQ2YmYw
NDBhOWI3MDgwNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAtNjQsNiArNjQsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiB9IHdoaWxlIChmYWxzZSkKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHZhbHVlLmlzT2JqZWN0KCkgJiYgaXNUeXBlZFZp
ZXcodmFsdWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUp
KSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2
YXRlRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oZXhlYy0+YXJn
dW1lbnQoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCmluZGV4IDY3OTgzMjMyOGZlMWZmOGI4YTFhZWY0
MDMyZmVjNTU4YTdmZmM2MDQuLmRmMDVlZDkyZDg2YjY3MDc5OTRjYTkyYzI3ZjZjODk2ZWU2MDQ5
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUpOwogfTsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqKTsKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQoRXhl
Y1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pc3R5
cGVkYXJyYXl2aWV3LWludHJpbnNpYy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvaXN0eXBlZGFycmF5dmlldy1pbnRyaW5zaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMzZDIyY2Q0
OTdlNGQ1Nzg4NjU2ZTdhZTg0MmMxYmY4Nzk1ZDM0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaXN0eXBlZGFycmF5dmlldy1pbnRyaW5zaWMu
anMKQEAgLTAsMCArMSw3NSBAQAorbGV0IHR5cGVkQXJyYXlzID0gW0ludDhBcnJheSwgVWludDhB
cnJheSwgVWludDhDbGFtcGVkQXJyYXksIEludDE2QXJyYXksIFVpbnQxNkFycmF5LCBJbnQzMkFy
cmF5LCBVaW50MzJBcnJheSwgRmxvYXQzMkFycmF5LCBGbG9hdDY0QXJyYXldOworCitmdW5jdGlv
biBtYWtlRm4oZG9udElubGluZSkgeworICAgIGxldCBmb28gPSBjcmVhdGVCdWlsdGluKGAoZnVu
Y3Rpb24gKGEpIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gQGlzVHlwZWRBcnJheVZpZXcoYSk7IH0p
YCk7CisgICAgaWYgKGRvbnRJbmxpbmUpCisgICAgICAgIG5vSW5saW5lKGZvbykKKyAgICByZXR1
cm4gZm9vOworfQorCit0eXBlZEFycmF5cy5mb3JFYWNoKGZ1bmN0aW9uKCkgeworICAgIGxldCB0
ZXN0ID0gRnVuY3Rpb24oCisgICAgICAgIGAKKyAgICAgICAgbGV0IGZvbyA9IG1ha2VGbigpOwor
ICAgICAgICBsZXQgYmFyID0gbWFrZUZuKHRydWUpOworICAgICAgICBsZXQgdmlldyA9IG5ldyBJ
bnQ4QXJyYXkoMTApOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewor
ICAgICAgICAgICAgaWYgKCFmb28odmlldykpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGkpOworICAgICAgICAgICAgaWYgKCFiYXIodmlldykpCisgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGkpOworICAgICAgICB9CisgICAgICAgIGAKKyAgICApOworICAgIHRlc3Qo
KTsKK30pOworCit0eXBlZEFycmF5cy5mb3JFYWNoKGNvbnN0cnVjdG9yMSA9PiB7CisgICAgdHlw
ZWRBcnJheXMuZm9yRWFjaChjb25zdHJ1Y3RvcjIgPT4geworICAgICAgICBsZXQgdGVzdCA9IEZ1
bmN0aW9uKAorICAgICAgICAgICAgYAorICAgICAgICAgICAgbGV0IGZvbyA9IG1ha2VGbigpOwor
ICAgICAgICAgICAgbGV0IGJhciA9IG1ha2VGbih0cnVlKTsKKyAgICAgICAgICAgIGxldCB2aWV3
MSA9IG5ldyAke2NvbnN0cnVjdG9yMS5uYW1lfSgxMCk7CisgICAgICAgICAgICBsZXQgdmlldzIg
PSBuZXcgJHtjb25zdHJ1Y3RvcjIubmFtZX0oMTApOworCisgICAgICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgICAgICAgICBsZXQgdmlldyA9IGkgJSAyID09
PSAwID8gdmlldzEgOiB2aWV3MjsKKyAgICAgICAgICAgICAgICBpZiAoIWZvbyh2aWV3KSkKKyAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgICAgICAgICAgICAgIGlm
ICghYmFyKHZpZXcpKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBgCisgICAgICAgICk7CisgICAgICAgIHRlc3QoKTsK
KyAgICB9KTsKK30pOworCitsZXQgdGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIGxldCBmb28gPSBt
YWtlRm4oKTsKKyAgICBsZXQgYmFyID0gbWFrZUZuKHRydWUpOworICAgIGZvciAoaSA9IDA7IGkg
PCAxMDAwMDA7IGkrKykgeworICAgICAgICBpZiAoZm9vKHRydWUpKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGkpOworICAgICAgICBpZiAoYmFyKHRydWUpKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGkpOworICAgIH0KK30KK3Rlc3QoKTsKKwordGVzdCA9IGZ1bmN0aW9uKCkg
eworICAgIGxldCBiYXIgPSBtYWtlRm4odHJ1ZSk7CisgICAgbGV0IHZpZXcgPSBuZXcgSW50OEFy
cmF5KDEwKTsKKyAgICBsZXQgb2JqID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMCkp
OworICAgIGZvciAoaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICBpZiAoaSAlIDIg
PT09IDApIHsKKyAgICAgICAgICAgIGlmICghZm9vKHZpZXcpKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmb28o
b2JqKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgICAgIH0KKyAg
ICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281888</attachid>
            <date>2016-06-22 17:10:23 -0700</date>
            <delta_ts>2016-06-22 18:10:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159048-20160622171014.patch</filename>
            <type>text/plain</type>
            <size>22445</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTM3MzhkMWI0NmZmOThmM2Y3NzFhMTBjMGI2ZTA0NmNhOTMwNThlLi5kMTY0ZWNjNTMyZDliZmRh
NjY3ODhiOTkwYWJkZDEwNzRhMjBjNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0yMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXZSBzaG91bGQgaGF2ZSBhIERGRyBpbnRyaW5zaWMgdGhhdCBjaGVj
a3MgaWYgYSB2YWx1ZSBpcyBhIFR5cGVkQXJyYXlWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgREZHIEludHJp
bnNpYyB0aGF0IGNoZWNrcyBpZiBhIHZhbHVlIGlzIGEgVHlwZWRBcnJheVZpZXcuCisgICAgICAg
IFRoZSBpbnRyaW5zaWMsIElzVHlwZWRBcnJheVZpZXcsIHdvcmtzIGluIHRoZSBzYW1lIHdheSB0
aGF0IHRoZSBvdGhlciBJczxpbnNlcnQtdHlwZT4KKyAgICAgICAgREZHIG5vZGVzIHdvcmsuIEFk
ZGl0aW9uYWxseSwgYSBuZXcgYnVpbHRpbiBmdW5jdGlvbiBpc1R5cGVkQXJyYXlWaWV3IGhhcyBi
ZWVuIGFkZGVkLgorICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBuZWVkZWQgdG8gZml4IHJlZ3Jl
c3Npb25zIGluICVUeXBlZEFycmF5JS5wcm90b3R5cGUuc3ViYXJyYXkuCisKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzVHlw
ZWRBcnJheVZpZXcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzVHlwZWRBcnJheVZpZXcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0eXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2lz
dHlwZWRhcnJheXZpZXctaW50cmluc2ljLmpzOiBBZGRlZC4KKyAgICAgICAgKG1ha2VGbik6Cisg
ICAgICAgICh0eXBlZEFycmF5cy5mb3JFYWNoKToKKyAgICAgICAgKGxldC50ZXN0KToKKyAgICAg
ICAgKHRlc3QpOgorCiAyMDE2LTA2LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDBiYmExMDYxNTYzMmJhMGQ3ZGIxZTk3NzU0ZGMz
Nzg2MWFmNjZhM2UuLmYwODUwMDgwYzBhMzY3YzEwOWZkYzNjNWJmYmI5MzVhNDk2YWRiNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTEy
MSw2ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyh0aGlzTnVtYmVyVmFsdWUp
IFwKICAgICBtYWNybyhuZXdUYXJnZXRMb2NhbCkgXAogICAgIG1hY3JvKGRlcml2ZWRDb25zdHJ1
Y3RvcikgXAorICAgIG1hY3JvKGlzVHlwZWRBcnJheVZpZXcpIFwKICAgICBtYWNybyhpc0JvdW5k
RnVuY3Rpb24pIFwKICAgICBtYWNybyhoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pIFwKICAgICBt
YWNybyhpbnN0YW5jZU9mKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2RjY2FjMzlmMmQ1ZmJj
ZWFlNWU4Y2Y5MWI0YTkxOTk2OTUwNGE2NS4uYWQ4MjdkNWFhZGQ4NWEwZmYxZDkxYzdiOTlkODIz
ZTZjZGMzN2ZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTAzNSw3ICsxMDM1LDggQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmpl
Y3RPck51bGw6CiAgICAgY2FzZSBJc0Z1bmN0aW9uOgotICAgIGNhc2UgSXNSZWdFeHBPYmplY3Q6
IHsKKyAgICBjYXNlIElzUmVnRXhwT2JqZWN0OgorICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlldzog
ewogICAgICAgICBBYnN0cmFjdFZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIGlmIChjaGlsZC52YWx1ZSgpKSB7CiAgICAgICAgICAgICBib29sIGNvbnN0YW50
V2FzU2V0ID0gdHJ1ZTsKQEAgLTEwOTcsNiArMTA5OCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgICAgICBjYXNlIElzRW1wdHk6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNFbXB0eSgpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CisgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNPYmpl
Y3QoKSAmJiBpc1R5cGVkVmlldyhjaGlsZC52YWx1ZSgpLmdldE9iamVjdCgpLT5jbGFzc0luZm8o
KS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI2OCw2ICsxMjcyLDE5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5
cGUgJiB+U3BlY1R5cGVkQXJyYXlWaWV3KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQg
PSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCEoY2hpbGQubV90eXBlICYgU3BlY1R5cGVkQXJyYXlWaWV3KSkgeworICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAg
ICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMDc2N2UyZGMwZjhjOWJiNmFkYTE2ZGI3YThmYjE3
YmM4ZjNhODg0Li5mNjk3YTZlMDFjZGY2OGJiMTFiYjAxNzAyMTYxNzEzMzQ5N2NiNDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MjMxNCw2ICsyMzE0LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYzogewor
ICAgICAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMik7CisKKyAgICAg
ICAgaW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3Bl
cmFuZCksIGFkZFRvR3JhcGgoSXNUeXBlZEFycmF5VmlldywgT3BJbmZvKHByZWRpY3Rpb24pLCBn
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVJlcGxh
Y2VJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9
IDMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCmluZGV4IDlhNDhkNTg4NzJmNjZmNzg1YjE3YWZjZTU3NGFhYWIyN2Zh
M2FhNTIuLjk3YTQwNGI1NzNmZjI5MWVmNGQwMjY1NjJhY2MyNTgzZDljZjFhM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNzIsNiArMTcyLDcgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIElzU3RyaW5nOgogICAgIGNhc2UgSXNP
YmplY3Q6CiAgICAgY2FzZSBJc1JlZ0V4cE9iamVjdDoKKyAgICBjYXNlIElzVHlwZWRBcnJheVZp
ZXc6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICBj
YXNlIERvdWJsZVJlcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRl
eCBjYTkyYjU4M2NkYzljZTExYjgwYTQ3MGVmNjVkMzhkZWQ2NTg5OGI4Li44ZDhmOWUyNGU5OGNm
OWVkZTdiZmQ4NzlhNjYxMzEzZDRiZDQxNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCkBAIC0xNjUsNiArMTY1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CiAgICAgY2FzZSBJc0Z1bmN0
aW9uOgogICAgIGNhc2UgSXNSZWdFeHBPYmplY3Q6CisgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3
OgogICAgIGNhc2UgVHlwZU9mOgogICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIFRvUHJp
bWl0aXZlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5k
ZXggYTI1ZDgyMDc4OTc1YTEyMjIyMzQ1ZWRjOGZkZjgwNmI3MjQ3MGQ3Mi4uNWNmMDA4N2YzM2Fl
YmYzZTc5NzZlM2Q2NDIzOTgzYWEyYTA0MGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTQ3LDYgKzE1NDcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAg
IGNhc2UgSXNKU0FycmF5OgorICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAg
IGNhc2UgSXNFbXB0eToKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICAgICAgY2FzZSBJ
c0Jvb2xlYW46CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZGUz
NGE0ODU4ZGI4YjkyZmNjM2E2ODJkMWIwMGQyY2Q2ZDJhZGZhYi4uNTQyYjQ3ZmVlMTQ1N2E3ODA3
ODBmNDQ5YTgwY2MwZWFiZThjZDQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMzE3LDYgKzMxNyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhJc09iamVjdE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBt
YWNybyhJc0Z1bmN0aW9uLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzUmVnRXhw
T2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKElzVHlwZWRBcnJheVZpZXcs
IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKFRv
UHJpbWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDYxNTQ3NGIwNGIxNDFjMzRlZGIxYmU2YTAzMTgyYTZmZDAwZGU1MmQu
Ljc5MmFhODUyNjU5MWIyY2M0MGI5Y2Y1NzFjNTY1Njg5N2FjYjQ1MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC03OTIsNyArNzkyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc09i
amVjdDoKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Z1bmN0
aW9uOgotICAgICAgICBjYXNlIElzUmVnRXhwT2JqZWN0OiB7CisgICAgICAgIGNhc2UgSXNSZWdF
eHBPYmplY3Q6CisgICAgICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzogewogICAgICAgICAgICAg
c2V0UHJlZGljdGlvbihTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA2
MDQ4NGIwODcyMmM4YWYzMDUzZjkyYzkwZGNkZmZiZGVjOWZkMTg3Li5mOGU2NjEzNTZlOGI5ODhm
YTAzZTc2YTQ1MTdhZjY3OTRiM2I0ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjY2LDYgKzI2Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIElzT2JqZWN0T3JOdWxsOgogICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICBjYXNlIElz
UmVnRXhwT2JqZWN0OgorICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoKICAgICBjYXNlIFR5cGVP
ZjoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IGI5MTRkMzkxMTllYTY5ZTNjM2Y3MGJiZWM3NDhmYmVhMjVhMzA1OWEuLmYwZjViM2FmOTk1
MzU4ZTE0YWU0NGEzNjRjYzU2NDYxMGNiNzZhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNDU1LDYgKzM0NTUsMzYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzUmVnRXhwT2JqZWN0KE5vZGUqIG5vZGUpCiAgICAg
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUlzVHlwZWRBcnJheVZpZXcoTm9kZSogbm9kZSkKK3sKKyAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CisjZWxzZQor
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlLCBQYXlsb2FkV29yZCk7
CisjZW5kaWYKKworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdz
KCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOwor
CisgICAgbV9qaXQubG9hZDgoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdzLnBheWxvYWRH
UFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHJlc3VsdEdQUik7CisgICAgbV9q
aXQuc3ViMzIoVHJ1c3RlZEltbTMyKEludDhBcnJheVR5cGUpLCByZXN1bHRHUFIpOworICAgIG1f
aml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6QmVsb3dPckVxdWFsLAorICAgICAgICByZXN1bHRH
UFIsCisgICAgICAgIFRydXN0ZWRJbW0zMihGbG9hdDY0QXJyYXlUeXBlIC0gSW50OEFycmF5VHlw
ZSksCisgICAgICAgIHJlc3VsdEdQUik7CisgICAgYmxlc3NCb29sZWFuKHJlc3VsdEdQUik7Cisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworICAgIGlzTm90Q2Vs
bC5saW5rKCZtX2ppdCk7CisgICAgbW92ZUZhbHNlVG8ocmVzdWx0R1BSKTsKKworICAgIGRvbmUu
bGluaygmbV9qaXQpOworICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3Io
Tm9kZSogbm9kZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggMTE0MTZjNDc0MDhiNTMxOWFiM2JlOWYyZmVjNTQwNzhmYTM2ZWFl
Ny4uZGViZDI1ODhhYjEzYWYzYjAxNmU5OTQ0YWVhYWYxMDFkMzIwYTg4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzU0LDYgKzc1NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGlsZUlzSlNBcnJheShOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlSXNSZWdFeHBPYmplY3QoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUlzVHlwZWRB
cnJheVZpZXcoTm9kZSopOwogCiAgICAgdm9pZCBlbWl0Q2FsbChOb2RlKik7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCBhMDM1ODlhOTVkNzcxZDdlYTA4YmQyMmEyMDFmMmZhNGM0MjBmYWY0Li41YjE4MmI0
ZDAyZTg4YTEzNTRlZGViZWUxMjM2NjU2OGQyMmQ2ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ3MzMsNiAr
NDczMywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzogeworICAgICAg
ICBjb21waWxlSXNUeXBlZEFycmF5Vmlldyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBUeXBlT2Y6IHsKICAgICAgICAgY29tcGlsZVR5cGVPZihub2RlKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCBjOGI0ZTk0MzFhNjM5NzBkYTRjMDAyZGUyMjM5ZjM3NDQzMDgwZjQ0
Li5iNjNiYTFhNzZhYTMxZmQwYWYzNGExZmM4NGJlMjY4NzhhOTUyOWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ2NTgs
NiArNDY1OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzogeworICAg
ICAgICBjb21waWxlSXNUeXBlZEFycmF5Vmlldyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgY2FzZSBUeXBlT2Y6IHsKICAgICAgICAgY29tcGlsZVR5cGVPZihub2RlKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKaW5kZXggZDQ2MmFmYjE5ZGYyOTk1MDU4MGRmYjQxYzNlYjc2ZGExOTk3MTFhMy4uOTNl
MWMyNjMxNzg1ZWUyYzAwMjQzZjdjY2VjYzA1NjY4MmE0MjdiMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTg3LDYgKzE4Nyw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSXNP
YmplY3RPck51bGw6CiAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgIGNhc2UgSXNSZWdFeHBPYmpl
Y3Q6CisgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgogICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0Zs
YWdzOgogICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJbnN0YW5jZU9m
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4
IDE1YmZlOTE0YTYzYjUxMjY5ZDA3Y2I0NWM4MTlhZjQ3NzgzNDExMjEuLmE2NWRhNzkxM2E1ZWZm
Y2MzN2I2NWM4OTYyMTdjMjhhNmIxMzg3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTkwMCw2ICs5MDAsOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIElzUmVnRXhwT2JqZWN0OgogICAgICAgICAgICAgY29tcGlsZUlzUmVnRXhwT2Jq
ZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3
OgorICAgICAgICAgICAgY29tcGlsZUlzVHlwZWRBcnJheVZpZXcoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFR5cGVPZjoKICAgICAgICAgICAgIGNvbXBpbGVUeXBlT2YoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjEwNyw2ICs2MTEwLDI0IEBAIHByaXZhdGU6CiAgICAg
ICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIG5vdENlbGxSZXN1bHQsIGNl
bGxSZXN1bHQpKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KCkK
KyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291
dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBwcm92
ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoY29u
dGludWF0aW9uKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBj
ZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlzVHlwZWRBcnJheVZpZXcodmFsdWUsIHByb3ZlblR5
cGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBub3RDZWxsUmVzdWx0LCBj
ZWxsUmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlVHlwZU9mKCkKICAgICB7CiAg
ICAgICAgIEVkZ2UgY2hpbGQgPSBtX25vZGUtPmNoaWxkMSgpOwpAQCAtMTAwNzYsNiArMTAwOTcs
MTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGNlbGwsIG1f
aGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMy
KEFycmF5VHlwZSkpOwogICAgIH0KKworICAgIExWYWx1ZSBpc1R5cGVkQXJyYXlWaWV3KExWYWx1
ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAg
ICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVj
VHlwZWRBcnJheVZpZXcpKQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgTFZh
bHVlIGpzVHlwZSA9IG1fb3V0LnN1YigKKyAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMy
KGNlbGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSksCisgICAgICAgICAgICBtX291dC5j
b25zdEludDMyKEludDhBcnJheVR5cGUpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJlbG93T3JF
cXVhbCgKKyAgICAgICAgICAgIGpzVHlwZSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIo
RmxvYXQ2NEFycmF5VHlwZSAtIEludDhBcnJheVR5cGUpKTsKKyAgICB9CiAgICAgCiAgICAgTFZh
bHVlIGlzT2JqZWN0KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxU
b3ApCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRl
eCBkZmQ4MzAxMzMxOThmN2NjMmMwNzllODFmN2E4YWQ0MmZjMmUxZjMwLi40YTA3OTM5OTc3Y2Rh
OTIxYmE3M2RlNzcwYjJhZWZjNDE1NzJlZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuaApAQCAtNjAsNiArNjAsNyBAQCBlbnVtIEpTX0VYUE9SVF9QUklWQVRF
IEludHJpbnNpYyB7CiAgICAgRlJvdW5kSW50cmluc2ljLAogICAgIFRydW5jSW50cmluc2ljLAog
ICAgIElzUmVnRXhwT2JqZWN0SW50cmluc2ljLAorICAgIElzVHlwZWRBcnJheVZpZXdJbnRyaW5z
aWMsCiAgICAgQm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsSW50cmluc2ljLAogCiAgICAgLy8g
R2V0dGVyIGludHJpbnNpY3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYWIwMTljYTg3YzJjMjFiYTA1NjdmZjQyZmQzNWU3YzBj
ZGFiMjY5ZS4uN2M5MzI3NDMxMDhlNjYyNDBhZThhZjhjMTY3NTQyOTBhZTE4NjAxYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
NjU1LDYgKzY1NSw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgSlNGdW5jdGlvbiog
cHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCk7CiAgICAgSlNG
dW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY1R5cGVkQXJyYXlTb3J0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOworICAgIEpTRnVuY3Rpb24qIHBy
aXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBJ
c1R5cGVkQXJyYXlWaWV3SW50cmluc2ljKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lz
Qm91bmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCks
IGlzQm91bmRGdW5jdGlvbik7CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNIYXNJbnN0YW5j
ZUJvdW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygp
LCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
SW5zdGFuY2VPZiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG9i
amVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZik7CkBAIC03MDMsNiArNzA0LDcgQEAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRl
RnVuY1R5cGVkQXJyYXlMZW5ndGgsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0
ZUZ1bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVNvcnRQcml2YXRlTmFtZSgpLCBwcml2YXRl
RnVuY1R5cGVkQXJyYXlTb3J0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5pc1R5cGVkQXJyYXlWaWV3UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlW
aWV3LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0JvdW5kRnVuY3Rp
b25Qcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0lzQm91bmRGdW5jdGlvbiwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uUHJpdmF0
ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNIYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluc3RhbmNlT2ZQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY0luc3RhbmNlT2YsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggYTU2MjU2NzM0NDk1MmZjYmM3MmMxOGU1MTgwMTAzYTlm
MmFlZDg3NS4uY2QxOWQxMDlhOTkyM2NhNmQ2N2M2OTE0NmJmMDQwYTliNzA4MDYwOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZS5jcHAKQEAgLTY0LDYgKzY0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSB3aGlsZSAoZmFsc2UpCiAK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lz
VHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbih2YWx1ZS5pc09iamVjdCgpICYmIGlzVHlwZWRWaWV3KHZhbHVlLmdldE9iamVjdCgp
LT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkpOworfQorCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuaAppbmRleCA2Nzk4MzIzMjhmZTFmZjhiOGExYWVmNDAzMmZlYzU1OGE3ZmZjNjA0Li5k
ZjA1ZWQ5MmQ4NmI2NzA3OTk0Y2E5MmMyN2Y2Yzg5NmVlNjA0OWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKIH07
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVu
Y0lzVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZh
dGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaXN0eXBlZGFycmF5dmlldy1pbnRyaW5z
aWMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2lzdHlwZWRhcnJheXZp
ZXctaW50cmluc2ljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzM2QyMmNkNDk3ZTRkNTc4ODY1NmU3YWU4NDJj
MWJmODc5NWQzNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2lzdHlwZWRhcnJheXZpZXctaW50cmluc2ljLmpzCkBAIC0wLDAgKzEsNzUgQEAK
K2xldCB0eXBlZEFycmF5cyA9IFtJbnQ4QXJyYXksIFVpbnQ4QXJyYXksIFVpbnQ4Q2xhbXBlZEFy
cmF5LCBJbnQxNkFycmF5LCBVaW50MTZBcnJheSwgSW50MzJBcnJheSwgVWludDMyQXJyYXksIEZs
b2F0MzJBcnJheSwgRmxvYXQ2NEFycmF5XTsKKworZnVuY3Rpb24gbWFrZUZuKGRvbnRJbmxpbmUp
IHsKKyAgICBsZXQgZm9vID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uIChhKSB7ICJ1c2Ugc3Ry
aWN0IjsgcmV0dXJuIEBpc1R5cGVkQXJyYXlWaWV3KGEpOyB9KWApOworICAgIGlmIChkb250SW5s
aW5lKQorICAgICAgICBub0lubGluZShmb28pCisgICAgcmV0dXJuIGZvbzsKK30KKwordHlwZWRB
cnJheXMuZm9yRWFjaChmdW5jdGlvbigpIHsKKyAgICBsZXQgdGVzdCA9IEZ1bmN0aW9uKAorICAg
ICAgICBgCisgICAgICAgIGxldCBmb28gPSBtYWtlRm4oKTsKKyAgICAgICAgbGV0IGJhciA9IG1h
a2VGbih0cnVlKTsKKyAgICAgICAgbGV0IHZpZXcgPSBuZXcgSW50OEFycmF5KDEwKTsKKworICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghZm9v
KHZpZXcpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAgICAgICAgICAg
IGlmICghYmFyKHZpZXcpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAg
ICAgICAgfQorICAgICAgICBgCisgICAgKTsKKyAgICB0ZXN0KCk7Cit9KTsKKwordHlwZWRBcnJh
eXMuZm9yRWFjaChjb25zdHJ1Y3RvcjEgPT4geworICAgIHR5cGVkQXJyYXlzLmZvckVhY2goY29u
c3RydWN0b3IyID0+IHsKKyAgICAgICAgbGV0IHRlc3QgPSBGdW5jdGlvbigKKyAgICAgICAgICAg
IGAKKyAgICAgICAgICAgIGxldCBmb28gPSBtYWtlRm4oKTsKKyAgICAgICAgICAgIGxldCBiYXIg
PSBtYWtlRm4odHJ1ZSk7CisgICAgICAgICAgICBsZXQgdmlldzEgPSBuZXcgJHtjb25zdHJ1Y3Rv
cjEubmFtZX0oMTApOworICAgICAgICAgICAgbGV0IHZpZXcyID0gbmV3ICR7Y29uc3RydWN0b3Iy
Lm5hbWV9KDEwKTsKKworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgbGV0IHZpZXcgPSBpICUgMiA9PT0gMCA/IHZpZXcxIDogdmlldzI7
CisgICAgICAgICAgICAgICAgaWYgKCFmb28odmlldykpCisgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJhcih2aWV3KSkKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYAorICAgICAgICApOworICAgICAgICB0ZXN0KCk7CisgICAgfSk7Cit9KTsKKworbGV0
IHRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgZm9vID0gbWFrZUZuKCk7CisgICAgbGV0IGJh
ciA9IG1ha2VGbih0cnVlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAg
ICAgICAgaWYgKGZvbyh0cnVlKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAg
ICAgICAgaWYgKGJhcih0cnVlKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAg
ICB9Cit9Cit0ZXN0KCk7CisKK3Rlc3QgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgYmFyID0gbWFr
ZUZuKHRydWUpOworICAgIGxldCB2aWV3ID0gbmV3IEludDhBcnJheSgxMCk7CisgICAgbGV0IG9i
aiA9IG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTApKTsKKyAgICBmb3IgKGkgPSAwOyBp
IDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgaWYgKGkgJSAyID09PSAwKSB7CisgICAgICAgICAg
ICBpZiAoIWZvbyh2aWV3KSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZm9vKG9iaikpCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgICAgICB9CisgICAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281892</attachid>
            <date>2016-06-22 18:10:48 -0700</date>
            <delta_ts>2016-06-22 18:39:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-159048-20160622181037.patch</filename>
            <type>text/plain</type>
            <size>22437</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTM3MzhkMWI0NmZmOThmM2Y3NzFhMTBjMGI2ZTA0NmNhOTMwNThlLi43MmRkZmZhNGQyZWUwYTcx
MWMzZmE2OTJkYTMwYWIwMzllN2JkNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0yMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXZSBzaG91bGQgaGF2ZSBhIERGRyBpbnRyaW5zaWMgdGhhdCBjaGVj
a3MgaWYgYSB2YWx1ZSBpcyBhIFR5cGVkQXJyYXlWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBT
YWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgREZHIEludHJpbnNp
YyB0aGF0IGNoZWNrcyBpZiBhIHZhbHVlIGlzIGEgVHlwZWRBcnJheVZpZXcuCisgICAgICAgIFRo
ZSBpbnRyaW5zaWMsIElzVHlwZWRBcnJheVZpZXcsIHdvcmtzIGluIHRoZSBzYW1lIHdheSB0aGF0
IHRoZSBvdGhlciBJczxpbnNlcnQtdHlwZT4KKyAgICAgICAgREZHIG5vZGVzIHdvcmsuIEFkZGl0
aW9uYWxseSwgYSBuZXcgYnVpbHRpbiBmdW5jdGlvbiBpc1R5cGVkQXJyYXlWaWV3IGhhcyBiZWVu
IGFkZGVkLgorICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBuZWVkZWQgdG8gZml4IHJlZ3Jlc3Np
b25zIGluICVUeXBlZEFycmF5JS5wcm90b3R5cGUuc3ViYXJyYXkuCisKKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzVHlwZWRB
cnJheVZpZXcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50
aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0eXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2lzdHlw
ZWRhcnJheXZpZXctaW50cmluc2ljLmpzOiBBZGRlZC4KKyAgICAgICAgKG1ha2VGbik6CisgICAg
ICAgICh0eXBlZEFycmF5cy5mb3JFYWNoKToKKyAgICAgICAgKGxldC50ZXN0KToKKyAgICAgICAg
KHRlc3QpOgorCiAyMDE2LTA2LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDBiYmExMDYxNTYzMmJhMGQ3ZGIxZTk3NzU0ZGMzNzg2
MWFmNjZhM2UuLmYwODUwMDgwYzBhMzY3YzEwOWZkYzNjNWJmYmI5MzVhNDk2YWRiNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTEyMSw2
ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyh0aGlzTnVtYmVyVmFsdWUpIFwK
ICAgICBtYWNybyhuZXdUYXJnZXRMb2NhbCkgXAogICAgIG1hY3JvKGRlcml2ZWRDb25zdHJ1Y3Rv
cikgXAorICAgIG1hY3JvKGlzVHlwZWRBcnJheVZpZXcpIFwKICAgICBtYWNybyhpc0JvdW5kRnVu
Y3Rpb24pIFwKICAgICBtYWNybyhoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pIFwKICAgICBtYWNy
byhpbnN0YW5jZU9mKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2RjY2FjMzlmMmQ1ZmJjZWFl
NWU4Y2Y5MWI0YTkxOTk2OTUwNGE2NS4uYWQ4MjdkNWFhZGQ4NWEwZmYxZDkxYzdiOTlkODIzZTZj
ZGMzN2ZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTAzNSw3ICsxMDM1LDggQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RP
ck51bGw6CiAgICAgY2FzZSBJc0Z1bmN0aW9uOgotICAgIGNhc2UgSXNSZWdFeHBPYmplY3Q6IHsK
KyAgICBjYXNlIElzUmVnRXhwT2JqZWN0OgorICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlldzogewog
ICAgICAgICBBYnN0cmFjdFZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIGlmIChjaGlsZC52YWx1ZSgpKSB7CiAgICAgICAgICAgICBib29sIGNvbnN0YW50V2Fz
U2V0ID0gdHJ1ZTsKQEAgLTEwOTcsNiArMTA5OCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgICAgICBjYXNlIElzRW1wdHk6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNFbXB0eSgpKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CisgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNPYmplY3Qo
KSAmJiBpc1R5cGVkVmlldyhjaGlsZC52YWx1ZSgpLmdldE9iamVjdCgpLT5jbGFzc0luZm8oKS0+
dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI2OCw2ICsxMjcyLDE5IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAg
ICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUg
JiB+U3BlY1R5cGVkQXJyYXlWaWV3KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0
cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCEoY2hpbGQubV90eXBlICYgU3BlY1R5cGVkQXJyYXlWaWV3KSkgeworICAgICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAgICAg
IGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMDc2N2UyZGMwZjhjOWJiNmFkYTE2ZGI3YThmYjE3YmM4
ZjNhODg0Li5mNjk3YTZlMDFjZGY2OGJiMTFiYjAxNzAyMTYxNzEzMzQ5N2NiNDM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjMx
NCw2ICsyMzE0LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwo
Tm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAorICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYzogeworICAg
ICAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMik7CisKKyAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIGFkZFRvR3JhcGgoSXNUeXBlZEFycmF5VmlldywgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJ
bnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDMp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCmluZGV4IDlhNDhkNTg4NzJmNjZmNzg1YjE3YWZjZTU3NGFhYWIyN2ZhM2Fh
NTIuLjk3YTQwNGI1NzNmZjI5MWVmNGQwMjY1NjJhY2MyNTgzZDljZjFhM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNzIsNiArMTcyLDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIElzU3RyaW5nOgogICAgIGNhc2UgSXNPYmpl
Y3Q6CiAgICAgY2FzZSBJc1JlZ0V4cE9iamVjdDoKKyAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICBjYXNl
IERvdWJsZVJlcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBj
YTkyYjU4M2NkYzljZTExYjgwYTQ3MGVmNjVkMzhkZWQ2NTg5OGI4Li44ZDhmOWUyNGU5OGNmOWVk
ZTdiZmQ4NzlhNjYxMzEzZDRiZDQxNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCkBAIC0xNjUsNiArMTY1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CiAgICAgY2FzZSBJc0Z1bmN0aW9u
OgogICAgIGNhc2UgSXNSZWdFeHBPYmplY3Q6CisgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3Ogog
ICAgIGNhc2UgVHlwZU9mOgogICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIFRvUHJpbWl0
aXZlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXgg
YTI1ZDgyMDc4OTc1YTEyMjIyMzQ1ZWRjOGZkZjgwNmI3MjQ3MGQ3Mi4uNWNmMDA4N2YzM2FlYmYz
ZTc5NzZlM2Q2NDIzOTgzYWEyYTA0MGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTQ3LDYgKzE1NDcsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAgIGNh
c2UgSXNKU0FycmF5OgorICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAgIGNh
c2UgSXNFbXB0eToKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICAgICAgY2FzZSBJc0Jv
b2xlYW46CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZGUzNGE0
ODU4ZGI4YjkyZmNjM2E2ODJkMWIwMGQyY2Q2ZDJhZGZhYi4uNTQyYjQ3ZmVlMTQ1N2E3ODA3ODBm
NDQ5YTgwY2MwZWFiZThjZDQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaApAQCAtMzE3LDYgKzMxNyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhJc09iamVjdE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNy
byhJc0Z1bmN0aW9uLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzUmVnRXhwT2Jq
ZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKElzVHlwZWRBcnJheVZpZXcsIE5v
ZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKFRvUHJp
bWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCmluZGV4IDYxNTQ3NGIwNGIxNDFjMzRlZGIxYmU2YTAzMTgyYTZmZDAwZGU1MmQuLjc5
MmFhODUyNjU5MWIyY2M0MGI5Y2Y1NzFjNTY1Njg5N2FjYjQ1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCkBAIC03OTIsNyArNzkyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc09iamVj
dDoKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Z1bmN0aW9u
OgotICAgICAgICBjYXNlIElzUmVnRXhwT2JqZWN0OiB7CisgICAgICAgIGNhc2UgSXNSZWdFeHBP
YmplY3Q6CisgICAgICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzogewogICAgICAgICAgICAgc2V0
UHJlZGljdGlvbihTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA2MDQ4
NGIwODcyMmM4YWYzMDUzZjkyYzkwZGNkZmZiZGVjOWZkMTg3Li5mOGU2NjEzNTZlOGI5ODhmYTAz
ZTc2YTQ1MTdhZjY3OTRiM2I0ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaApAQCAtMjY2LDYgKzI2Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIElzT2JqZWN0T3JOdWxsOgogICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICBjYXNlIElzUmVn
RXhwT2JqZWN0OgorICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoKICAgICBjYXNlIFR5cGVPZjoK
ICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IGI5MTRkMzkxMTllYTY5ZTNjM2Y3MGJiZWM3NDhmYmVhMjVhMzA1OWEuLmYwZjViM2FmOTk1MzU4
ZTE0YWU0NGEzNjRjYzU2NDYxMGNiNzZhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNDU1LDYgKzM0NTUsMzYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzUmVnRXhwT2JqZWN0KE5vZGUqIG5vZGUpCiAgICAgYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUlzVHlwZWRBcnJheVZpZXcoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CisjZWxzZQorICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlLCBQYXlsb2FkV29yZCk7Cisj
ZW5kaWYKKworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7
CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOworCisg
ICAgbV9qaXQubG9hZDgoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdzLnBheWxvYWRHUFIo
KSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQu
c3ViMzIoVHJ1c3RlZEltbTMyKEludDhBcnJheVR5cGUpLCByZXN1bHRHUFIpOworICAgIG1faml0
LmNvbXBhcmUzMihKSVRDb21waWxlcjo6QmVsb3dPckVxdWFsLAorICAgICAgICByZXN1bHRHUFIs
CisgICAgICAgIFRydXN0ZWRJbW0zMihGbG9hdDY0QXJyYXlUeXBlIC0gSW50OEFycmF5VHlwZSks
CisgICAgICAgIHJlc3VsdEdQUik7CisgICAgYmxlc3NCb29sZWFuKHJlc3VsdEdQUik7CisgICAg
SklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworICAgIGlzTm90Q2VsbC5s
aW5rKCZtX2ppdCk7CisgICAgbW92ZUZhbHNlVG8ocmVzdWx0R1BSKTsKKworICAgIGRvbmUubGlu
aygmbV9qaXQpOworICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IoTm9k
ZSogbm9kZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggMTE0MTZjNDc0MDhiNTMxOWFiM2JlOWYyZmVjNTQwNzhmYTM2ZWFlNy4u
ZGViZDI1ODhhYjEzYWYzYjAxNmU5OTQ0YWVhYWYxMDFkMzIwYTg4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzU0LDYgKzc1NCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGlsZUlzSlNBcnJheShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlSXNSZWdFeHBPYmplY3QoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUlzVHlwZWRBcnJh
eVZpZXcoTm9kZSopOwogCiAgICAgdm9pZCBlbWl0Q2FsbChOb2RlKik7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApp
bmRleCBhMDM1ODlhOTVkNzcxZDdlYTA4YmQyMmEyMDFmMmZhNGM0MjBmYWY0Li41YjE4MmI0ZDAy
ZTg4YTEzNTRlZGViZWUxMjM2NjU2OGQyMmQ2ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ3MzMsNiArNDcz
MywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzogeworICAgICAgICBj
b21waWxlSXNUeXBlZEFycmF5Vmlldyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBUeXBlT2Y6IHsKICAgICAgICAgY29tcGlsZVR5cGVPZihub2RlKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAppbmRleCBjOGI0ZTk0MzFhNjM5NzBkYTRjMDAyZGUyMjM5ZjM3NDQzMDgwZjQ0Li5i
NjNiYTFhNzZhYTMxZmQwYWYzNGExZmM4NGJlMjY4NzhhOTUyOWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ2NTgsNiAr
NDY1OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzogeworICAgICAg
ICBjb21waWxlSXNUeXBlZEFycmF5Vmlldyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBUeXBlT2Y6IHsKICAgICAgICAgY29tcGlsZVR5cGVPZihub2RlKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggZDQ2MmFmYjE5ZGYyOTk1MDU4MGRmYjQxYzNlYjc2ZGExOTk3MTFhMy4uOTNlMWMy
NjMxNzg1ZWUyYzAwMjQzZjdjY2VjYzA1NjY4MmE0MjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTg3LDYgKzE4Nyw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSXNPYmpl
Y3RPck51bGw6CiAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgIGNhc2UgSXNSZWdFeHBPYmplY3Q6
CisgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgogICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdz
OgogICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDE1
YmZlOTE0YTYzYjUxMjY5ZDA3Y2I0NWM4MTlhZjQ3NzgzNDExMjEuLmE2NWRhNzkxM2E1ZWZmY2Mz
N2I2NWM4OTYyMTdjMjhhNmIxMzg3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTkwMCw2ICs5MDAsOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIElzUmVnRXhwT2JqZWN0OgogICAgICAgICAgICAgY29tcGlsZUlzUmVnRXhwT2JqZWN0
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3Ogor
ICAgICAgICAgICAgY29tcGlsZUlzVHlwZWRBcnJheVZpZXcoKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFR5cGVPZjoKICAgICAgICAgICAgIGNvbXBpbGVUeXBlT2YoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNjEwNyw2ICs2MTEwLDI0IEBAIHByaXZhdGU6CiAgICAgICAg
IHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIG5vdENlbGxSZXN1bHQsIGNlbGxS
ZXN1bHQpKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KCkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7
CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5i
b29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBwcm92ZW5U
eXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoY29udGlu
dWF0aW9uKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxs
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlzVHlwZWRBcnJheVZpZXcodmFsdWUsIHByb3ZlblR5cGUo
bV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBub3RDZWxsUmVzdWx0LCBjZWxs
UmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlVHlwZU9mKCkKICAgICB7CiAgICAg
ICAgIEVkZ2UgY2hpbGQgPSBtX25vZGUtPmNoaWxkMSgpOwpAQCAtMTAwNzYsNiArMTAwOTcsMTgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGNlbGwsIG1faGVh
cHMuSlNDZWxsX3R5cGVJbmZvVHlwZSksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKEFy
cmF5VHlwZSkpOwogICAgIH0KKworICAgIExWYWx1ZSBpc1R5cGVkQXJyYXlWaWV3KExWYWx1ZSBj
ZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBp
ZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVjVHlw
ZWRBcnJheVZpZXcpKQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgTFZhbHVl
IGpzVHlwZSA9IG1fb3V0LnN1YigKKyAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGNl
bGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSksCisgICAgICAgICAgICBtX291dC5jb25z
dEludDMyKEludDhBcnJheVR5cGUpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJlbG93T3JFcXVh
bCgKKyAgICAgICAgICAgIGpzVHlwZSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoRmxv
YXQ2NEFycmF5VHlwZSAtIEludDhBcnJheVR5cGUpKTsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVl
IGlzT2JqZWN0KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3Ap
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCBk
ZmQ4MzAxMzMxOThmN2NjMmMwNzllODFmN2E4YWQ0MmZjMmUxZjMwLi40YTA3OTM5OTc3Y2RhOTIx
YmE3M2RlNzcwYjJhZWZjNDE1NzJlZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuaApAQCAtNjAsNiArNjAsNyBAQCBlbnVtIEpTX0VYUE9SVF9QUklWQVRFIElu
dHJpbnNpYyB7CiAgICAgRlJvdW5kSW50cmluc2ljLAogICAgIFRydW5jSW50cmluc2ljLAogICAg
IElzUmVnRXhwT2JqZWN0SW50cmluc2ljLAorICAgIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMs
CiAgICAgQm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsSW50cmluc2ljLAogCiAgICAgLy8gR2V0
dGVyIGludHJpbnNpY3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggYWIwMTljYTg3YzJjMjFiYTA1NjdmZjQyZmQzNWU3YzBjZGFi
MjY5ZS4uN2M5MzI3NDMxMDhlNjYyNDBhZThhZjhjMTY3NTQyOTBhZTE4NjAxYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjU1
LDYgKzY1NSw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgSlNGdW5jdGlvbiogcHJp
dmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAw
LCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCk7CiAgICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVu
Y1R5cGVkQXJyYXlTb3J0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOworICAgIEpTRnVuY3Rpb24qIHByaXZh
dGVGdW5jSXNUeXBlZEFycmF5VmlldyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwg
U3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBJc1R5
cGVkQXJyYXlWaWV3SW50cmluc2ljKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzQm91
bmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGlz
Qm91bmRGdW5jdGlvbik7CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNIYXNJbnN0YW5jZUJv
dW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBo
YXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW5z
dGFuY2VPZiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG9iamVj
dFByaXZhdGVGdW5jSW5zdGFuY2VPZik7CkBAIC03MDMsNiArNzA0LDcgQEAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y1R5cGVkQXJyYXlMZW5ndGgsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1
bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVNvcnRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y1R5cGVkQXJyYXlTb3J0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5p
c1R5cGVkQXJyYXlWaWV3UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0JvdW5kRnVuY3Rpb25Q
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0lzQm91bmRGdW5jdGlvbiwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNIYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluc3RhbmNlT2ZQcml2YXRlTmFtZSgpLCBwcml2YXRl
RnVuY0luc3RhbmNlT2YsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHAKaW5kZXggYTU2MjU2NzM0NDk1MmZjYmM3MmMxOGU1MTgwMTAzYTlmMmFl
ZDg3NS4uNGI1MGUxOGE2YjcxYmY5NGIyNzYzMDVmNTQ4YmVhMTZmYzE5MTQ5YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHAKQEAgLTY0LDYgKzY0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSB3aGlsZSAoZmFsc2UpCiAKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lzVHlw
ZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih2YWx1ZS5pc0NlbGwoKSAmJiBpc1R5cGVkVmlldyh2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJ
bmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNBcnJheUJ1ZmZlclZpZXcqPihleGVjLT5hcmd1bWVudCgwKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgK
aW5kZXggNjc5ODMyMzI4ZmUxZmY4YjhhMWFlZjQwMzJmZWM1NThhN2ZmYzYwNC4uZGYwNWVkOTJk
ODZiNjcwNzk5NGNhOTJjMjdmNmM4OTZlZTYwNDlmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaApAQCAt
NDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiB9OwogCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVk
QXJyYXlWaWV3KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aChFeGVjU3RhdGUqKTsK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dl
dE9yaWdpbmFsQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2lzdHlwZWRhcnJheXZpZXctaW50cmluc2ljLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pc3R5cGVkYXJyYXl2aWV3LWludHJp
bnNpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MzNkMjJjZDQ5N2U0ZDU3ODg2NTZlN2FlODQyYzFiZjg3OTVk
MzRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9pc3R5cGVkYXJyYXl2aWV3LWludHJpbnNpYy5qcwpAQCAtMCwwICsxLDc1IEBACitsZXQgdHlw
ZWRBcnJheXMgPSBbSW50OEFycmF5LCBVaW50OEFycmF5LCBVaW50OENsYW1wZWRBcnJheSwgSW50
MTZBcnJheSwgVWludDE2QXJyYXksIEludDMyQXJyYXksIFVpbnQzMkFycmF5LCBGbG9hdDMyQXJy
YXksIEZsb2F0NjRBcnJheV07CisKK2Z1bmN0aW9uIG1ha2VGbihkb250SW5saW5lKSB7CisgICAg
bGV0IGZvbyA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbiAoYSkgeyAidXNlIHN0cmljdCI7IHJl
dHVybiBAaXNUeXBlZEFycmF5VmlldyhhKTsgfSlgKTsKKyAgICBpZiAoZG9udElubGluZSkKKyAg
ICAgICAgbm9JbmxpbmUoZm9vKQorICAgIHJldHVybiBmb287Cit9CisKK3R5cGVkQXJyYXlzLmZv
ckVhY2goZnVuY3Rpb24oKSB7CisgICAgbGV0IHRlc3QgPSBGdW5jdGlvbigKKyAgICAgICAgYAor
ICAgICAgICBsZXQgZm9vID0gbWFrZUZuKCk7CisgICAgICAgIGxldCBiYXIgPSBtYWtlRm4odHJ1
ZSk7CisgICAgICAgIGxldCB2aWV3ID0gbmV3IEludDhBcnJheSgxMCk7CisKKyAgICAgICAgZm9y
IChpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIWZvbyh2aWV3KSkK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgICAgICAgICBpZiAoIWJh
cih2aWV3KSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgICAgIH0K
KyAgICAgICAgYAorICAgICk7CisgICAgdGVzdCgpOworfSk7CisKK3R5cGVkQXJyYXlzLmZvckVh
Y2goY29uc3RydWN0b3IxID0+IHsKKyAgICB0eXBlZEFycmF5cy5mb3JFYWNoKGNvbnN0cnVjdG9y
MiA9PiB7CisgICAgICAgIGxldCB0ZXN0ID0gRnVuY3Rpb24oCisgICAgICAgICAgICBgCisgICAg
ICAgICAgICBsZXQgZm9vID0gbWFrZUZuKCk7CisgICAgICAgICAgICBsZXQgYmFyID0gbWFrZUZu
KHRydWUpOworICAgICAgICAgICAgbGV0IHZpZXcxID0gbmV3ICR7Y29uc3RydWN0b3IxLm5hbWV9
KDEwKTsKKyAgICAgICAgICAgIGxldCB2aWV3MiA9IG5ldyAke2NvbnN0cnVjdG9yMi5uYW1lfSgx
MCk7CisKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAg
ICAgICAgICAgIGxldCB2aWV3ID0gaSAlIDIgPT09IDAgPyB2aWV3MSA6IHZpZXcyOworICAgICAg
ICAgICAgICAgIGlmICghZm9vKHZpZXcpKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoaSk7CisgICAgICAgICAgICAgICAgaWYgKCFiYXIodmlldykpCisgICAgICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGAK
KyAgICAgICAgKTsKKyAgICAgICAgdGVzdCgpOworICAgIH0pOworfSk7CisKK2xldCB0ZXN0ID0g
ZnVuY3Rpb24oKSB7CisgICAgbGV0IGZvbyA9IG1ha2VGbigpOworICAgIGxldCBiYXIgPSBtYWtl
Rm4odHJ1ZSk7CisgICAgZm9yIChpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAgIGlm
IChmb28odHJ1ZSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgICAgIGlm
IChiYXIodHJ1ZSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgfQorfQor
dGVzdCgpOworCit0ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IGJhciA9IG1ha2VGbih0cnVl
KTsKKyAgICBsZXQgdmlldyA9IG5ldyBJbnQ4QXJyYXkoMTApOworICAgIGxldCBvYmogPSBuZXcg
RGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEwKSk7CisgICAgZm9yIChpID0gMDsgaSA8IDEwMDAw
MDsgaSsrKSB7CisgICAgICAgIGlmIChpICUgMiA9PT0gMCkgeworICAgICAgICAgICAgaWYgKCFm
b28odmlldykpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKGZvbyhvYmopKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihpKTsKKyAgICAgICAgfQorICAgIH0KK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>