<?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>95242</bug_id>
          
          <creation_ts>2012-08-28 14:08:42 -0700</creation_ts>
          <short_desc>objc_msgSend and IMP should be cast appropriately before using</short_desc>
          <delta_ts>2012-08-31 13:48:23 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pratik Solanki">psolanki</reporter>
          <assigned_to name="Pratik Solanki">psolanki</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jberlin</cc>
    
    <cc>psolanki</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706712</commentid>
    <comment_count>0</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-28 14:08:42 -0700</bug_when>
    <thetext>Future compilers/runtimes will warn if we try to use objc_msgSend without the correct casts. We should add casts in WebKit/WebCore when we call objc_msgSend or IMP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706714</commentid>
    <comment_count>1</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-28 14:09:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/10906849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706730</commentid>
    <comment_count>2</comment_count>
      <attachid>161060</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-28 14:25:46 -0700</bug_when>
    <thetext>Created attachment 161060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706759</commentid>
    <comment_count>3</comment_count>
      <attachid>161060</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 14:54:42 -0700</bug_when>
    <thetext>Comment on attachment 161060
Patch

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

&gt; Source/WebKit/mac/WebView/WebDelegateImplementationCaching.mm:87
&gt; -        return objc_msgSend(delegate, selector, self);
&gt; +        return reinterpret_cast&lt;id (*)(id, SEL, id)&gt;(objc_msgSend)(delegate, selector, self);

What about making a bunch of webkit_objc_msgSend like this?:
template&lt;typename Arg1Type, typename Arg2Type&gt;
id webkit_objc_msgSend(id target, SEL selector, Arg1Type arg1, Arg2Type arg2)
{
    return reinterpret_cast&lt;id (*)(id, SEL, Arg1Type, Arg2Type)&gt;(objc_msgSend)(target, selector, arg1, arg2);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706826</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 16:03:13 -0700</bug_when>
    <thetext>Maybe we should also modify the style checker to prevent bare use of objc_msgSend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707101</commentid>
    <comment_count>5</comment_count>
      <attachid>161060</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 22:33:08 -0700</bug_when>
    <thetext>Comment on attachment 161060
Patch

Clearing the review flag, Pratik has an update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707610</commentid>
    <comment_count>6</comment_count>
      <attachid>161264</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-29 10:29:18 -0700</bug_when>
    <thetext>Created attachment 161264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707614</commentid>
    <comment_count>7</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-29 10:30:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 161060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161060&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebDelegateImplementationCaching.mm:87
&gt; &gt; -        return objc_msgSend(delegate, selector, self);
&gt; &gt; +        return reinterpret_cast&lt;id (*)(id, SEL, id)&gt;(objc_msgSend)(delegate, selector, self);
&gt; 
&gt; What about making a bunch of webkit_objc_msgSend like this?:
&gt; template&lt;typename Arg1Type, typename Arg2Type&gt;
&gt; id webkit_objc_msgSend(id target, SEL selector, Arg1Type arg1, Arg2Type arg2)
&gt; {
&gt;     return reinterpret_cast&lt;id (*)(id, SEL, Arg1Type, Arg2Type)&gt;(objc_msgSend)(target, selector, arg1, arg2);
&gt; }

This was a great idea. New patch uploaded with this template code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707764</commentid>
    <comment_count>8</comment_count>
      <attachid>161264</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2012-08-29 12:49:42 -0700</bug_when>
    <thetext>Comment on attachment 161264
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707833</commentid>
    <comment_count>9</comment_count>
      <attachid>161264</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-29 13:56:42 -0700</bug_when>
    <thetext>Comment on attachment 161264
Patch

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

&gt; Source/WebKit/mac/WebView/WebDelegateImplementationCaching.mm:86
&gt;  
&gt; +template&lt;typename Arg1Type&gt;
&gt; +id webkit_objc_msgSend(id target, SEL selector, Arg1Type arg1)
&gt; +{
&gt; +    return reinterpret_cast&lt;id (*)(id, SEL, Arg1Type)&gt;(objc_msgSend)(target, selector, arg1);
&gt; +}

I would put the templates in a new header in WTF. Then I would ban the use of objc_msgSend through the style checker.

I am afraid new code with objc_msgSend might come without the reviewer knowing about this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707862</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-29 14:20:25 -0700</bug_when>
    <thetext>This template is limited in what it can do - specifically, it assumes that the functions returns an id.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708198</commentid>
    <comment_count>11</comment_count>
      <attachid>161264</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 18:56:59 -0700</bug_when>
    <thetext>Comment on attachment 161264
Patch

Attachment 161264 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13686455

New failing tests:
CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708803</commentid>
    <comment_count>12</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-30 10:33:30 -0700</bug_when>
    <thetext>How did this fail? Searching for CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread on the log linked to above, I see

[----------] 1 test from CCLayerTreeHostTestAtomicCommitWithPartialUpdate
[ RUN      ] CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread
[       OK ] CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread (120 ms)
[----------] 1 test from CCLayerTreeHostTestAtomicCommitWithPartialUpdate (120 ms total)

What failed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708815</commentid>
    <comment_count>13</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-30 10:41:06 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; How did this fail? Searching for CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread on the log linked to above, I see
&gt; 
&gt; [----------] 1 test from CCLayerTreeHostTestAtomicCommitWithPartialUpdate
&gt; [ RUN      ] CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread
&gt; [       OK ] CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread (120 ms)
&gt; [----------] 1 test from CCLayerTreeHostTestAtomicCommitWithPartialUpdate (120 ms total)
&gt; 
&gt; What failed?

It is likely a sick bot. You patch does not touch anything on Linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708870</commentid>
    <comment_count>14</comment_count>
      <attachid>161524</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-30 11:33:34 -0700</bug_when>
    <thetext>Created attachment 161524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708893</commentid>
    <comment_count>15</comment_count>
      <attachid>161524</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-30 12:14:50 -0700</bug_when>
    <thetext>Comment on attachment 161524
Patch

Very nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709039</commentid>
    <comment_count>16</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-30 14:40:49 -0700</bug_when>
    <thetext>Committed r127193: &lt;http://trac.webkit.org/changeset/127193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709754</commentid>
    <comment_count>17</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 10:18:39 -0700</bug_when>
    <thetext>Looks like llvm-gcc doesn&apos;t like my patch. From &lt;http://webkit-commit-queue.appspot.com/results/13724238&gt;

In file included from /Volumes/Data/WebKit/Source/WebCore/page/mac/EventHandlerMac.mm:53:
/Volumes/Data/WebKit/WebKitBuild/Release/usr/local/include/wtf/ObjcRuntimeExtras.h:29: error: default template arguments may not be used in function templates
/Volumes/Data/WebKit/WebKitBuild/Release/usr/local/include/wtf/ObjcRuntimeExtras.h:35: error: no default argument for &apos;Arg1Type&apos;
/Volumes/Data/WebKit/WebKitBuild/Release/usr/local/include/wtf/ObjcRuntimeExtras.h:35: error: default template arguments may not be used in function templates
....
and more such errors like this. I&apos;m looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709806</commentid>
    <comment_count>18</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 10:56:27 -0700</bug_when>
    <thetext>Ok. I can reproduce the build failure by switching to llvm-gcc-4.2 on Mountain Lion (and removing a few -W arguments to the compiler). The template format is

template&lt;typename RetType = id, typename Arg1Type&gt;
RetType wtfObjcMsgSend(id target, SEL selector, Arg1Type arg1)
{
    return reinterpret_cast&lt;RetType (*)(id, SEL, Arg1Type)&gt;(objc_msgSend)(target, selector, arg1);
}

If I remove the &quot; = id&quot; part, it&apos;s happy. I could do that. And then have each call site explicitly specify the return type. Alternatively, what are the chances we can get the EWS bot updated with a more recent toolchain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709850</commentid>
    <comment_count>19</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-31 11:50:52 -0700</bug_when>
    <thetext>&gt; If I remove the &quot; = id&quot; part, it&apos;s happy. I could do that. And then have each call site explicitly specify the return type. Alternatively, what are the chances we can get the EWS bot updated with a more recent toolchain?

I am afraid we have to support the old compilers.
If the EWS have an old SDK, chances are many people do too.

I think the best is add an explanation in a FIXME and remove the default arg :( :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709868</commentid>
    <comment_count>20</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-08-31 12:04:43 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; If I remove the &quot; = id&quot; part, it&apos;s happy. I could do that. And then have each call site explicitly specify the return type. Alternatively, what are the chances we can get the EWS bot updated with a more recent toolchain?
&gt; 
&gt; I am afraid we have to support the old compilers.
&gt; If the EWS have an old SDK, chances are many people do too.
&gt; 
&gt; I think the best is add an explanation in a FIXME and remove the default arg :( :(

I agree with Benjamin. Please either do that soon or roll out http://trac.webkit.org/changeset/127193 (it is causing the mac-ews queue to get clogged).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709870</commentid>
    <comment_count>21</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 12:06:32 -0700</bug_when>
    <thetext>Working on this now. I should have a patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709894</commentid>
    <comment_count>22</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 12:37:03 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709895</commentid>
    <comment_count>23</comment_count>
      <attachid>161752</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 12:37:06 -0700</bug_when>
    <thetext>Created attachment 161752
Fix for llvm-gcc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709902</commentid>
    <comment_count>24</comment_count>
      <attachid>161752</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-31 12:41:18 -0700</bug_when>
    <thetext>Comment on attachment 161752
Fix for llvm-gcc

Looks good.

I think we should land this so we can take the EWS back online for everyone. Then we fix the EWS and we can eventually revert the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709918</commentid>
    <comment_count>25</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 13:11:40 -0700</bug_when>
    <thetext>Committed r127306: &lt;http://trac.webkit.org/changeset/127306&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709940</commentid>
    <comment_count>26</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 13:41:55 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709941</commentid>
    <comment_count>27</comment_count>
      <attachid>161762</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 13:41:57 -0700</bug_when>
    <thetext>Created attachment 161762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709943</commentid>
    <comment_count>28</comment_count>
      <attachid>161762</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-31 13:45:24 -0700</bug_when>
    <thetext>Comment on attachment 161762
Patch

Damn GCC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709945</commentid>
    <comment_count>29</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2012-08-31 13:48:23 -0700</bug_when>
    <thetext>Committed r127313: &lt;http://trac.webkit.org/changeset/127313&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161060</attachid>
            <date>2012-08-28 14:25:46 -0700</date>
            <delta_ts>2012-08-29 10:29:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95242-20120828142537.patch</filename>
            <type>text/plain</type>
            <size>24480</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgwODVlZWZhZDM3ZTdhM2Q5MTQxMTAz
NmQ2M2QzOWI3NDNhZTkxNWYuLmI0NDljODNhYjE5MjUyMmRjYTIxM2M2NjQ5ZTdhYjRjMzc3YmE4
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMjggIFByYXRpayBTb2xhbmtpICA8cHNv
bGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBi
ZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSByZWludGVycHJldF9jYXN0IHRvIGNhc3QgdG8g
YXBwcm9wcmlhdGUgZnVuY3Rpb24gcG9pbnRlciB0eXBlIHdoZW4gY2FsbGluZyBvYmpjX21zZ1Nl
bmQuCisKKyAgICAgICAgKiB3dGYvRnVuY3Rpb25hbC5oOgorICAgICAgICAoV1RGOjpSKToKKwog
MjAxMi0wOC0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVG91Y2ggUGxhdGZvcm0uaCB0byBzb2x2ZSBhIGJ1aWxkIGRlcGVuZGVuY3kgaXNzdWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NThlMzljMmQ5OTE2NTljYzY0YzE0NTA4MjQ2YmZmMWFhNjZhYzdkLi4z
Mzg3NTEwOGQwN2MyMjExNTY3ZDNiOThlM2Q1NDlhMGRlMmVhNjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTItMDgtMjggIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUu
Y29tPgorCisgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJv
cHJpYXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSByZWludGVycHJldF9jYXN0IHRvIGNhc3QgdG8gYXBwcm9wcmlhdGUg
ZnVuY3Rpb24gcG9pbnRlciB0eXBlIHdoZW4gY2FsbGluZyBvYmpjX21zZ1NlbmQuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgorCisgICAgICAg
ICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXROU1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbToKKyAgICAgICAg
KGRlYWxsb2NDYWxsYmFjayk6CisKIDIwMTItMDgtMjUgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSb2xsIG91dCByMTI2MDU2IGFuZCByMTI2NjI2CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggYzEwODAyZjEzMTUxMWRmNzdkZjk2MGEwMTk5YjFiYjYyMDc5Y2EyZC4uNWE2
Y2Y1YzA3NTk5YzJiNjQ0MDk4MWMwOGRhMGE1MTE5MzA5NGRlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDEyLTA4LTI4ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFw
cGxlLmNvbT4KKworICAgICAgICBvYmpjX21zZ1NlbmQgYW5kIElNUCBzaG91bGQgYmUgY2FzdCBh
cHByb3ByaWF0ZWx5IGJlZm9yZSB1c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgcmVpbnRlcnByZXRfY2FzdCB0byBjYXN0IHRvIGFwcHJvcHJp
YXRlIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSB3aGVuIGNhbGxpbmcgb2JqY19tc2dTZW5kLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAg
ICAgICAgKFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhOjpjbGVhcik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6Z2V0UHJvdmlkZXIpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW06CisgICAgICAgIChDYWxsRGVsZWdh
dGUpOgorICAgICAgICAoQ2FsbEZvcm1EZWxlZ2F0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKCtbV2ViSFRNTFZpZXdQcml2YXRlIGluaXRpYWxpemVdKToK
KwogMjAxMi0wOC0yNCAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRG9uJ3QgY3JlYXRlIGEgbmV3IFJlc291cmNlUmVxdWVzdCBpZiBkZWxlZ2F0ZSByZXR1
cm5zIHRoZSBzYW1lIE5TVVJMUmVxdWVzdCB3ZSBwYXNzZWQgaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNjNk
Mjg3ZjMzMDRlMmFjOWVlNDE3OWEzNTkzOTljNDYwNWY2YmEwLi4yNjRjNGZhM2NmZmE5MTRhYTMw
M2VmOWViZDk2NGUyYzE0OTc0Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTIt
MDgtMjggIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIG9i
amNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVz
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBy
ZWludGVycHJldF9jYXN0IHRvIGNhc3QgdG8gYXBwcm9wcmlhdGUgZnVuY3Rpb24gcG9pbnRlciB0
eXBlIHdoZW4gY2FsbGluZyBvYmpjX21zZ1NlbmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L21hYy9QREZWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlZpZXdDb250cm9sbGVyOjpwZGZLaXRCdW5kbGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uYWwuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uYWwuaAppbmRleCA0OGQ5ZjMyMWViODZkZWE0NzM2NjRmYTBlZGY4NDFhMjZkYzA4ZmM5Li5j
MmI5ZTViNjE4NGJkYmVkNzc2OGY5OTY4ODg1NzA4ZDRkYWI4NDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5o
CkBAIC02MzQsOCArNjM0LDggQEAgcHVibGljOgogICAgICAgICAvLwogICAgICAgICAvLyAgIGRp
c3BhdGNoX2FzeW5jKHF1ZXVlLCBiaW5kKC4uLikpOwogICAgICAgICAvLwotICAgICAgICBpZCBj
b3BpZWRCbG9jayA9IG9iamNfbXNnU2VuZCgoaWQpYmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImNv
cHkiKSk7Ci0gICAgICAgIGlkIGF1dG9yZWxlYXNlZEJsb2NrID0gb2JqY19tc2dTZW5kKGNvcGll
ZEJsb2NrLCBzZWxfcmVnaXN0ZXJOYW1lKCJhdXRvcmVsZWFzZSIpKTsKKyAgICAgICAgaWQgY29w
aWVkQmxvY2sgPSByZWludGVycHJldF9jYXN0PGlkICgqKShpZCwgU0VMKT4ob2JqY19tc2dTZW5k
KSgoaWQpYmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImNvcHkiKSk7CisgICAgICAgIGlkIGF1dG9y
ZWxlYXNlZEJsb2NrID0gcmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCk+KG9iamNfbXNn
U2VuZCkoY29waWVkQmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImF1dG9yZWxlYXNlIikpOwogICAg
ICAgICByZXR1cm4gKEJsb2NrVHlwZSlhdXRvcmVsZWFzZWRCbG9jazsKICAgICB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA3NjI0NWRh
YjZlODk1OWIyNTFhODg2YTc1Y2Y0ZTU3OWFkMzNiNTRlLi5lYTg1ODBkNDY1MjdjOTMwMTI5ZTdh
MzQ3MjZjMzY4MzAwMjcyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCkBAIC0zODMsNyArMzgzLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJm
cmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBJTVAgb3JpZ2luYWxOU1Njcm9sbFZpZXdTY3Jv
bGxXaGVlbDsKK3R5cGVkZWYgdm9pZCAoKlNjcm9sbFdoZWVsSU1QKShpZCwgU0VMLCBOU0V2ZW50
ICopOworc3RhdGljIFNjcm9sbFdoZWVsSU1QIG9yaWdpbmFsTlNTY3JvbGxWaWV3U2Nyb2xsV2hl
ZWw7CiBzdGF0aWMgYm9vbCBfbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxm
Owogc3RhdGljIHZvaWQgc2VsZlJldGFpbmluZ05TU2Nyb2xsVmlld1Njcm9sbFdoZWVsKE5TU2Ny
b2xsVmlldyAqLCBTRUwsIE5TRXZlbnQgKik7CiAKQEAgLTQwMCw3ICs0MDEsNyBAQCBzdGF0aWMg
dm9pZCBzZXROU1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYoYm9vbCBzaG91
bGRSZXRhaW4pCiAKICAgICBpZiAoIW9yaWdpbmFsTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwpIHsK
ICAgICAgICAgTWV0aG9kIG1ldGhvZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKG9iamNfZ2V0
UmVxdWlyZWRDbGFzcygiTlNTY3JvbGxWaWV3IiksIEBzZWxlY3RvcihzY3JvbGxXaGVlbDopKTsK
LSAgICAgICAgb3JpZ2luYWxOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbCA9IG1ldGhvZF9zZXRJbXBs
ZW1lbnRhdGlvbihtZXRob2QsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzZWxmUmV0YWluaW5nTlNT
Y3JvbGxWaWV3U2Nyb2xsV2hlZWwpKTsKKyAgICAgICAgb3JpZ2luYWxOU1Njcm9sbFZpZXdTY3Jv
bGxXaGVlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2Nyb2xsV2hlZWxJTVA+KG1ldGhvZF9zZXRJbXBs
ZW1lbnRhdGlvbihtZXRob2QsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzZWxmUmV0YWluaW5nTlNT
Y3JvbGxWaWV3U2Nyb2xsV2hlZWwpKSk7CiAgICAgfQogCiAgICAgX25zU2Nyb2xsVmlld1Njcm9s
bFdoZWVsU2hvdWxkUmV0YWluU2VsZiA9IHNob3VsZFJldGFpbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbQppbmRleCA0MWI1ZWM1MjY5ZDA2
ODg2YmU4OWJkNzRiMzQ5MGM2Y2ZhOGY0YzhmLi5hZGUxYWJkODk2MjlmMmI4ZDZhNGE3ZTY5YzY5
MDA1ODAwOGI3NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZU9iakNFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVPYmpDRXh0cmFzLm1tCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgV2ViQ29yZU9iakNGaW5hbGl6
ZU9uTWFpblRocmVhZChDbGFzcyBjbHMpCiAKIAogdHlwZWRlZiBzdGQ6OnBhaXI8Q2xhc3MsIGlk
PiBDbGFzc0FuZElkUGFpcjsKK3R5cGVkZWYgdm9pZCAoKkRlYWxsb2NJTVApKGlkLCBTRUwpOwog
CiBzdGF0aWMgdm9pZCBkZWFsbG9jQ2FsbGJhY2sodm9pZCogY29udGV4dCkKIHsKQEAgLTYyLDcg
KzYzLDcgQEAgc3RhdGljIHZvaWQgZGVhbGxvY0NhbGxiYWNrKHZvaWQqIGNvbnRleHQpCiAgICAg
CiAgICAgTWV0aG9kIG1ldGhvZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKHBhaXItPmZpcnN0
LCBAc2VsZWN0b3IoZGVhbGxvYykpOwogICAgIAotICAgIElNUCBpbXAgPSBtZXRob2RfZ2V0SW1w
bGVtZW50YXRpb24obWV0aG9kKTsKKyAgICBEZWFsbG9jSU1QIGltcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RGVhbGxvY0lNUD4obWV0aG9kX2dldEltcGxlbWVudGF0aW9uKG1ldGhvZCkpOwogICAgIGlt
cChwYWlyLT5zZWNvbmQsIEBzZWxlY3RvcihkZWFsbG9jKSk7CiAgICAgCiAgICAgZGVsZXRlIHBh
aXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA2YzNmMTY2MDNhMjc5NjBkMWY0MDA5
MDY5YTNkY2QxZTY2N2QxNGI3Li41ZWM5MmJjYTJjODcxMTQ5MjVjZjFjZjZlMDY1Yzg1YmRiODhk
YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3Mg
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGEgewogcHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKGlk
IHdlYkRvY3VtZW50VmlldykgOiBtX3dlYkRvY3VtZW50Vmlldyh3ZWJEb2N1bWVudFZpZXcpIHsg
fQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpIHsgb2JqY19tc2dTZW5kKG1fd2ViRG9j
dW1lbnRWaWV3LmdldCgpLCBAc2VsZWN0b3IoY2xvc2VJZk5vdEN1cnJlbnRWaWV3KSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXIoKSB7IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAoKikoaWQsIFNF
TCk+KG9iamNfbXNnU2VuZCkobV93ZWJEb2N1bWVudFZpZXcuZ2V0KCksIEBzZWxlY3RvcihjbG9z
ZUlmTm90Q3VycmVudFZpZXcpKTsgfQogCiAgICAgaWQgd2ViRG9jdW1lbnRWaWV3KCkgeyByZXR1
cm4gbV93ZWJEb2N1bWVudFZpZXcuZ2V0KCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Lm1tCmluZGV4IGFhYTAzMWE0YjgxNzA2NzFhYzlkMWI0ODVjZTg2YTVlOWY1ZWUxZmQu
LjRmYzY3YTkxM2IwZDVlM2YyMzQwNTdjY2JmYzdiNzRlZDdhN2U1ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50Lm1tCkBAIC03MCw3ICs3MCw3IEBAIGlkPFdlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXI+IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpnZXRQcm92aWRlcigpIGNvbnN0
CiAgICAgaWYgKCFtX3Byb3ZpZGVyKSB7CiAgICAgICAgIG1fcHJvdmlkZXIgPSBbbV93ZWJWaWV3
IF9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyXTsKICAgICAgICAgaWYgKFttX3Byb3ZpZGVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Q29udHJvbGxlcjopXSkKLSAgICAgICAgICAg
IG9iamNfbXNnU2VuZChtX3Byb3ZpZGVyLCBAc2VsZWN0b3Ioc2V0Q29udHJvbGxlcjopLCBtX2Nv
bnRyb2xsZXIpOworICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwg
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik+KG9iamNfbXNnU2VuZCkobV9wcm92aWRlciwg
QHNlbGVjdG9yKHNldENvbnRyb2xsZXI6KSwgbV9jb250cm9sbGVyKTsKICAgICB9CiAgICAgcmV0
dXJuIG1fcHJvdmlkZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQppbmRleCAxNWY2ZGZm
YTJlMGI2OGRjNGYyNGE1MjhjZjc4YjE1OGM5MzJjZmFmLi40ZmU1ODViMzA3NDMzOTM0ZmI1YzI4
MmZhNjE2NTJjNjAzZWRjNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KQEAgLTg0LDcg
Kzg0LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgaWQg
ZGVsZWdhdGUsIFNFTCBzZWxlY3RvcikKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBA
dHJ5IHsKLSAgICAgICAgcmV0dXJuIG9iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNl
bGYpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwgaWQp
PihvYmpjX21zZ1NlbmQpKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZik7CiAgICAgfSBAY2F0Y2go
aWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9u
KHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIGlu
bGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxl
Y3RvciwgaWQgb2JqZWMKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAg
ICAgICAgcmV0dXJuIG9iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVj
dCk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGlkICgqKShpZCwgU0VMLCBpZCwg
aWQpPihvYmpjX21zZ1NlbmQpKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0KTsKICAg
ICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdh
dGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMTIwLDcgKzEyMCw3
IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVn
YXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21zZ1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9y
LCBzZWxmLCBvYmplY3QxLCBvYmplY3QyKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8aWQgKCopKGlkLCBTRUwsIGlkLCBpZCwgaWQpPihvYmpjX21zZ1NlbmQpKGRlbGVnYXRlLCBz
ZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Mik7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0
aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9y
LCBleGNlcHRpb24pOwogICAgIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgaW5saW5lIGlk
IENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBp
ZCBvYmplYwogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICBy
ZXR1cm4gb2JqY19tc2dTZW5kKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0LCBib29s
ZWFuKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIGlk
LCBpZCwgQk9PTCk+KG9iamNfbXNnU2VuZCkoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmpl
Y3QsIGJvb2xlYW4pOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBv
cnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9
CkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmll
dyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWMKICAgICBpZiAoIWRl
bGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIG9iamNfbXNnU2VuZChk
ZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIsIG9iamVjdDMpOworICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwgaWQsIGlkLCBpZCwg
aWQpPihvYmpjX21zZ1NlbmQpKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2Jq
ZWN0Miwgb2JqZWN0Myk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJl
cG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAg
IH0KQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJW
aWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplYwogICAgIGlmICgh
ZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gb2JqY19tc2dTZW5k
KGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0LCBpbnRlZ2VyKTsKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIGlkLCBpZCwgTlNVSW50ZWdlcik+
KG9iamNfbXNnU2VuZCkoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QsIGludGVnZXIp
OwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWRE
ZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0yNDAsNyAr
MjQwLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9u
LCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRp
b24oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIGlkKT4oaW1wbGVtZW50YXRpb24pKGRlbGVnYXRlLCBzZWxl
Y3Rvciwgc2VsZik7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9y
dERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0K
QEAgLTI1Miw3ICsyNTIsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1w
bGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVs
ZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBp
bXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdCk7CisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGlkICgqKShpZCwgU0VMLCBpZCwgaWQpPihpbXBsZW1l
bnRhdGlvbikoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QpOwogICAgIH0gQGNhdGNo
KGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlv
bihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGlj
IGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxm
LCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gbmls
OwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb24oZGVsZWdhdGUsIHNl
bGVjdG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIGlkLCBpZCwgaWQpPihpbXBsZW1lbnRhdGlvbikoZGVs
ZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyKTsKICAgICB9IEBjYXRjaChp
ZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24o
c2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyBp
bmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwg
aWQgZGVsZWdhdGUsIFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRlbGVnYXRlLCBzZWxl
Y3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Myk7CisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGlkICgqKShpZCwgU0VMLCBpZCwgaWQsIGlkLCBpZCk+KGltcGxlbWVu
dGF0aW9uKShkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIsIG9iamVj
dDMpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJk
ZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0yODgs
NyArMjg4LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0
aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50
YXRpb24oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3Qz
LCBvYmplY3Q0KTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBT
RUwsIGlkLCBpZCwgaWQsIGlkLCBpZCk+KGltcGxlbWVudGF0aW9uKShkZWxlZ2F0ZSwgc2VsZWN0
b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIsIG9iamVjdDMsIG9iamVjdDQpOwogICAgIH0gQGNh
dGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2Vw
dGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0zMDAsNyArMzAwLDcgQEAgc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpz
ZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb24oZGVsZWdhdGUs
IHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlZ2VyLCBvYmplY3QyKTsKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2VyLCBp
ZCk+KGltcGxlbWVudGF0aW9uKShkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGlu
dGVnZXIsIG9iamVjdDIpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBS
ZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAg
ICB9CkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1Q
IGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAo
IWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1
cm4gaW1wbGVtZW50YXRpb24oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRl
Z2VyMSwgaW50ZWdlcjIsIG9iamVjdDIpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxpZCAoKikoaWQsIFNFTCwgaWQsIGlkLCBOU0ludGVnZXIsIGludCwgaWQpPihpbXBsZW1lbnRh
dGlvbikoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlZ2VyMSwgaW50ZWdl
cjIsIG9iamVjdDIpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBv
cnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9
CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRl
bGVnYXRlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4g
aW1wbGVtZW50YXRpb24oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBib29sZWFu
LCBpbnRlZ2VyMSwgaW50ZWdlcjIsIG9iamVjdDIpOworICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwgaWQsIGlkLCBCT09MLCBOU0ludGVnZXIsIGludCwgaWQp
PihpbXBsZW1lbnRhdGlvbikoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBib29s
ZWFuLCBpbnRlZ2VyMSwgaW50ZWdlcjIsIG9iamVjdDIpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2Vw
dGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3Rv
ciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIGlubGluZSBp
ZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxl
Z2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0
cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb24oZGVsZWdhdGUsIHNlbGVjdG9yLCBz
ZWxmLCBvYmplY3QxLCBvYmplY3QyLCBpbnRlZ2VyLCBvYmplY3QzKTsKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIGlkLCBpZCwgaWQsIE5TSW50ZWdlciwg
aWQpPihpbXBsZW1lbnRhdGlvbikoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBv
YmplY3QyLCBpbnRlZ2VyLCBvYmplY3QzKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsK
ICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2Vw
dGlvbik7CiAgICAgfQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERl
bGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNF
CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAg
ICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2Jq
ZWN0MSwgaW50ZWdlcjEsIG9iamVjdDIsIGludGVnZXIyLCBvYmplY3QzKTsKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2VyLCBp
ZCwgTlNJbnRlZ2VyLCBpZCk+KGltcGxlbWVudGF0aW9uKShkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNl
bGYsIG9iamVjdDEsIGludGVnZXIxLCBvYmplY3QyLCBpbnRlZ2VyMiwgb2JqZWN0Myk7CiAgICAg
fSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRl
RXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTM2MCw3ICszNjAsNyBA
QCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZp
ZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihkZWxl
Z2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIsIG9iamVjdDMs
IG9iamVjdDQpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNF
TCwgaWQsIGlkLCBOU0ludGVnZXIsIGlkLCBpZCwgaWQpPihpbXBsZW1lbnRhdGlvbikoZGVsZWdh
dGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlZ2VyLCBvYmplY3QyLCBvYmplY3QzLCBv
YmplY3Q0KTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlz
Y2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAt
MzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1l
bnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFCiAgICAgaWYgKCFkZWxlZ2F0
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIGltcGxl
bWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgaW50ZXJ2YWwsIG9i
amVjdDIsIG9iamVjdDMpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpZCAoKiko
aWQsIFNFTCwgaWQsIGlkLCBOU1RpbWVJbnRlcnZhbCwgaWQsIGlkKT4oaW1wbGVtZW50YXRpb24p
KGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgaW50ZXJ2YWwsIG9iamVjdDIsIG9i
amVjdDMpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNj
YXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC01
NzcsNyArNTc3LDcgQEAgaWQgQ2FsbEZvcm1EZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2Vs
ZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21zZ1NlbmQoZGVsZWdhdGUsIHNlbGVj
dG9yLCBvYmplY3QxLCBvYmplY3QyKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
aWQgKCopKGlkLCBTRUwsIGlkLCBpZCk+KG9iamNfbXNnU2VuZCkoZGVsZWdhdGUsIHNlbGVjdG9y
LCBvYmplY3QxLCBvYmplY3QyKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAg
ICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7
CiAgICAgfQpAQCAtNTkwLDcgKzU5MCw3IEBAIGlkIENhbGxGb3JtRGVsZWdhdGUoV2ViVmlldyAq
c2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplCiAgICAg
aWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0p
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21z
Z1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzLCBvYmpl
Y3Q0LCBvYmplY3Q1KTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlk
LCBTRUwsIGlkLCBpZCwgaWQsIGlkLCBpZCk+KG9iamNfbXNnU2VuZCkoZGVsZWdhdGUsIHNlbGVj
dG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzLCBvYmplY3Q0LCBvYmplY3Q1KTsKICAgICB9
IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVF
eGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNTA1ZGI1MzAyMTA0ZWE4NDhmYjgyMDEyN2ZhMjk0
YjMxNmJlMDkyMS4uMmJhZmRjNWFmMWY3MGQwMDllNjk0ZTYzM2U5YWEyZGUzNDI4ZTFkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0yNTYsNyArMjU2LDgg
QEAgc3RhdGljIGJvb2wgbmVlZHNDdXJzb3JSZWN0c1N1cHBvcnRBdFBvaW50KE5TV2luZG93KiB3
aW5kb3csIE5TUG9pbnQgcG9pbnQpCiB9CiAKIAotc3RhdGljIElNUCBvbGRTZXRDdXJzb3JGb3JN
b3VzZUxvY2F0aW9uSU1QOwordHlwZWRlZiB2b2lkICgqU2V0Q3Vyc29ySU1QKShpZCwgU0VMLCBO
U1BvaW50KTsKK3N0YXRpYyBTZXRDdXJzb3JJTVAgb2xkU2V0Q3Vyc29yRm9yTW91c2VMb2NhdGlv
bklNUDsKIAogLy8gT3ZlcnJpZGluZyBhbiBpbnRlcm5hbCBtZXRob2QgaXMgYSBoYWNrOyA8cmRh
cjovL3Byb2JsZW0vNzY2Mjk4Nz4gdHJhY2tzIGZpbmRpbmcgYSBiZXR0ZXIgc29sdXRpb24uCiBz
dGF0aWMgdm9pZCBzZXRDdXJzb3IoTlNXaW5kb3cgKnNlbGYsIFNFTCBjbWQsIE5TUG9pbnQgcG9p
bnQpCkBAIC0yOTEsNyArMjkyLDggQEAgLSAodm9pZClfdXBkYXRlTGF5ZXJHZW9tZXRyeUZyb21W
aWV3OwogQGVuZAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotc3RhdGljIElN
UCBvbGRTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVA7Cit0eXBlZGVmIHZvaWQgKCpTZXROZWVkc0Rp
c3BsYXlJTVApKGlkLCBTRUwsIE5TUmVjdCk7CitzdGF0aWMgU2V0TmVlZHNEaXNwbGF5SU1QIG9s
ZFNldE5lZWRzRGlzcGxheUluUmVjdElNUDsKIAogc3RhdGljIHZvaWQgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0KE5TVmlldyAqc2VsZiwgU0VMIGNtZCwgTlNSZWN0IGludmFsaWRSZWN0KQogewpAQCAt
NTcyLDcgKzU3NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIGlmICghb2xkU2V0Q3Vyc29y
Rm9yTW91c2VMb2NhdGlvbklNUCkgewogICAgICAgICBNZXRob2Qgc2V0Q3Vyc29yTWV0aG9kID0g
Y2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoW05TV2luZG93IGNsYXNzXSwgQHNlbGVjdG9yKF9zZXRD
dXJzb3JGb3JNb3VzZUxvY2F0aW9uOikpOwogICAgICAgICBBU1NFUlQoc2V0Q3Vyc29yTWV0aG9k
KTsKLSAgICAgICAgb2xkU2V0Q3Vyc29yRm9yTW91c2VMb2NhdGlvbklNUCA9IG1ldGhvZF9zZXRJ
bXBsZW1lbnRhdGlvbihzZXRDdXJzb3JNZXRob2QsIChJTVApc2V0Q3Vyc29yKTsKKyAgICAgICAg
b2xkU2V0Q3Vyc29yRm9yTW91c2VMb2NhdGlvbklNUCA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2V0Q3Vy
c29ySU1QPihtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24oc2V0Q3Vyc29yTWV0aG9kLCAoSU1QKXNl
dEN1cnNvcikpOwogICAgICAgICBBU1NFUlQob2xkU2V0Q3Vyc29yRm9yTW91c2VMb2NhdGlvbklN
UCk7CiAgICAgfQogCkBAIC01ODAsNyArNTgyLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAg
aWYgKCFvbGRTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVApIHsKICAgICAgICAgTWV0aG9kIHNldE5l
ZWRzRGlzcGxheUluUmVjdE1ldGhvZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKFtOU1ZpZXcg
Y2xhc3NdLCBAc2VsZWN0b3Ioc2V0TmVlZHNEaXNwbGF5SW5SZWN0OikpOwogICAgICAgICBBU1NF
UlQoc2V0TmVlZHNEaXNwbGF5SW5SZWN0TWV0aG9kKTsKLSAgICAgICAgb2xkU2V0TmVlZHNEaXNw
bGF5SW5SZWN0SU1QID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKHNldE5lZWRzRGlzcGxheUlu
UmVjdE1ldGhvZCwgKElNUClzZXROZWVkc0Rpc3BsYXlJblJlY3QpOworICAgICAgICBvbGRTZXRO
ZWVkc0Rpc3BsYXlJblJlY3RJTVAgPSByZWludGVycHJldF9jYXN0PFNldE5lZWRzRGlzcGxheUlN
UD4obWV0aG9kX3NldEltcGxlbWVudGF0aW9uKHNldE5lZWRzRGlzcGxheUluUmVjdE1ldGhvZCwg
KElNUClzZXROZWVkc0Rpc3BsYXlJblJlY3QpKTsKICAgICAgICAgQVNTRVJUKG9sZFNldE5lZWRz
RGlzcGxheUluUmVjdElNUCk7CiAgICAgfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BE
RlZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERG
Vmlld0NvbnRyb2xsZXIubW0KaW5kZXggNmEwMmY1NjJkZjljZmM1YmYzYTZiZmJlNjhkNzA3ZjMx
ZmQ1ZjRjYS4uYTA4NzY4ZDhmZTViNzIzYTFlMGQ0YWE3OGZlMDZhYTMxNTdjNzFkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xs
ZXIubW0KQEAgLTUwNSw3ICs1MDUsOCBAQCBib29sIFBERlZpZXdDb250cm9sbGVyOjpmb3J3YXJk
U2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICp3aGVlbEV2ZW50KQogfQogCiAjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi1zdGF0aWMgSU1QIG9sZFBERlZpZXdTY3Jv
bGxWaWV3X3Njcm9sbFdoZWVsOwordHlwZWRlZiB2b2lkICgqU2Nyb2xsV2hlZWxJTVApKGlkLCBT
RUwsIE5TRXZlbnQgKik7CitzdGF0aWMgU2Nyb2xsV2hlZWxJTVAgb2xkUERGVmlld1Njcm9sbFZp
ZXdfc2Nyb2xsV2hlZWw7CiAKIHN0YXRpYyBXS1BERlZpZXcgKmZpbmRFbmNsb3NpbmdXS1BERlZp
ZXcoTlNWaWV3ICp2aWV3KQogewpAQCAtNTYwLDcgKzU2MSw3IEBAIE5TQnVuZGxlKiBQREZWaWV3
Q29udHJvbGxlcjo6cGRmS2l0QnVuZGxlKCkKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNzAKICAgICBpZiAoQ2xhc3MgcGRmVmlld1Njcm9sbFZpZXdDbGFzcyA9IFtw
ZGZLaXRCdW5kbGUgY2xhc3NOYW1lZDpAIlBERlZpZXdTY3JvbGxWaWV3Il0pIHsKICAgICAgICAg
aWYgKE1ldGhvZCBzY3JvbGxXaGVlbCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKHBkZlZpZXdT
Y3JvbGxWaWV3Q2xhc3MsIEBzZWxlY3RvcihzY3JvbGxXaGVlbDopKSkKLSAgICAgICAgICAgIG9s
ZFBERlZpZXdTY3JvbGxWaWV3X3Njcm9sbFdoZWVsID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9u
KHNjcm9sbFdoZWVsLCByZWludGVycHJldF9jYXN0PElNUD4oUERGVmlld1Njcm9sbFZpZXdfc2Ny
b2xsV2hlZWwpKTsKKyAgICAgICAgICAgIG9sZFBERlZpZXdTY3JvbGxWaWV3X3Njcm9sbFdoZWVs
ID0gcmVpbnRlcnByZXRfY2FzdDxTY3JvbGxXaGVlbElNUD4obWV0aG9kX3NldEltcGxlbWVudGF0
aW9uKHNjcm9sbFdoZWVsLCByZWludGVycHJldF9jYXN0PElNUD4oUERGVmlld1Njcm9sbFZpZXdf
c2Nyb2xsV2hlZWwpKSk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1MWE3OTkxZWEwZGRmOWJlYmVhN2UxZjk0ZjY4
MWFjNjk1M2M0YmY0Li43ZDE4MDNhNzJmZmVkNzE4ZjNmYjJmZjMzNTI5NDhiZDNhOGYyZThkIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDgtMjggIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29t
PgorCisgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJvcHJp
YXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSByZWludGVycHJldF9jYXN0IHRvIGNhc3QgdG8gYXBwcm9wcmlhdGUgZnVu
Y3Rpb24gcG9pbnRlciB0eXBlIHdoZW4gY2FsbGluZyBvYmpjX21zZ1NlbmQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChzd2l6emxl
TlNGb250TWFuYWdlck1ldGhvZHMpOgorCiAyMDEyLTA4LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8
YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVuaWZ5IE51bWJlciB0byBTdHJpbmdJbXBs
IGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpp
bmRleCAyYmQ1NGJiNzBlNjg3Y2UxOTdkNWEwZTM3MTU0NTNlOWIyYWRiNjg1Li5hZGYxMmYxNjgz
NWRmYTJjZjFjOTQ4NWMxZGI0NDdiYzMxNWI4YzAwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0zNDQsOCArMzQ0LDkgQEAgc3RhdGljIE5TU2V0ICph
bGxvd2VkRm9udEZhbWlseVNldCgpCiAgICAgcmV0dXJuIGZvbnRGYW1pbGl5U2V0OwogfQogCi1z
dGF0aWMgSU1QIGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1pbGllc0lNUDsKLXN0YXRpYyBJTVAgYXBw
S2l0QXZhaWxhYmxlRm9udHNJTVA7Cit0eXBlZGVmIGlkICgqT2JqY01zZ1NlbmROb0FyZ3MpKGlk
LCBTRUwpOworc3RhdGljIE9iamNNc2dTZW5kTm9BcmdzIGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1p
bGllc0lNUDsKK3N0YXRpYyBPYmpjTXNnU2VuZE5vQXJncyBhcHBLaXRBdmFpbGFibGVGb250c0lN
UDsKIAogc3RhdGljIE5TQXJyYXkgKmRydF9OU0ZvbnRNYW5hZ2VyX2F2YWlsYWJsZUZvbnRGYW1p
bGllcyhpZCBzZWxmLCBTRUwgX2NtZCkKIHsKQEAgLTM5MSw3ICszOTIsNyBAQCBzdGF0aWMgdm9p
ZCBzd2l6emxlTlNGb250TWFuYWdlck1ldGhvZHMoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1pbGllc0lNUCA9IG1ldGhvZF9zZXRJbXBs
ZW1lbnRhdGlvbihhdmFpbGFibGVGb250RmFtaWxpZXNNZXRob2QsIChJTVApZHJ0X05TRm9udE1h
bmFnZXJfYXZhaWxhYmxlRm9udEZhbWlsaWVzKTsKKyAgICBhcHBLaXRBdmFpbGFibGVGb250RmFt
aWxpZXNJTVAgPSByZWludGVycHJldF9jYXN0PE9iamNNc2dTZW5kTm9BcmdzPihtZXRob2Rfc2V0
SW1wbGVtZW50YXRpb24oYXZhaWxhYmxlRm9udEZhbWlsaWVzTWV0aG9kLCAoSU1QKWRydF9OU0Zv
bnRNYW5hZ2VyX2F2YWlsYWJsZUZvbnRGYW1pbGllcykpOwogCiAgICAgTWV0aG9kIGF2YWlsYWJs
ZUZvbnRzTWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2Qob2JqY19nZXRDbGFzcygiTlNG
b250TWFuYWdlciIpLCBAc2VsZWN0b3IoYXZhaWxhYmxlRm9udHMpKTsKICAgICBBU1NFUlQoYXZh
aWxhYmxlRm9udHNNZXRob2QpOwpAQCAtNDAwLDcgKzQwMSw3IEBAIHN0YXRpYyB2b2lkIHN3aXp6
bGVOU0ZvbnRNYW5hZ2VyTWV0aG9kcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgYXBwS2l0QXZhaWxhYmxlRm9udHNJTVAgPSBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24oYXZh
aWxhYmxlRm9udHNNZXRob2QsIChJTVApZHJ0X05TRm9udE1hbmFnZXJfYXZhaWxhYmxlRm9udHMp
OworICAgIGFwcEtpdEF2YWlsYWJsZUZvbnRzSU1QID0gcmVpbnRlcnByZXRfY2FzdDxPYmpjTXNn
U2VuZE5vQXJncz4obWV0aG9kX3NldEltcGxlbWVudGF0aW9uKGF2YWlsYWJsZUZvbnRzTWV0aG9k
LCAoSU1QKWRydF9OU0ZvbnRNYW5hZ2VyX2F2YWlsYWJsZUZvbnRzKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGFjdGl2YXRlVGVzdGluZ0ZvbnRzKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161264</attachid>
            <date>2012-08-29 10:29:18 -0700</date>
            <delta_ts>2012-08-30 11:33:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95242-20120829102908.patch</filename>
            <type>text/plain</type>
            <size>29821</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgwODVlZWZhZDM3ZTdhM2Q5MTQxMTAz
NmQ2M2QzOWI3NDNhZTkxNWYuLmI0NDljODNhYjE5MjUyMmRjYTIxM2M2NjQ5ZTdhYjRjMzc3YmE4
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMjggIFByYXRpayBTb2xhbmtpICA8cHNv
bGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBi
ZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSByZWludGVycHJldF9jYXN0IHRvIGNhc3QgdG8g
YXBwcm9wcmlhdGUgZnVuY3Rpb24gcG9pbnRlciB0eXBlIHdoZW4gY2FsbGluZyBvYmpjX21zZ1Nl
bmQuCisKKyAgICAgICAgKiB3dGYvRnVuY3Rpb25hbC5oOgorICAgICAgICAoV1RGOjpSKToKKwog
MjAxMi0wOC0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVG91Y2ggUGxhdGZvcm0uaCB0byBzb2x2ZSBhIGJ1aWxkIGRlcGVuZGVuY3kgaXNzdWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NThlMzljMmQ5OTE2NTljYzY0YzE0NTA4MjQ2YmZmMWFhNjZhYzdkLi4z
Mzg3NTEwOGQwN2MyMjExNTY3ZDNiOThlM2Q1NDlhMGRlMmVhNjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTItMDgtMjggIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUu
Y29tPgorCisgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJv
cHJpYXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSByZWludGVycHJldF9jYXN0IHRvIGNhc3QgdG8gYXBwcm9wcmlhdGUg
ZnVuY3Rpb24gcG9pbnRlciB0eXBlIHdoZW4gY2FsbGluZyBvYmpjX21zZ1NlbmQuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgorCisgICAgICAg
ICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXROU1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbToKKyAgICAgICAg
KGRlYWxsb2NDYWxsYmFjayk6CisKIDIwMTItMDgtMjUgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSb2xsIG91dCByMTI2MDU2IGFuZCByMTI2NjI2CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggYzEwODAyZjEzMTUxMWRmNzdkZjk2MGEwMTk5YjFiYjYyMDc5Y2EyZC4uNWE2
Y2Y1YzA3NTk5YzJiNjQ0MDk4MWMwOGRhMGE1MTE5MzA5NGRlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDEyLTA4LTI4ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFw
cGxlLmNvbT4KKworICAgICAgICBvYmpjX21zZ1NlbmQgYW5kIElNUCBzaG91bGQgYmUgY2FzdCBh
cHByb3ByaWF0ZWx5IGJlZm9yZSB1c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgcmVpbnRlcnByZXRfY2FzdCB0byBjYXN0IHRvIGFwcHJvcHJp
YXRlIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSB3aGVuIGNhbGxpbmcgb2JqY19tc2dTZW5kLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAg
ICAgICAgKFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhOjpjbGVhcik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6Z2V0UHJvdmlkZXIpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW06CisgICAgICAgIChDYWxsRGVsZWdh
dGUpOgorICAgICAgICAoQ2FsbEZvcm1EZWxlZ2F0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKCtbV2ViSFRNTFZpZXdQcml2YXRlIGluaXRpYWxpemVdKToK
KwogMjAxMi0wOC0yNCAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRG9uJ3QgY3JlYXRlIGEgbmV3IFJlc291cmNlUmVxdWVzdCBpZiBkZWxlZ2F0ZSByZXR1
cm5zIHRoZSBzYW1lIE5TVVJMUmVxdWVzdCB3ZSBwYXNzZWQgaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNjNk
Mjg3ZjMzMDRlMmFjOWVlNDE3OWEzNTkzOTljNDYwNWY2YmEwLi4yNjRjNGZhM2NmZmE5MTRhYTMw
M2VmOWViZDk2NGUyYzE0OTc0Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTIt
MDgtMjggIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIG9i
amNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVz
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBy
ZWludGVycHJldF9jYXN0IHRvIGNhc3QgdG8gYXBwcm9wcmlhdGUgZnVuY3Rpb24gcG9pbnRlciB0
eXBlIHdoZW4gY2FsbGluZyBvYmpjX21zZ1NlbmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L21hYy9QREZWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlZpZXdDb250cm9sbGVyOjpwZGZLaXRCdW5kbGUpOgorCiAyMDEyLTA4LTI1ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNh
aXJvIEJ1aWxkIEJyb2tlbiBkdWUgdG8gbWlzc2luZyBleHBvcnQgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uYWwuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uYWwuaAppbmRleCA0OGQ5ZjMyMWViODZkZWE0NzM2NjRmYTBlZGY4NDFhMjZkYzA4ZmM5Li5j
MmI5ZTViNjE4NGJkYmVkNzc2OGY5OTY4ODg1NzA4ZDRkYWI4NDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5o
CkBAIC02MzQsOCArNjM0LDggQEAgcHVibGljOgogICAgICAgICAvLwogICAgICAgICAvLyAgIGRp
c3BhdGNoX2FzeW5jKHF1ZXVlLCBiaW5kKC4uLikpOwogICAgICAgICAvLwotICAgICAgICBpZCBj
b3BpZWRCbG9jayA9IG9iamNfbXNnU2VuZCgoaWQpYmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImNv
cHkiKSk7Ci0gICAgICAgIGlkIGF1dG9yZWxlYXNlZEJsb2NrID0gb2JqY19tc2dTZW5kKGNvcGll
ZEJsb2NrLCBzZWxfcmVnaXN0ZXJOYW1lKCJhdXRvcmVsZWFzZSIpKTsKKyAgICAgICAgaWQgY29w
aWVkQmxvY2sgPSByZWludGVycHJldF9jYXN0PGlkICgqKShpZCwgU0VMKT4ob2JqY19tc2dTZW5k
KSgoaWQpYmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImNvcHkiKSk7CisgICAgICAgIGlkIGF1dG9y
ZWxlYXNlZEJsb2NrID0gcmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCk+KG9iamNfbXNn
U2VuZCkoY29waWVkQmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImF1dG9yZWxlYXNlIikpOwogICAg
ICAgICByZXR1cm4gKEJsb2NrVHlwZSlhdXRvcmVsZWFzZWRCbG9jazsKICAgICB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA3NjI0NWRh
YjZlODk1OWIyNTFhODg2YTc1Y2Y0ZTU3OWFkMzNiNTRlLi5lYTg1ODBkNDY1MjdjOTMwMTI5ZTdh
MzQ3MjZjMzY4MzAwMjcyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCkBAIC0zODMsNyArMzgzLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJm
cmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBJTVAgb3JpZ2luYWxOU1Njcm9sbFZpZXdTY3Jv
bGxXaGVlbDsKK3R5cGVkZWYgdm9pZCAoKlNjcm9sbFdoZWVsSU1QKShpZCwgU0VMLCBOU0V2ZW50
ICopOworc3RhdGljIFNjcm9sbFdoZWVsSU1QIG9yaWdpbmFsTlNTY3JvbGxWaWV3U2Nyb2xsV2hl
ZWw7CiBzdGF0aWMgYm9vbCBfbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxm
Owogc3RhdGljIHZvaWQgc2VsZlJldGFpbmluZ05TU2Nyb2xsVmlld1Njcm9sbFdoZWVsKE5TU2Ny
b2xsVmlldyAqLCBTRUwsIE5TRXZlbnQgKik7CiAKQEAgLTQwMCw3ICs0MDEsNyBAQCBzdGF0aWMg
dm9pZCBzZXROU1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYoYm9vbCBzaG91
bGRSZXRhaW4pCiAKICAgICBpZiAoIW9yaWdpbmFsTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwpIHsK
ICAgICAgICAgTWV0aG9kIG1ldGhvZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKG9iamNfZ2V0
UmVxdWlyZWRDbGFzcygiTlNTY3JvbGxWaWV3IiksIEBzZWxlY3RvcihzY3JvbGxXaGVlbDopKTsK
LSAgICAgICAgb3JpZ2luYWxOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbCA9IG1ldGhvZF9zZXRJbXBs
ZW1lbnRhdGlvbihtZXRob2QsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzZWxmUmV0YWluaW5nTlNT
Y3JvbGxWaWV3U2Nyb2xsV2hlZWwpKTsKKyAgICAgICAgb3JpZ2luYWxOU1Njcm9sbFZpZXdTY3Jv
bGxXaGVlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2Nyb2xsV2hlZWxJTVA+KG1ldGhvZF9zZXRJbXBs
ZW1lbnRhdGlvbihtZXRob2QsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzZWxmUmV0YWluaW5nTlNT
Y3JvbGxWaWV3U2Nyb2xsV2hlZWwpKSk7CiAgICAgfQogCiAgICAgX25zU2Nyb2xsVmlld1Njcm9s
bFdoZWVsU2hvdWxkUmV0YWluU2VsZiA9IHNob3VsZFJldGFpbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbQppbmRleCA0MWI1ZWM1MjY5ZDA2
ODg2YmU4OWJkNzRiMzQ5MGM2Y2ZhOGY0YzhmLi5hZGUxYWJkODk2MjlmMmI4ZDZhNGE3ZTY5YzY5
MDA1ODAwOGI3NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZU9iakNFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVPYmpDRXh0cmFzLm1tCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgV2ViQ29yZU9iakNGaW5hbGl6
ZU9uTWFpblRocmVhZChDbGFzcyBjbHMpCiAKIAogdHlwZWRlZiBzdGQ6OnBhaXI8Q2xhc3MsIGlk
PiBDbGFzc0FuZElkUGFpcjsKK3R5cGVkZWYgdm9pZCAoKkRlYWxsb2NJTVApKGlkLCBTRUwpOwog
CiBzdGF0aWMgdm9pZCBkZWFsbG9jQ2FsbGJhY2sodm9pZCogY29udGV4dCkKIHsKQEAgLTYyLDcg
KzYzLDcgQEAgc3RhdGljIHZvaWQgZGVhbGxvY0NhbGxiYWNrKHZvaWQqIGNvbnRleHQpCiAgICAg
CiAgICAgTWV0aG9kIG1ldGhvZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKHBhaXItPmZpcnN0
LCBAc2VsZWN0b3IoZGVhbGxvYykpOwogICAgIAotICAgIElNUCBpbXAgPSBtZXRob2RfZ2V0SW1w
bGVtZW50YXRpb24obWV0aG9kKTsKKyAgICBEZWFsbG9jSU1QIGltcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RGVhbGxvY0lNUD4obWV0aG9kX2dldEltcGxlbWVudGF0aW9uKG1ldGhvZCkpOwogICAgIGlt
cChwYWlyLT5zZWNvbmQsIEBzZWxlY3RvcihkZWFsbG9jKSk7CiAgICAgCiAgICAgZGVsZXRlIHBh
aXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA2YzNmMTY2MDNhMjc5NjBkMWY0MDA5
MDY5YTNkY2QxZTY2N2QxNGI3Li41ZWM5MmJjYTJjODcxMTQ5MjVjZjFjZjZlMDY1Yzg1YmRiODhk
YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3Mg
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGEgewogcHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKGlk
IHdlYkRvY3VtZW50VmlldykgOiBtX3dlYkRvY3VtZW50Vmlldyh3ZWJEb2N1bWVudFZpZXcpIHsg
fQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpIHsgb2JqY19tc2dTZW5kKG1fd2ViRG9j
dW1lbnRWaWV3LmdldCgpLCBAc2VsZWN0b3IoY2xvc2VJZk5vdEN1cnJlbnRWaWV3KSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXIoKSB7IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAoKikoaWQsIFNF
TCk+KG9iamNfbXNnU2VuZCkobV93ZWJEb2N1bWVudFZpZXcuZ2V0KCksIEBzZWxlY3RvcihjbG9z
ZUlmTm90Q3VycmVudFZpZXcpKTsgfQogCiAgICAgaWQgd2ViRG9jdW1lbnRWaWV3KCkgeyByZXR1
cm4gbV93ZWJEb2N1bWVudFZpZXcuZ2V0KCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Lm1tCmluZGV4IGFhYTAzMWE0YjgxNzA2NzFhYzlkMWI0ODVjZTg2YTVlOWY1ZWUxZmQu
LjRmYzY3YTkxM2IwZDVlM2YyMzQwNTdjY2JmYzdiNzRlZDdhN2U1ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50Lm1tCkBAIC03MCw3ICs3MCw3IEBAIGlkPFdlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXI+IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpnZXRQcm92aWRlcigpIGNvbnN0
CiAgICAgaWYgKCFtX3Byb3ZpZGVyKSB7CiAgICAgICAgIG1fcHJvdmlkZXIgPSBbbV93ZWJWaWV3
IF9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyXTsKICAgICAgICAgaWYgKFttX3Byb3ZpZGVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Q29udHJvbGxlcjopXSkKLSAgICAgICAgICAg
IG9iamNfbXNnU2VuZChtX3Byb3ZpZGVyLCBAc2VsZWN0b3Ioc2V0Q29udHJvbGxlcjopLCBtX2Nv
bnRyb2xsZXIpOworICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwg
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik+KG9iamNfbXNnU2VuZCkobV9wcm92aWRlciwg
QHNlbGVjdG9yKHNldENvbnRyb2xsZXI6KSwgbV9jb250cm9sbGVyKTsKICAgICB9CiAgICAgcmV0
dXJuIG1fcHJvdmlkZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQppbmRleCAxNWY2ZGZm
YTJlMGI2OGRjNGYyNGE1MjhjZjc4YjE1OGM5MzJjZmFmLi4yMzZkYWVlOGZkNmMyNzE3MGU0NmM3
NWY3ZTc4MzEwMmNjYjExMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KQEAgLTc5LDEy
ICs3OSw3OCBAQCBzdGF0aWMgY29uc3QgT2JqQ01zZ1NlbmRGUFJldCBvYmpjX21zZ1NlbmRfZmxv
YXRfcmV0dXJuID0gcmVpbnRlcnByZXRfY2FzdDxPYmpDTQogc3RhdGljIGNvbnN0IE9iakNNc2dT
ZW5kRlBSZXQgb2JqY19tc2dTZW5kX2Zsb2F0X3JldHVybiA9IHJlaW50ZXJwcmV0X2Nhc3Q8T2Jq
Q01zZ1NlbmRGUFJldD4ob2JqY19tc2dTZW5kKTsKICNlbmRpZgogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBBcmcxVHlwZT4KK2lkIHdlYmtpdF9vYmpjX21zZ1NlbmQoaWQgdGFyZ2V0LCBTRUwgc2VsZWN0
b3IsIEFyZzFUeXBlIGFyZzEpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCop
KGlkLCBTRUwsIEFyZzFUeXBlKT4ob2JqY19tc2dTZW5kKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmcx
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlPgor
aWQgd2Via2l0X29iamNfbXNnU2VuZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUg
YXJnMSwgQXJnMlR5cGUgYXJnMikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpZCAo
KikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlKT4ob2JqY19tc2dTZW5kKSh0YXJnZXQsIHNl
bGVjdG9yLCBhcmcxLCBhcmcyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQXJnMVR5cGUsIHR5
cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFtZSBBcmczVHlwZT4KK2lkIHdlYmtpdF9vYmpjX21zZ1Nl
bmQoaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBlIGFyZzEsIEFyZzJUeXBlIGFyZzIs
IEFyZzNUeXBlIGFyZzMpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlk
LCBTRUwsIEFyZzFUeXBlLCBBcmcyVHlwZSwgQXJnM1R5cGUpPihvYmpjX21zZ1NlbmQpKHRhcmdl
dCwgc2VsZWN0b3IsIGFyZzEsIGFyZzIsIGFyZzMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBB
cmcxVHlwZSwgdHlwZW5hbWUgQXJnMlR5cGUsIHR5cGVuYW1lIEFyZzNUeXBlLCB0eXBlbmFtZSBB
cmc0VHlwZT4KK2lkIHdlYmtpdF9vYmpjX21zZ1NlbmQoaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3Is
IEFyZzFUeXBlIGFyZzEsIEFyZzJUeXBlIGFyZzIsIEFyZzNUeXBlIGFyZzMsIEFyZzRUeXBlIGFy
ZzQpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIEFyZzFU
eXBlLCBBcmcyVHlwZSwgQXJnM1R5cGUsIEFyZzRUeXBlKT4ob2JqY19tc2dTZW5kKSh0YXJnZXQs
IHNlbGVjdG9yLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFtZSBBcmczVHlwZSwgdHlwZW5h
bWUgQXJnNFR5cGUsIHR5cGVuYW1lIEFyZzVUeXBlPgoraWQgd2Via2l0X29iamNfbXNnU2VuZChp
ZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJnMlR5cGUgYXJnMiwgQXJn
M1R5cGUgYXJnMywgQXJnNFR5cGUgYXJnNCwgQXJnNVR5cGUgYXJnNSkKK3sKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBBcmcz
VHlwZSwgQXJnNFR5cGUsIEFyZzVUeXBlKT4ob2JqY19tc2dTZW5kKSh0YXJnZXQsIHNlbGVjdG9y
LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
QXJnMVR5cGU+CitpZCB3ZWJraXRfaW1wbGVtZW50YXRpb24oSU1QIGltcGxlbWVudGF0aW9uLCBp
ZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSkKK3sKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwgQXJnMVR5cGUpPihpbXBsZW1lbnRhdGlvbiko
dGFyZ2V0LCBzZWxlY3RvciwgYXJnMSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFyZzFUeXBl
LCB0eXBlbmFtZSBBcmcyVHlwZT4KK2lkIHdlYmtpdF9pbXBsZW1lbnRhdGlvbihJTVAgaW1wbGVt
ZW50YXRpb24sIGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yLCBBcmcxVHlwZSBhcmcxLCBBcmcyVHlw
ZSBhcmcyKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGlkICgqKShpZCwgU0VMLCBB
cmcxVHlwZSwgQXJnMlR5cGUpPihpbXBsZW1lbnRhdGlvbikodGFyZ2V0LCBzZWxlY3RvciwgYXJn
MSwgYXJnMik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBBcmcy
VHlwZSwgdHlwZW5hbWUgQXJnM1R5cGU+CitpZCB3ZWJraXRfaW1wbGVtZW50YXRpb24oSU1QIGlt
cGxlbWVudGF0aW9uLCBpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJn
MlR5cGUgYXJnMiwgQXJnM1R5cGUgYXJnMykKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxpZCAoKikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBBcmczVHlwZSk+KGltcGxlbWVu
dGF0aW9uKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmcxLCBhcmcyLCBhcmczKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFtZSBBcmczVHlw
ZSwgdHlwZW5hbWUgQXJnNFR5cGU+CitpZCB3ZWJraXRfaW1wbGVtZW50YXRpb24oSU1QIGltcGxl
bWVudGF0aW9uLCBpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJnMlR5
cGUgYXJnMiwgQXJnM1R5cGUgYXJnMywgQXJnNFR5cGUgYXJnNCkKK3sKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBBcmczVHlw
ZSwgQXJnNFR5cGUpPihpbXBsZW1lbnRhdGlvbikodGFyZ2V0LCBzZWxlY3RvciwgYXJnMSwgYXJn
MiwgYXJnMywgYXJnNCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFt
ZSBBcmcyVHlwZSwgdHlwZW5hbWUgQXJnM1R5cGUsIHR5cGVuYW1lIEFyZzRUeXBlLCB0eXBlbmFt
ZSBBcmc1VHlwZT4KK2lkIHdlYmtpdF9pbXBsZW1lbnRhdGlvbihJTVAgaW1wbGVtZW50YXRpb24s
IGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yLCBBcmcxVHlwZSBhcmcxLCBBcmcyVHlwZSBhcmcyLCBB
cmczVHlwZSBhcmczLCBBcmc0VHlwZSBhcmc0LCBBcmc1VHlwZSBhcmc1KQoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGlkICgqKShpZCwgU0VMLCBBcmcxVHlwZSwgQXJnMlR5cGUsIEFy
ZzNUeXBlLCBBcmc0VHlwZSwgQXJnNVR5cGUpPihpbXBsZW1lbnRhdGlvbikodGFyZ2V0LCBzZWxl
Y3RvciwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBBcmcyVHlwZSwgdHlwZW5hbWUgQXJnM1R5cGUsIHR5cGVu
YW1lIEFyZzRUeXBlLCB0eXBlbmFtZSBBcmc1VHlwZSwgdHlwZW5hbWUgQXJnNlR5cGU+CitpZCB3
ZWJraXRfaW1wbGVtZW50YXRpb24oSU1QIGltcGxlbWVudGF0aW9uLCBpZCB0YXJnZXQsIFNFTCBz
ZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJnMlR5cGUgYXJnMiwgQXJnM1R5cGUgYXJnMywgQXJn
NFR5cGUgYXJnNCwgQXJnNVR5cGUgYXJnNSwgQXJnNlR5cGUgYXJnNikKK3sKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxpZCAoKikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBBcmcz
VHlwZSwgQXJnNFR5cGUsIEFyZzVUeXBlLCBBcmc2VHlwZSk+KGltcGxlbWVudGF0aW9uKSh0YXJn
ZXQsIHNlbGVjdG9yLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1LCBhcmc2KTsKK30KKwog
c3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUs
IFNFTCBzZWxlY3RvcikKIHsKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsK
LSAgICAgICAgcmV0dXJuIG9iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYpOwor
ICAgICAgICByZXR1cm4gd2Via2l0X29iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNl
bGYpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJk
ZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC05Niw3
ICsxNjIsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBp
ZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplYwogICAgIGlmICghZGVsZWdhdGUgfHwg
IVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gb2JqY19tc2dTZW5kKGRlbGVnYXRlLCBz
ZWxlY3Rvciwgc2VsZiwgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHdlYmtpdF9vYmpjX21zZ1Nl
bmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QpOwogICAgIH0gQGNhdGNoKGlkIGV4
Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxl
Y3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0xMDgsNyArMTc0LDcgQEAgc3RhdGljIGlubGlu
ZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3Rv
ciwgTlNSZWN0IHIKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIFdlYlZpZXcgKiwgTlNS
ZWN0KT4ob2JqY19tc2dTZW5kKShkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIHJlY3QpOworICAg
ICAgICByZXR1cm4gd2Via2l0X29iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYs
IHJlY3QpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNj
YXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0x
MjAsNyArMTg2LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2Vs
ZiwgaWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWMKICAgICBpZiAoIWRlbGVnYXRl
IHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIG9iamNfbXNnU2VuZChkZWxlZ2F0
ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIpOworICAgICAgICByZXR1cm4gd2Vi
a2l0X29iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVj
dDIpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJk
ZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0xMzIs
NyArMTk4LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwg
aWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWMKICAgICBpZiAoIWRlbGVnYXRlIHx8
ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIG9iamNfbXNnU2VuZChkZWxlZ2F0ZSwg
c2VsZWN0b3IsIHNlbGYsIG9iamVjdCwgYm9vbGVhbik7CisgICAgICAgIHJldHVybiB3ZWJraXRf
b2JqY19tc2dTZW5kKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0LCBib29sZWFuKTsK
ICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVs
ZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMTQ0LDcgKzIx
MCw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRl
bGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21zZ1NlbmQoZGVsZWdhdGUsIHNlbGVj
dG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzKTsKKyAgICAgICAgcmV0dXJuIHdl
YmtpdF9vYmpjX21zZ1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBvYmpl
Y3QyLCBvYmplY3QzKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVw
b3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAg
fQpAQCAtMTU2LDcgKzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZp
ZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAgICAgaWYgKCFk
ZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21zZ1NlbmQo
ZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QsIGludGVnZXIpOworICAgICAgICByZXR1
cm4gd2Via2l0X29iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdCwg
aW50ZWdlcik7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERp
c2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAg
LTI0MCw3ICszMDYsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVt
ZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdh
dGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBs
ZW1lbnRhdGlvbihkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYpOworICAgICAgICByZXR1cm4gd2Vi
a2l0X2ltcGxlbWVudGF0aW9uKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNl
bGYpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJk
ZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0yNTIs
NyArMzE4LDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0
aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50
YXRpb24oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QpOworICAgICAgICByZXR1cm4g
d2Via2l0X2ltcGxlbWVudGF0aW9uKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3Is
IHNlbGYsIG9iamVjdCk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJl
cG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAg
IH0KQEAgLTI2NCw3ICszMzAsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAg
aW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICgh
ZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVy
biBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVj
dDIpOworICAgICAgICByZXR1cm4gd2Via2l0X2ltcGxlbWVudGF0aW9uKGltcGxlbWVudGF0aW9u
LCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIpOwogICAgIH0gQGNh
dGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2Vw
dGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0yNzYsNyArMzQyLDcgQEAgc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpz
ZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb24oZGVsZWdhdGUs
IHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzKTsKKyAgICAgICAgcmV0
dXJuIHdlYmtpdF9pbXBsZW1lbnRhdGlvbihpbXBsZW1lbnRhdGlvbiwgZGVsZWdhdGUsIHNlbGVj
dG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzKTsKICAgICB9IEBjYXRjaChpZCBl
eGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2Vs
ZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMjg4LDcgKzM1NCw3IEBAIHN0YXRpYyBpbmxp
bmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQg
ZGVsZWdhdGUsIFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rv
ciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CisgICAgICAgIHJl
dHVybiB3ZWJraXRfaW1wbGVtZW50YXRpb24oaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxl
Y3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CiAgICAgfSBA
Y2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhj
ZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTMwMCw3ICszNjYsNyBAQCBz
dGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcg
KnNlbGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0
ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIpOworICAgICAgICBy
ZXR1cm4gd2Via2l0X2ltcGxlbWVudGF0aW9uKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2Vs
ZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIpOwogICAgIH0gQGNhdGNoKGlk
IGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihz
ZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0zMTIsNyArMzc4LDcgQEAgc3RhdGljIGlu
bGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBp
ZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb24oZGVsZWdhdGUsIHNlbGVj
dG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlZ2VyMSwgaW50ZWdlcjIsIG9iamVjdDIpOworICAgICAg
ICByZXR1cm4gd2Via2l0X2ltcGxlbWVudGF0aW9uKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwg
c2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIxLCBpbnRlZ2VyMiwgb2JqZWN0Mik7CiAg
ICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVn
YXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTMyNCw3ICszOTAs
NyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdl
YlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihk
ZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGJvb2xlYW4sIGludGVnZXIxLCBpbnRl
Z2VyMiwgb2JqZWN0Mik7CisgICAgICAgIHJldHVybiB3ZWJraXRfaW1wbGVtZW50YXRpb24oaW1w
bGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgYm9vbGVhbiwg
aW50ZWdlcjEsIGludGVnZXIyLCBvYmplY3QyKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24p
IHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4
Y2VwdGlvbik7CiAgICAgfQpAQCAtMzM2LDcgKzQwMiw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2Fs
bERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUs
IFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsK
LSAgICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwg
b2JqZWN0MSwgb2JqZWN0MiwgaW50ZWdlciwgb2JqZWN0Myk7CisgICAgICAgIHJldHVybiB3ZWJr
aXRfaW1wbGVtZW50YXRpb24oaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2Vs
Ziwgb2JqZWN0MSwgb2JqZWN0MiwgaW50ZWdlciwgb2JqZWN0Myk7CiAgICAgfSBAY2F0Y2goaWQg
ZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNl
bGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTM0OCw3ICs0MTQsNyBAQCBzdGF0aWMgaW5s
aW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlk
IGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwgc2VsZWN0
b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIxLCBvYmplY3QyLCBpbnRlZ2VyMiwgb2JqZWN0Myk7
CisgICAgICAgIHJldHVybiB3ZWJraXRfaW1wbGVtZW50YXRpb24oaW1wbGVtZW50YXRpb24sIGRl
bGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgaW50ZWdlcjEsIG9iamVjdDIsIGludGVn
ZXIyLCBvYmplY3QzKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVw
b3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAg
fQpAQCAtMzYwLDcgKzQyNiw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBp
bXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFCiAgICAgaWYgKCFk
ZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJu
IGltcGxlbWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgaW50ZWdl
ciwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CisgICAgICAgIHJldHVybiB3ZWJraXRfaW1w
bGVtZW50YXRpb24oaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2Jq
ZWN0MSwgaW50ZWdlciwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CiAgICAgfSBAY2F0Y2go
aWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9u
KHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTM3Miw3ICs0MzgsNyBAQCBzdGF0aWMg
aW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYs
IGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwgc2Vs
ZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVydmFsLCBvYmplY3QyLCBvYmplY3QzKTsKKyAgICAg
ICAgcmV0dXJuIHdlYmtpdF9pbXBsZW1lbnRhdGlvbihpbXBsZW1lbnRhdGlvbiwgZGVsZWdhdGUs
IHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlcnZhbCwgb2JqZWN0Miwgb2JqZWN0Myk7CiAg
ICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVn
YXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTU3Nyw3ICs2NDMs
NyBAQCBpZCBDYWxsRm9ybURlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQg
b2JqZWN0MSwgaWQgb2JqZWN0MikKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5
IHsKLSAgICAgICAgcmV0dXJuIG9iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVj
dDEsIG9iamVjdDIpOworICAgICAgICByZXR1cm4gd2Via2l0X29iamNfbXNnU2VuZChkZWxlZ2F0
ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlv
bikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3Rvciwg
ZXhjZXB0aW9uKTsKICAgICB9CkBAIC01OTAsNyArNjU2LDcgQEAgaWQgQ2FsbEZvcm1EZWxlZ2F0
ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIsIGlk
IG9iamUKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0
dXJuIG9iamNfbXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIG9i
amVjdDMsIG9iamVjdDQsIG9iamVjdDUpOworICAgICAgICByZXR1cm4gd2Via2l0X29iamNfbXNn
U2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIG9iamVjdDMsIG9iamVj
dDQsIG9iamVjdDUpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBv
cnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1MDVkYjUzMDIx
MDRlYTg0OGZiODIwMTI3ZmEyOTRiMzE2YmUwOTIxLi4yYmFmZGM1YWYxZjcwZDAwOWU2OTRlNjMz
ZTlhYTJkZTM0MjhlMWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTI1Niw3ICsyNTYsOCBAQCBzdGF0aWMgYm9vbCBuZWVkc0N1cnNvclJlY3RzU3VwcG9y
dEF0UG9pbnQoTlNXaW5kb3cqIHdpbmRvdywgTlNQb2ludCBwb2ludCkKIH0KIAogCi1zdGF0aWMg
SU1QIG9sZFNldEN1cnNvckZvck1vdXNlTG9jYXRpb25JTVA7Cit0eXBlZGVmIHZvaWQgKCpTZXRD
dXJzb3JJTVApKGlkLCBTRUwsIE5TUG9pbnQpOworc3RhdGljIFNldEN1cnNvcklNUCBvbGRTZXRD
dXJzb3JGb3JNb3VzZUxvY2F0aW9uSU1QOwogCiAvLyBPdmVycmlkaW5nIGFuIGludGVybmFsIG1l
dGhvZCBpcyBhIGhhY2s7IDxyZGFyOi8vcHJvYmxlbS83NjYyOTg3PiB0cmFja3MgZmluZGluZyBh
IGJldHRlciBzb2x1dGlvbi4KIHN0YXRpYyB2b2lkIHNldEN1cnNvcihOU1dpbmRvdyAqc2VsZiwg
U0VMIGNtZCwgTlNQb2ludCBwb2ludCkKQEAgLTI5MSw3ICsyOTIsOCBAQCAtICh2b2lkKV91cGRh
dGVMYXllckdlb21ldHJ5RnJvbVZpZXc7CiBAZW5kCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi1zdGF0aWMgSU1QIG9sZFNldE5lZWRzRGlzcGxheUluUmVjdElNUDsKK3R5cGVk
ZWYgdm9pZCAoKlNldE5lZWRzRGlzcGxheUlNUCkoaWQsIFNFTCwgTlNSZWN0KTsKK3N0YXRpYyBT
ZXROZWVkc0Rpc3BsYXlJTVAgb2xkU2V0TmVlZHNEaXNwbGF5SW5SZWN0SU1QOwogCiBzdGF0aWMg
dm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoTlNWaWV3ICpzZWxmLCBTRUwgY21kLCBOU1JlY3Qg
aW52YWxpZFJlY3QpCiB7CkBAIC01NzIsNyArNTc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAg
ICAgaWYgKCFvbGRTZXRDdXJzb3JGb3JNb3VzZUxvY2F0aW9uSU1QKSB7CiAgICAgICAgIE1ldGhv
ZCBzZXRDdXJzb3JNZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChbTlNXaW5kb3cgY2xh
c3NdLCBAc2VsZWN0b3IoX3NldEN1cnNvckZvck1vdXNlTG9jYXRpb246KSk7CiAgICAgICAgIEFT
U0VSVChzZXRDdXJzb3JNZXRob2QpOwotICAgICAgICBvbGRTZXRDdXJzb3JGb3JNb3VzZUxvY2F0
aW9uSU1QID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKHNldEN1cnNvck1ldGhvZCwgKElNUClz
ZXRDdXJzb3IpOworICAgICAgICBvbGRTZXRDdXJzb3JGb3JNb3VzZUxvY2F0aW9uSU1QID0gcmVp
bnRlcnByZXRfY2FzdDxTZXRDdXJzb3JJTVA+KG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihzZXRD
dXJzb3JNZXRob2QsIChJTVApc2V0Q3Vyc29yKSk7CiAgICAgICAgIEFTU0VSVChvbGRTZXRDdXJz
b3JGb3JNb3VzZUxvY2F0aW9uSU1QKTsKICAgICB9CiAKQEAgLTU4MCw3ICs1ODIsNyBAQCArICh2
b2lkKWluaXRpYWxpemUKICAgICBpZiAoIW9sZFNldE5lZWRzRGlzcGxheUluUmVjdElNUCkgewog
ICAgICAgICBNZXRob2Qgc2V0TmVlZHNEaXNwbGF5SW5SZWN0TWV0aG9kID0gY2xhc3NfZ2V0SW5z
dGFuY2VNZXRob2QoW05TVmlldyBjbGFzc10sIEBzZWxlY3RvcihzZXROZWVkc0Rpc3BsYXlJblJl
Y3Q6KSk7CiAgICAgICAgIEFTU0VSVChzZXROZWVkc0Rpc3BsYXlJblJlY3RNZXRob2QpOwotICAg
ICAgICBvbGRTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVAgPSBtZXRob2Rfc2V0SW1wbGVtZW50YXRp
b24oc2V0TmVlZHNEaXNwbGF5SW5SZWN0TWV0aG9kLCAoSU1QKXNldE5lZWRzRGlzcGxheUluUmVj
dCk7CisgICAgICAgIG9sZFNldE5lZWRzRGlzcGxheUluUmVjdElNUCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8U2V0TmVlZHNEaXNwbGF5SU1QPihtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24oc2V0TmVlZHNE
aXNwbGF5SW5SZWN0TWV0aG9kLCAoSU1QKXNldE5lZWRzRGlzcGxheUluUmVjdCkpOwogICAgICAg
ICBBU1NFUlQob2xkU2V0TmVlZHNEaXNwbGF5SW5SZWN0SU1QKTsKICAgICB9CiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5tbQppbmRleCA2YTAyZjU2MmRmOWNm
YzViZjNhNmJmYmU2OGQ3MDdmMzFmZDVmNGNhLi5hMDg3NjhkOGZlNWI3MjNhMWUwZDRhYTc4ZmUw
NmFhMzE1N2M3MWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QREZWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QREZWaWV3Q29udHJvbGxlci5tbQpAQCAtNTA1LDcgKzUwNSw4IEBAIGJvb2wgUERGVmll
d0NvbnRyb2xsZXI6OmZvcndhcmRTY3JvbGxXaGVlbEV2ZW50KE5TRXZlbnQgKndoZWVsRXZlbnQp
CiB9CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKLXN0YXRp
YyBJTVAgb2xkUERGVmlld1Njcm9sbFZpZXdfc2Nyb2xsV2hlZWw7Cit0eXBlZGVmIHZvaWQgKCpT
Y3JvbGxXaGVlbElNUCkoaWQsIFNFTCwgTlNFdmVudCAqKTsKK3N0YXRpYyBTY3JvbGxXaGVlbElN
UCBvbGRQREZWaWV3U2Nyb2xsVmlld19zY3JvbGxXaGVlbDsKIAogc3RhdGljIFdLUERGVmlldyAq
ZmluZEVuY2xvc2luZ1dLUERGVmlldyhOU1ZpZXcgKnZpZXcpCiB7CkBAIC01NjAsNyArNTYxLDcg
QEAgTlNCdW5kbGUqIFBERlZpZXdDb250cm9sbGVyOjpwZGZLaXRCdW5kbGUoKQogI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmIChDbGFzcyBwZGZWaWV3
U2Nyb2xsVmlld0NsYXNzID0gW3BkZktpdEJ1bmRsZSBjbGFzc05hbWVkOkAiUERGVmlld1Njcm9s
bFZpZXciXSkgewogICAgICAgICBpZiAoTWV0aG9kIHNjcm9sbFdoZWVsID0gY2xhc3NfZ2V0SW5z
dGFuY2VNZXRob2QocGRmVmlld1Njcm9sbFZpZXdDbGFzcywgQHNlbGVjdG9yKHNjcm9sbFdoZWVs
OikpKQotICAgICAgICAgICAgb2xkUERGVmlld1Njcm9sbFZpZXdfc2Nyb2xsV2hlZWwgPSBtZXRo
b2Rfc2V0SW1wbGVtZW50YXRpb24oc2Nyb2xsV2hlZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihQ
REZWaWV3U2Nyb2xsVmlld19zY3JvbGxXaGVlbCkpOworICAgICAgICAgICAgb2xkUERGVmlld1Nj
cm9sbFZpZXdfc2Nyb2xsV2hlZWwgPSByZWludGVycHJldF9jYXN0PFNjcm9sbFdoZWVsSU1QPiht
ZXRob2Rfc2V0SW1wbGVtZW50YXRpb24oc2Nyb2xsV2hlZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihQREZWaWV3U2Nyb2xsVmlld19zY3JvbGxXaGVlbCkpKTsKICAgICB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUxYTc5OTFl
YTBkZGY5YmViZWE3ZTFmOTRmNjgxYWM2OTUzYzRiZjQuLmQ0MTc4MzFkZmI5ZDg4MWU4YjE4NmU3
Zjc0ZjRjMDA4NzJhMDdiYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0yOCAgUHJhdGlrIFNvbGFua2kg
IDxwc29sYW5raUBhcHBsZS5jb20+CisKKyAgICAgICAgb2JqY19tc2dTZW5kIGFuZCBJTVAgc2hv
dWxkIGJlIGNhc3QgYXBwcm9wcmlhdGVseSBiZWZvcmUgdXNpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHJlaW50ZXJwcmV0X2Nhc3QgdG8gY2Fz
dCB0byBhcHByb3ByaWF0ZSBmdW5jdGlvbiBwb2ludGVyIHR5cGUgd2hlbiBjYWxsaW5nIG9iamNf
bXNnU2VuZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bToKKyAgICAgICAgKHN3aXp6bGVOU0ZvbnRNYW5hZ2VyTWV0aG9kcyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWN0aXZhdGVGb250cy5tbToKKyAgICAg
ICAgKFdUUik6CisgICAgICAgIChXVFI6OnN3aXp6bGVOU0ZvbnRNYW5hZ2VyTWV0aG9kcyk6CisK
IDIwMTItMDgtMjQgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5pZnkgTnVtYmVyIHRvIFN0cmluZ0ltcGwgY29udmVyc2lvbgpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDJiZDU0YmI3MGU2ODdjZTE5N2Q1
YTBlMzcxNTQ1M2U5YjJhZGI2ODUuLmFkZjEyZjE2ODM1ZGZhMmNmMWM5NDg1YzFkYjQ0N2JjMzE1
YjhjMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAg
LTM0NCw4ICszNDQsOSBAQCBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250RmFtaWx5U2V0KCkKICAg
ICByZXR1cm4gZm9udEZhbWlsaXlTZXQ7CiB9CiAKLXN0YXRpYyBJTVAgYXBwS2l0QXZhaWxhYmxl
Rm9udEZhbWlsaWVzSU1QOwotc3RhdGljIElNUCBhcHBLaXRBdmFpbGFibGVGb250c0lNUDsKK3R5
cGVkZWYgaWQgKCpPYmpjTXNnU2VuZE5vQXJncykoaWQsIFNFTCk7CitzdGF0aWMgT2JqY01zZ1Nl
bmROb0FyZ3MgYXBwS2l0QXZhaWxhYmxlRm9udEZhbWlsaWVzSU1QOworc3RhdGljIE9iamNNc2dT
ZW5kTm9BcmdzIGFwcEtpdEF2YWlsYWJsZUZvbnRzSU1QOwogCiBzdGF0aWMgTlNBcnJheSAqZHJ0
X05TRm9udE1hbmFnZXJfYXZhaWxhYmxlRm9udEZhbWlsaWVzKGlkIHNlbGYsIFNFTCBfY21kKQog
ewpAQCAtMzkxLDcgKzM5Miw3IEBAIHN0YXRpYyB2b2lkIHN3aXp6bGVOU0ZvbnRNYW5hZ2VyTWV0
aG9kcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXBwS2l0QXZhaWxhYmxl
Rm9udEZhbWlsaWVzSU1QID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKGF2YWlsYWJsZUZvbnRG
YW1pbGllc01ldGhvZCwgKElNUClkcnRfTlNGb250TWFuYWdlcl9hdmFpbGFibGVGb250RmFtaWxp
ZXMpOworICAgIGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1pbGllc0lNUCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8T2JqY01zZ1NlbmROb0FyZ3M+KG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihhdmFpbGFibGVG
b250RmFtaWxpZXNNZXRob2QsIChJTVApZHJ0X05TRm9udE1hbmFnZXJfYXZhaWxhYmxlRm9udEZh
bWlsaWVzKSk7CiAKICAgICBNZXRob2QgYXZhaWxhYmxlRm9udHNNZXRob2QgPSBjbGFzc19nZXRJ
bnN0YW5jZU1ldGhvZChvYmpjX2dldENsYXNzKCJOU0ZvbnRNYW5hZ2VyIiksIEBzZWxlY3Rvcihh
dmFpbGFibGVGb250cykpOwogICAgIEFTU0VSVChhdmFpbGFibGVGb250c01ldGhvZCk7CkBAIC00
MDAsNyArNDAxLDcgQEAgc3RhdGljIHZvaWQgc3dpenpsZU5TRm9udE1hbmFnZXJNZXRob2RzKCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhcHBLaXRBdmFpbGFibGVGb250c0lN
UCA9IG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihhdmFpbGFibGVGb250c01ldGhvZCwgKElNUClk
cnRfTlNGb250TWFuYWdlcl9hdmFpbGFibGVGb250cyk7CisgICAgYXBwS2l0QXZhaWxhYmxlRm9u
dHNJTVAgPSByZWludGVycHJldF9jYXN0PE9iamNNc2dTZW5kTm9BcmdzPihtZXRob2Rfc2V0SW1w
bGVtZW50YXRpb24oYXZhaWxhYmxlRm9udHNNZXRob2QsIChJTVApZHJ0X05TRm9udE1hbmFnZXJf
YXZhaWxhYmxlRm9udHMpKTsKIH0KIAogc3RhdGljIHZvaWQgYWN0aXZhdGVUZXN0aW5nRm9udHMo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWN0aXZhdGVGb250cy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjdGl2YXRlRm9udHMubW0KaW5kZXggNTdhMDhjYTQ3YWU4OTYxYzMwYmViOTdjMmE0NWZi
OTA5YjYyZDI0Mi4uNTI0YmVjY2U2NmY3MDljODgyZWNjN2E2NGI4Nzg2YmRhNjYzYjZlMCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWN0aXZh
dGVGb250cy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY3RpdmF0ZUZvbnRzLm1tCkBAIC0xNjEsOCArMTYxLDkgQEAgc3RhdGljIE5TU2V0ICphbGxv
d2VkRm9udEZhbWlseVNldCgpCiAgICAgcmV0dXJuIGZvbnRGYW1pbGl5U2V0OwogfQogCi1zdGF0
aWMgSU1QIGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1pbGllc0lNUDsKLXN0YXRpYyBJTVAgYXBwS2l0
QXZhaWxhYmxlRm9udHNJTVA7Cit0eXBlZGVmIGlkICgqT2JqY01zZ1NlbmROb0FyZ3MpKGlkLCBT
RUwpOworc3RhdGljIE9iamNNc2dTZW5kTm9BcmdzIGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1pbGll
c0lNUDsKK3N0YXRpYyBPYmpjTXNnU2VuZE5vQXJncyBhcHBLaXRBdmFpbGFibGVGb250c0lNUDsK
IAogc3RhdGljIE5TQXJyYXkgKnd0cl9OU0ZvbnRNYW5hZ2VyX2F2YWlsYWJsZUZvbnRGYW1pbGll
cyhpZCBzZWxmLCBTRUwgX2NtZCkKIHsKQEAgLTIwOCw3ICsyMDksNyBAQCBzdGF0aWMgdm9pZCBz
d2l6emxlTlNGb250TWFuYWdlck1ldGhvZHMoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1pbGllc0lNUCA9IG1ldGhvZF9zZXRJbXBsZW1l
bnRhdGlvbihhdmFpbGFibGVGb250RmFtaWxpZXNNZXRob2QsIChJTVApd3RyX05TRm9udE1hbmFn
ZXJfYXZhaWxhYmxlRm9udEZhbWlsaWVzKTsKKyAgICBhcHBLaXRBdmFpbGFibGVGb250RmFtaWxp
ZXNJTVAgPSByZWludGVycHJldF9jYXN0PE9iamNNc2dTZW5kTm9BcmdzPihtZXRob2Rfc2V0SW1w
bGVtZW50YXRpb24oYXZhaWxhYmxlRm9udEZhbWlsaWVzTWV0aG9kLCAoSU1QKXd0cl9OU0ZvbnRN
YW5hZ2VyX2F2YWlsYWJsZUZvbnRGYW1pbGllcykpOwogCiAgICAgTWV0aG9kIGF2YWlsYWJsZUZv
bnRzTWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2Qob2JqY19nZXRDbGFzcygiTlNGb250
TWFuYWdlciIpLCBAc2VsZWN0b3IoYXZhaWxhYmxlRm9udHMpKTsKICAgICBBU1NFUlQoYXZhaWxh
YmxlRm9udHNNZXRob2QpOwpAQCAtMjE3LDcgKzIxOCw3IEBAIHN0YXRpYyB2b2lkIHN3aXp6bGVO
U0ZvbnRNYW5hZ2VyTWV0aG9kcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
YXBwS2l0QXZhaWxhYmxlRm9udHNJTVAgPSBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24oYXZhaWxh
YmxlRm9udHNNZXRob2QsIChJTVApd3RyX05TRm9udE1hbmFnZXJfYXZhaWxhYmxlRm9udHMpOwor
ICAgIGFwcEtpdEF2YWlsYWJsZUZvbnRzSU1QID0gcmVpbnRlcnByZXRfY2FzdDxPYmpjTXNnU2Vu
ZE5vQXJncz4obWV0aG9kX3NldEltcGxlbWVudGF0aW9uKGF2YWlsYWJsZUZvbnRzTWV0aG9kLCAo
SU1QKXd0cl9OU0ZvbnRNYW5hZ2VyX2F2YWlsYWJsZUZvbnRzKSk7CiB9CiAKIHZvaWQgYWN0aXZh
dGVGb250cygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161524</attachid>
            <date>2012-08-30 11:33:34 -0700</date>
            <delta_ts>2012-08-31 12:37:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95242-20120830113323.patch</filename>
            <type>text/plain</type>
            <size>35388</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZlNDIxMjhhODUzMzRjZWZmMjAzYjAz
YzMxMmIyNTA2MTQxMGJlMjUuLjQ0YjVhYTljMGQxYjQ4MGViNWQ4OWE3NDI2M2RlZTI0ZWQ3MGNm
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDgtMzAgIFByYXRpayBTb2xhbmtpICA8cHNv
bGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBi
ZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgdGVtcGxhdGVzIHd0Zk9iamNNc2dTZW5k
IGFuZCB3dGZDYWxsSU1QIHRoYXQgZG8gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIGNhc3RzIHRv
IGNvcnJlY3RseSB0eXBlZCBmdW5jdGlvbiBwb2ludGVycyBiZWZvcmUgY2FsbGluZyBvYmpjX21z
Z1NlbmQKKyAgICAgICAgYW5kIElNUCBtZXRob2RzIGRpcmVjdGx5LgorCisgICAgICAgICogd3Rm
L0Z1bmN0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6Uik6IFVzZSB3dGZPYmpjTXNnU2VuZC4KKyAg
ICAgICAgKiB3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaDogQWRkZWQuCisgICAgICAgICh3dGZPYmpj
TXNnU2VuZCk6CisgICAgICAgICh3dGZDYWxsSU1QKToKKwogMjAxMi0wOC0yOSAgRG9taW5payBS
w7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgogCiAgICAgICAgIFRoZSAy
ZC5pbWFnZURhdGEub2JqZWN0LnJvdW5kIGNhbnZhcyB0ZXN0IGlzIGZhaWxpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3MTI4N2QzYTgwMWFmZWZiZWEyMDBiMzBiMzVhMTRkZDM3NTg4YzFmLi4zMzI5MGE3ZDEy
M2U1ZjE4ZDE5NWQ3NTE2ZGJhNzdmZDUwYzNlZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTItMDgtMzAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisg
ICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJvcHJpYXRlbHkg
YmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSB3dGZPYmpjTXNnU2VuZCBhbmQgd3RmQ2FsbElNUCB0ZW1wbGF0ZXMgd2hpY2ggZG8g
YXBwcm9wcmlhdGUgY2FzdHMKKyAgICAgICAgdG8gYSBmdW5jdGlvbiBwb2ludGVyIHdpdGggcmln
aHQgdHlwZXMgd2hlbiBjYWxsaW5nIG9iamNfbXNnU2VuZCBhbmQgYW4KKyAgICAgICAgSU1QIG1l
dGhvZCBkaXJlY3RseS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBmdW5jdGlv
bmFsIGNoYW5nZXMuCisKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbToKKyAgICAgICAgKGRl
YWxsb2NDYWxsYmFjayk6CisKIDIwMTItMDgtMjkgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hp
Y3VAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhZGVyc10gVXNlIENTUyB0cmFuc2Zvcm0g
cGFyc2luZyBjb2RlIHdpdGhpbiBDU1MgU2hhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMTFmMDM1
OGRiNDk3NDUzYWUyMWNiMzM3M2FkYzJmMzBkMTIzZDkxZC4uMmM3OTgyMWIyOGQzMjk0Y2RhMTJk
MmFlZjAyMTMzNTkxMDhkZTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDEyLTA4LTMwICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBvYmpjX21zZ1NlbmQgYW5kIElNUCBzaG91bGQgYmUgY2FzdCBhcHByb3ByaWF0ZWx5IGJlZm9y
ZSB1c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2Ugd3RmT2JqY01zZ1NlbmQgYW5kIHd0ZkNhbGxJTVAgdGVtcGxhdGVzIHdoaWNoIGRvIGFwcHJv
cHJpYXRlIGNhc3RzCisgICAgICAgIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoIHJpZ2h0IHR5
cGVzIHdoZW4gY2FsbGluZyBvYmpjX21zZ1NlbmQgYW5kIGFuCisgICAgICAgIElNUCBtZXRob2Qg
ZGlyZWN0bHkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAoV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE6OmNsZWFyKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbToK
KyAgICAgICAgKFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpnZXRQcm92aWRlcik6CisgICAg
ICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbToKKyAgICAg
ICAgKENhbGxEZWxlZ2F0ZSk6CisgICAgICAgIChDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFu
KToKKyAgICAgICAgKENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4pOgor
ICAgICAgICAoQ2FsbEZvcm1EZWxlZ2F0ZSk6CisgICAgICAgIChDYWxsRm9ybURlbGVnYXRlUmV0
dXJuaW5nQm9vbGVhbik6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKHNldEN1cnNvcik6CisgICAgICAgIChzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorCiAyMDEy
LTA4LTI5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBZGQg
aWNvblVSTCB0byBXZWJOb3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzNGU1OWQ5MGNiYTEzNzE4
Y2Y5YmFjNTM2Nzc2YjMzZmY4MWY1MjNhLi5lOWM4Njc2NDIzZDhjM2JiNDBlZTA0MDUzMGUzZjhi
ZWI3OTgzOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMzAgIFByYXRp
ayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIG9iamNfbXNnU2VuZCBh
bmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB3dGZPYmpjTXNnU2Vu
ZCBhbmQgd3RmQ2FsbElNUCB0ZW1wbGF0ZXMgd2hpY2ggZG8gYXBwcm9wcmlhdGUgY2FzdHMKKyAg
ICAgICAgdG8gYSBmdW5jdGlvbiBwb2ludGVyIHdpdGggcmlnaHQgdHlwZXMgd2hlbiBjYWxsaW5n
IG9iamNfbXNnU2VuZCBhbmQgYW4KKyAgICAgICAgSU1QIG1ldGhvZCBkaXJlY3RseS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZWaWV3U2Nyb2xsVmlld19zY3JvbGxXaGVlbCk6CisKIDIwMTItMDgtMjkgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IE5v
dCBzZW5kaW5nIE5QUF9TZXRXaW5kb3cgaXMgY2F1c2luZyBGbGFzaCB0byBub3QgdGhyb3R0bGUg
aXRzZWxmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GdW5jdGlvbmFsLmgKaW5kZXggNDhkOWYzMjFlYjg2ZGVhNDczNjY0ZmEwZWRmODQx
YTI2ZGMwOGZjOS4uMjc1MjcxNjdhODQ1ZDM2ODc4ZjhhZDVjZGIxNGQzZDUyNjFkYmYyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0Z1bmN0aW9uYWwuaApAQCAtMzQsNiArMzQsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykgJiYgQ09N
UElMRVJfU1VQUE9SVFMoQkxPQ0tTKQogI2luY2x1ZGUgPEJsb2NrLmg+CiAjaW5jbHVkZSA8b2Jq
Yy9vYmpjLXJ1bnRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNl
bmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTYzNCw4ICs2MzUsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vCiAgICAgICAgIC8vICAgZGlzcGF0Y2hfYXN5bmMocXVldWUsIGJpbmQoLi4uKSk7CiAg
ICAgICAgIC8vCi0gICAgICAgIGlkIGNvcGllZEJsb2NrID0gb2JqY19tc2dTZW5kKChpZClibG9j
aywgc2VsX3JlZ2lzdGVyTmFtZSgiY29weSIpKTsKLSAgICAgICAgaWQgYXV0b3JlbGVhc2VkQmxv
Y2sgPSBvYmpjX21zZ1NlbmQoY29waWVkQmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImF1dG9yZWxl
YXNlIikpOworICAgICAgICBpZCBjb3BpZWRCbG9jayA9IHd0Zk9iamNNc2dTZW5kKChpZClibG9j
aywgc2VsX3JlZ2lzdGVyTmFtZSgiY29weSIpKTsKKyAgICAgICAgaWQgYXV0b3JlbGVhc2VkQmxv
Y2sgPSB3dGZPYmpjTXNnU2VuZChjb3BpZWRCbG9jaywgc2VsX3JlZ2lzdGVyTmFtZSgiYXV0b3Jl
bGVhc2UiKSk7CiAgICAgICAgIHJldHVybiAoQmxvY2tUeXBlKWF1dG9yZWxlYXNlZEJsb2NrOwog
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT2JqY1J1bnRpbWVFeHRy
YXMuaCBiL1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0cmFzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg3
OTA2M2EwOWVjNmJmZTZjZmEyMjRiNjRjNTUyZjc2ZGVhMjA3YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0cmFzLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXVEZfT2JqY1J1bnRpbWVFeHRyYXNfaAorI2RlZmluZSBXVEZf
T2JqY1J1bnRpbWVFeHRyYXNfaAorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQ+CitS
ZXRUeXBlIHd0Zk9iamNNc2dTZW5kKGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yKQoreworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFJldFR5cGUgKCopKGlkLCBTRUwpPihvYmpjX21zZ1NlbmQp
KHRhcmdldCwgc2VsZWN0b3IpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQs
IHR5cGVuYW1lIEFyZzFUeXBlPgorUmV0VHlwZSB3dGZPYmpjTXNnU2VuZChpZCB0YXJnZXQsIFNF
TCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmcxVHlwZSk+KG9iamNfbXNnU2VuZCkodGFyZ2V0LCBz
ZWxlY3RvciwgYXJnMSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUgPSBpZCwgdHlw
ZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlPgorUmV0VHlwZSB3dGZPYmpjTXNnU2Vu
ZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJnMlR5cGUgYXJnMikK
K3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmcx
VHlwZSwgQXJnMlR5cGUpPihvYmpjX21zZ1NlbmQpKHRhcmdldCwgc2VsZWN0b3IsIGFyZzEsIGFy
ZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQsIHR5cGVuYW1lIEFyZzFU
eXBlLCB0eXBlbmFtZSBBcmcyVHlwZSwgdHlwZW5hbWUgQXJnM1R5cGU+CitSZXRUeXBlIHd0Zk9i
amNNc2dTZW5kKGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yLCBBcmcxVHlwZSBhcmcxLCBBcmcyVHlw
ZSBhcmcyLCBBcmczVHlwZSBhcmczKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFJl
dFR5cGUgKCopKGlkLCBTRUwsIEFyZzFUeXBlLCBBcmcyVHlwZSwgQXJnM1R5cGUpPihvYmpjX21z
Z1NlbmQpKHRhcmdldCwgc2VsZWN0b3IsIGFyZzEsIGFyZzIsIGFyZzMpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQsIHR5cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBBcmcy
VHlwZSwgdHlwZW5hbWUgQXJnM1R5cGUsIHR5cGVuYW1lIEFyZzRUeXBlPgorUmV0VHlwZSB3dGZP
YmpjTXNnU2VuZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJnMlR5
cGUgYXJnMiwgQXJnM1R5cGUgYXJnMywgQXJnNFR5cGUgYXJnNCkKK3sKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmcxVHlwZSwgQXJnMlR5cGUsIEFy
ZzNUeXBlLCBBcmc0VHlwZSk+KG9iamNfbXNnU2VuZCkodGFyZ2V0LCBzZWxlY3RvciwgYXJnMSwg
YXJnMiwgYXJnMywgYXJnNCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUgPSBpZCwg
dHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFtZSBBcmczVHlwZSwg
dHlwZW5hbWUgQXJnNFR5cGUsIHR5cGVuYW1lIEFyZzVUeXBlPgorUmV0VHlwZSB3dGZPYmpjTXNn
U2VuZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJnMlR5cGUgYXJn
MiwgQXJnM1R5cGUgYXJnMywgQXJnNFR5cGUgYXJnNCwgQXJnNVR5cGUgYXJnNSkKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmcxVHlwZSwgQXJn
MlR5cGUsIEFyZzNUeXBlLCBBcmc0VHlwZSwgQXJnNVR5cGUpPihvYmpjX21zZ1NlbmQpKHRhcmdl
dCwgc2VsZWN0b3IsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQ+CitSZXRUeXBlIHd0ZkNhbGxJTVAoSU1QIGltcGxlbWVu
dGF0aW9uLCBpZCB0YXJnZXQsIFNFTCBzZWxlY3RvcikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMKT4oaW1wbGVtZW50YXRpb24pKHRhcmdldCwgc2Vs
ZWN0b3IpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQsIHR5cGVuYW1lIEFy
ZzFUeXBlPgorUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0
LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBlIGFyZzEpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8UmV0VHlwZSAoKikoaWQsIFNFTCwgQXJnMVR5cGUpPihpbXBsZW1lbnRhdGlvbikodGFy
Z2V0LCBzZWxlY3RvciwgYXJnMSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUgPSBp
ZCwgdHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlPgorUmV0VHlwZSB3dGZDYWxs
SU1QKElNUCBpbXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBl
IGFyZzEsIEFyZzJUeXBlIGFyZzIpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0
VHlwZSAoKikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlKT4oaW1wbGVtZW50YXRpb24pKHRh
cmdldCwgc2VsZWN0b3IsIGFyZzEsIGFyZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRU
eXBlID0gaWQsIHR5cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBBcmcyVHlwZSwgdHlwZW5hbWUg
QXJnM1R5cGU+CitSZXRUeXBlIHd0ZkNhbGxJTVAoSU1QIGltcGxlbWVudGF0aW9uLCBpZCB0YXJn
ZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJnMlR5cGUgYXJnMiwgQXJnM1R5cGUg
YXJnMykKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VM
LCBBcmcxVHlwZSwgQXJnMlR5cGUsIEFyZzNUeXBlKT4oaW1wbGVtZW50YXRpb24pKHRhcmdldCwg
c2VsZWN0b3IsIGFyZzEsIGFyZzIsIGFyZzMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRU
eXBlID0gaWQsIHR5cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBBcmcyVHlwZSwgdHlwZW5hbWUg
QXJnM1R5cGUsIHR5cGVuYW1lIEFyZzRUeXBlPgorUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBs
ZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBlIGFyZzEsIEFyZzJU
eXBlIGFyZzIsIEFyZzNUeXBlIGFyZzMsIEFyZzRUeXBlIGFyZzQpCit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8UmV0VHlwZSAoKikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBB
cmczVHlwZSwgQXJnNFR5cGUpPihpbXBsZW1lbnRhdGlvbikodGFyZ2V0LCBzZWxlY3RvciwgYXJn
MSwgYXJnMiwgYXJnMywgYXJnNCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUgPSBp
ZCwgdHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFtZSBBcmczVHlw
ZSwgdHlwZW5hbWUgQXJnNFR5cGUsIHR5cGVuYW1lIEFyZzVUeXBlPgorUmV0VHlwZSB3dGZDYWxs
SU1QKElNUCBpbXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBl
IGFyZzEsIEFyZzJUeXBlIGFyZzIsIEFyZzNUeXBlIGFyZzMsIEFyZzRUeXBlIGFyZzQsIEFyZzVU
eXBlIGFyZzUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0VHlwZSAoKikoaWQs
IFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBBcmczVHlwZSwgQXJnNFR5cGUsIEFyZzVUeXBlKT4o
aW1wbGVtZW50YXRpb24pKHRhcmdldCwgc2VsZWN0b3IsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQs
IGFyZzUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQsIHR5cGVuYW1lIEFy
ZzFUeXBlLCB0eXBlbmFtZSBBcmcyVHlwZSwgdHlwZW5hbWUgQXJnM1R5cGUsIHR5cGVuYW1lIEFy
ZzRUeXBlLCB0eXBlbmFtZSBBcmc1VHlwZSwgdHlwZW5hbWUgQXJnNlR5cGU+CitSZXRUeXBlIHd0
ZkNhbGxJTVAoSU1QIGltcGxlbWVudGF0aW9uLCBpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJn
MVR5cGUgYXJnMSwgQXJnMlR5cGUgYXJnMiwgQXJnM1R5cGUgYXJnMywgQXJnNFR5cGUgYXJnNCwg
QXJnNVR5cGUgYXJnNSwgQXJnNlR5cGUgYXJnNikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmcxVHlwZSwgQXJnMlR5cGUsIEFyZzNUeXBlLCBB
cmc0VHlwZSwgQXJnNVR5cGUsIEFyZzZUeXBlKT4oaW1wbGVtZW50YXRpb24pKHRhcmdldCwgc2Vs
ZWN0b3IsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYpOworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA3NjI0NWRh
YjZlODk1OWIyNTFhODg2YTc1Y2Y0ZTU3OWFkMzNiNTRlLi5iZDhlZTQ3MDRlMjIzZWQzNDQwM2Jh
YTU4ZDQ5ZDJmOGNiMzk2NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgogI2luY2x1ZGUgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxMiw3ICs0
MTMsNyBAQCBzdGF0aWMgdm9pZCBzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwo
TlNTY3JvbGxWaWV3ICpzZWxmLCBTRUwgc2VsZWN0bwogCiAgICAgaWYgKHNob3VsZFJldGFpblNl
bGYpCiAgICAgICAgIFtzZWxmIHJldGFpbl07Ci0gICAgb3JpZ2luYWxOU1Njcm9sbFZpZXdTY3Jv
bGxXaGVlbChzZWxmLCBzZWxlY3RvciwgZXZlbnQpOworICAgIHd0ZkNhbGxJTVA8dm9pZD4ob3Jp
Z2luYWxOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbCwgc2VsZiwgc2VsZWN0b3IsIGV2ZW50KTsKICAg
ICBpZiAoc2hvdWxkUmV0YWluU2VsZikKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMubW0KaW5kZXgg
NDFiNWVjNTI2OWQwNjg4NmJlODliZDc0YjM0OTBjNmNmYThmNGM4Zi4uZDM1N2Y5ODAwOTVkMWI0
MjExZmRmNjdmOGY1OWI1MTAwZGUwZDE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVPYmpDRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
PHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtNjMs
NyArNjQsNyBAQCBzdGF0aWMgdm9pZCBkZWFsbG9jQ2FsbGJhY2sodm9pZCogY29udGV4dCkKICAg
ICBNZXRob2QgbWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QocGFpci0+Zmlyc3QsIEBz
ZWxlY3RvcihkZWFsbG9jKSk7CiAgICAgCiAgICAgSU1QIGltcCA9IG1ldGhvZF9nZXRJbXBsZW1l
bnRhdGlvbihtZXRob2QpOwotICAgIGltcChwYWlyLT5zZWNvbmQsIEBzZWxlY3RvcihkZWFsbG9j
KSk7CisgICAgd3RmQ2FsbElNUDx2b2lkPihpbXAsIHBhaXItPnNlY29uZCwgQHNlbGVjdG9yKGRl
YWxsb2MpKTsKICAgICAKICAgICBkZWxldGUgcGFpcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YS5oCmluZGV4IDZjM2YxNjYwM2EyNzk2MGQxZjQwMDkwNjlhM2RjZDFlNjY3ZDE0YjcuLjliZGI1
MTU2MGJjMGViOTc0ZTgxYWExYjc3ZGVkOWZkYTlhYTYwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEuaApAQCAtMjgsMTMgKzI4LDE0IEBACiAKICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg+CisjaW1wb3J0
IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
Y2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEgewogcHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhKGlkIHdlYkRvY3VtZW50VmlldykgOiBtX3dlYkRvY3VtZW50Vmlldyh3ZWJEb2N1bWVudFZp
ZXcpIHsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpIHsgb2JqY19tc2dTZW5kKG1f
d2ViRG9jdW1lbnRWaWV3LmdldCgpLCBAc2VsZWN0b3IoY2xvc2VJZk5vdEN1cnJlbnRWaWV3KSk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKSB7IHd0Zk9iamNNc2dTZW5kPHZvaWQ+KG1fd2Vi
RG9jdW1lbnRWaWV3LmdldCgpLCBAc2VsZWN0b3IoY2xvc2VJZk5vdEN1cnJlbnRWaWV3KSk7IH0K
IAogICAgIGlkIHdlYkRvY3VtZW50VmlldygpIHsgcmV0dXJuIG1fd2ViRG9jdW1lbnRWaWV3Lmdl
dCgpOyB9CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQppbmRleCBhYWEwMzFh
NGI4MTcwNjcxYWM5ZDFiNDg1Y2U4NmE1ZTlmNWVlMWZkLi42NjljMGMyODgwYjAzY2Y4MTgzZWVk
OGIzMTk4ZWE2ZDcwOWVmY2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQpAQCAtMjks
NiArMjksNyBAQAogI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oIgogI2lt
cG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgor
I2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC03MCw3ICs3MSw3IEBAIGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpnZXRQcm92aWRlcigpIGNvbnN0CiAgICAgaWYg
KCFtX3Byb3ZpZGVyKSB7CiAgICAgICAgIG1fcHJvdmlkZXIgPSBbbV93ZWJWaWV3IF9kZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyXTsKICAgICAgICAgaWYgKFttX3Byb3ZpZGVyIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Q29udHJvbGxlcjopXSkKLSAgICAgICAgICAgIG9iamNfbXNn
U2VuZChtX3Byb3ZpZGVyLCBAc2VsZWN0b3Ioc2V0Q29udHJvbGxlcjopLCBtX2NvbnRyb2xsZXIp
OworICAgICAgICAgICAgd3RmT2JqY01zZ1NlbmQ8dm9pZD4obV9wcm92aWRlciwgQHNlbGVjdG9y
KHNldENvbnRyb2xsZXI6KSwgbV9jb250cm9sbGVyKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcHJv
dmlkZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQppbmRleCAxNWY2ZGZmYTJlMGI2OGRj
NGYyNGE1MjhjZjc4YjE1OGM5MzJjZmFmLi5mNTQwNzYzNjVmZWY4ZjNkOTk3ZDc3ODViMzA2YWUx
YTE0MTA3ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbXBvcnQgIldlYlZpZXcuaCIKICNpbXBvcnQgIldlYlZpZXdEYXRhLmgiCiAjaW1wb3J0IDxv
YmpjL29iamMtcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAK
IEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGlu
ZykKIApAQCAtODQsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJW
aWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yKQogICAgIGlmICghZGVsZWdhdGUg
fHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1
cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gb2JqY19tc2dTZW5kKGRlbGVnYXRl
LCBzZWxlY3Rvciwgc2VsZik7CisgICAgICAgIHJldHVybiB3dGZPYmpjTXNnU2VuZChkZWxlZ2F0
ZSwgc2VsZWN0b3IsIHNlbGYpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAg
ICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsK
ICAgICB9CkBAIC05Niw3ICs5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdl
YlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAgICAgaWYg
KCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21zZ1Nl
bmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QpOworICAgICAgICByZXR1cm4gd3Rm
T2JqY01zZ1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QpOwogICAgIH0gQGNh
dGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2Vw
dGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0xMDgsNyArMTA5LDcgQEAgc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNF
TCBzZWxlY3RvciwgTlNSZWN0IHIKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5
IHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aWQgKCopKGlkLCBTRUwsIFdlYlZp
ZXcgKiwgTlNSZWN0KT4ob2JqY19tc2dTZW5kKShkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIHJl
Y3QpOworICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBz
ZWxmLCByZWN0KTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0
RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpA
QCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcg
KnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAgICAgaWYgKCFkZWxl
Z2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21zZ1NlbmQoZGVs
ZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyKTsKKyAgICAgICAgcmV0dXJu
IHd0Zk9iamNNc2dTZW5kKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0
Mik7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRl
ZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTEzMiw3
ICsxMzMsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBp
ZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplYwogICAgIGlmICghZGVsZWdhdGUgfHwg
IVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gb2JqY19tc2dTZW5kKGRlbGVnYXRlLCBz
ZWxlY3Rvciwgc2VsZiwgb2JqZWN0LCBib29sZWFuKTsKKyAgICAgICAgcmV0dXJuIHd0Zk9iamNN
c2dTZW5kKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0LCBib29sZWFuKTsKICAgICB9
IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVF
eGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMTQ0LDcgKzE0NSw3IEBA
IHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRl
LCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
QHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21zZ1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBz
ZWxmLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzKTsKKyAgICAgICAgcmV0dXJuIHd0Zk9iamNN
c2dTZW5kKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0
Myk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRl
ZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTE1Niw3
ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBp
ZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplYwogICAgIGlmICghZGVsZWdhdGUgfHwg
IVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gb2JqY19tc2dTZW5kKGRlbGVnYXRlLCBz
ZWxlY3Rvciwgc2VsZiwgb2JqZWN0LCBpbnRlZ2VyKTsKKyAgICAgICAgcmV0dXJuIHd0Zk9iamNN
c2dTZW5kKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0LCBpbnRlZ2VyKTsKICAgICB9
IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVF
eGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMTgwLDcgKzE4MSw3IEBA
IHN0YXRpYyBpbmxpbmUgQk9PTCBDYWxsRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVz
dWx0LCBXZWJWaWV3ICpzZWxmLCBpZCBkCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJPT0wgKCopKGlkLCBT
RUwsIFdlYlZpZXcgKik+KG9iamNfbXNnU2VuZCkoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmKTsK
KyAgICAgICAgcmV0dXJuIHd0Zk9iamNNc2dTZW5kPEJPT0w+KGRlbGVnYXRlLCBzZWxlY3Rvciwg
c2VsZik7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2Nh
cmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTE5
Miw3ICsxOTMsNyBAQCBzdGF0aWMgaW5saW5lIEJPT0wgQ2FsbERlbGVnYXRlUmV0dXJuaW5nQm9v
bGVhbihCT09MIHJlc3VsdCwgV2ViVmlldyAqc2VsZiwgaWQgZAogICAgIGlmICghZGVsZWdhdGUg
fHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxC
T09MICgqKShpZCwgU0VMLCBXZWJWaWV3ICosIGlkKT4ob2JqY19tc2dTZW5kKShkZWxlZ2F0ZSwg
c2VsZWN0b3IsIHNlbGYsIG9iamVjdCk7CisgICAgICAgIHJldHVybiB3dGZPYmpjTXNnU2VuZDxC
T09MPihkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdCk7CiAgICAgfSBAY2F0Y2goaWQg
ZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNl
bGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTIwNCw3ICsyMDUsNyBAQCBzdGF0aWMgaW5s
aW5lIEJPT0wgQ2FsbERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgV2ViVmll
dyAqc2VsZiwgaWQgZAogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIEB0cnkgewot
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCT09MICgqKShpZCwgU0VMLCBXZWJWaWV3
ICosIGlkLCBCT09MKT4ob2JqY19tc2dTZW5kKShkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9i
amVjdCwgYm9vbGVhbik7CisgICAgICAgIHJldHVybiB3dGZPYmpjTXNnU2VuZDxCT09MPihkZWxl
Z2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdCwgYm9vbGVhbik7CiAgICAgfSBAY2F0Y2goaWQg
ZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNl
bGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTIxNiw3ICsyMTcsNyBAQCBzdGF0aWMgaW5s
aW5lIEJPT0wgQ2FsbERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgV2ViVmll
dyAqc2VsZiwgaWQgZAogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIEB0cnkgewot
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCT09MICgqKShpZCwgU0VMLCBXZWJWaWV3
ICosIGlkLCBCT09MLCBpZCk+KG9iamNfbXNnU2VuZCkoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxm
LCBvYmplY3QsIGJvb2xlYW4sIG9iamVjdDIpOworICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1Nl
bmQ8Qk9PTD4oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QsIGJvb2xlYW4sIG9iamVj
dDIpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJk
ZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0yMjgs
NyArMjI5LDcgQEAgc3RhdGljIGlubGluZSBCT09MIENhbGxEZWxlZ2F0ZVJldHVybmluZ0Jvb2xl
YW4oQk9PTCByZXN1bHQsIFdlYlZpZXcgKnNlbGYsIGlkIGQKICAgICBpZiAoIWRlbGVnYXRlIHx8
ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Qk9P
TCAoKikoaWQsIFNFTCwgV2ViVmlldyAqLCBpZCwgaWQpPihvYmpjX21zZ1NlbmQpKGRlbGVnYXRl
LCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Mik7CisgICAgICAgIHJldHVybiB3dGZP
YmpjTXNnU2VuZDxCT09MPihkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVj
dDIpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJk
ZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0yNDAs
NyArMjQxLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0
aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50
YXRpb24oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmKTsKKyAgICAgICAgcmV0dXJuIHd0ZkNhbGxJ
TVAoaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZik7CiAgICAgfSBAY2F0
Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0
aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTI1Miw3ICsyNTMsNyBAQCBzdGF0
aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNl
bGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwg
c2VsZWN0b3IsIHNlbGYsIG9iamVjdCk7CisgICAgICAgIHJldHVybiB3dGZDYWxsSU1QKGltcGxl
bWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdCk7CiAgICAgfSBAY2F0
Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0
aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTI2NCw3ICsyNjUsNyBAQCBzdGF0
aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNl
bGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwg
c2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIpOworICAgICAgICByZXR1cm4gd3RmQ2Fs
bElNUChpbXBsZW1lbnRhdGlvbiwgZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBv
YmplY3QyKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlz
Y2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAt
Mjc2LDcgKzI3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1l
bnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFCiAgICAgaWYgKCFkZWxlZ2F0
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIGltcGxl
bWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Miwgb2Jq
ZWN0Myk7CisgICAgICAgIHJldHVybiB3dGZDYWxsSU1QKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0
ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIsIG9iamVjdDMpOwogICAgIH0gQGNh
dGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2Vw
dGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0yODgsNyArMjg5LDcgQEAgc3Rh
dGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpz
ZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb24oZGVsZWdhdGUs
IHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzLCBvYmplY3Q0KTsKKyAg
ICAgICAgcmV0dXJuIHd0ZkNhbGxJTVAoaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rv
ciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CiAgICAgfSBAY2F0
Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0
aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTMwMCw3ICszMDEsNyBAQCBzdGF0
aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNl
bGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwg
c2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIpOworICAgICAgICByZXR1
cm4gd3RmQ2FsbElNUChpbXBsZW1lbnRhdGlvbiwgZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBv
YmplY3QxLCBpbnRlZ2VyLCBvYmplY3QyKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsK
ICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2Vw
dGlvbik7CiAgICAgfQpAQCAtMzEyLDcgKzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERl
bGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNF
CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAg
ICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2Jq
ZWN0MSwgaW50ZWdlcjEsIGludGVnZXIyLCBvYmplY3QyKTsKKyAgICAgICAgcmV0dXJuIHd0ZkNh
bGxJTVAoaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwg
aW50ZWdlcjEsIGludGVnZXIyLCBvYmplY3QyKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24p
IHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4
Y2VwdGlvbik7CiAgICAgfQpAQCAtMzI0LDcgKzMyNSw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2Fs
bERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUs
IFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsK
LSAgICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwg
b2JqZWN0MSwgYm9vbGVhbiwgaW50ZWdlcjEsIGludGVnZXIyLCBvYmplY3QyKTsKKyAgICAgICAg
cmV0dXJuIHd0ZkNhbGxJTVAoaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2Vs
Ziwgb2JqZWN0MSwgYm9vbGVhbiwgaW50ZWdlcjEsIGludGVnZXIyLCBvYmplY3QyKTsKICAgICB9
IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVF
eGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMzM2LDcgKzMzNyw3IEBA
IHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmll
dyAqc2VsZiwgaWQgZGVsZWdhdGUsIFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRlbGVn
YXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0MiwgaW50ZWdlciwgb2JqZWN0Myk7
CisgICAgICAgIHJldHVybiB3dGZDYWxsSU1QKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2Vs
ZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIsIGludGVnZXIsIG9iamVjdDMpOwogICAgIH0g
QGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4
Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0zNDgsNyArMzQ5LDcgQEAg
c3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3
ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1
cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb24oZGVsZWdh
dGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlZ2VyMSwgb2JqZWN0MiwgaW50ZWdlcjIs
IG9iamVjdDMpOworICAgICAgICByZXR1cm4gd3RmQ2FsbElNUChpbXBsZW1lbnRhdGlvbiwgZGVs
ZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlZ2VyMSwgb2JqZWN0MiwgaW50ZWdl
cjIsIG9iamVjdDMpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBv
cnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9
CkBAIC0zNjAsNyArMzYxLDcgQEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRl
bGVnYXRlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4g
aW1wbGVtZW50YXRpb24oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlZ2Vy
LCBvYmplY3QyLCBvYmplY3QzLCBvYmplY3Q0KTsKKyAgICAgICAgcmV0dXJuIHd0ZkNhbGxJTVAo
aW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgaW50ZWdl
ciwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9u
KSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBl
eGNlcHRpb24pOwogICAgIH0KQEAgLTM3Miw3ICszNzMsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENh
bGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRl
LCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7
Ci0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYs
IG9iamVjdDEsIGludGVydmFsLCBvYmplY3QyLCBvYmplY3QzKTsKKyAgICAgICAgcmV0dXJuIHd0
ZkNhbGxJTVAoaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0
MSwgaW50ZXJ2YWwsIG9iamVjdDIsIG9iamVjdDMpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlv
bikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3Rvciwg
ZXhjZXB0aW9uKTsKICAgICB9CkBAIC01MDIsNyArNTAzLDcgQEAgaWQgQ2FsbFJlc291cmNlTG9h
ZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9y
LCBpZAogQk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wg
cmVzdWx0LCBJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3Rvciwg
aWQgb2JqZWN0MSkKIHsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Qk9PTCAoKikoaWQsIFNFTCwgV2ViVmlldyAqLCBpZCk+KG9iamNfbXNnU2VuZCkoc2VsZi0+
X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVj
dDEpOworICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQ8Qk9PTD4oc2VsZi0+X3ByaXZhdGUt
PnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEpOwogICAg
IH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0
ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC01MTIsNyArNTEzLDcg
QEAgQk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVz
dWx0LCBJTVAgaW1wbGVtZW50YXRpb24sIFcKIEJPT0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRl
UmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3
ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7CiAgICAgQHRy
eSB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJPT0wgKCopKGlkLCBTRUwsIFdl
YlZpZXcgKiwgaWQsIGlkKT4ob2JqY19tc2dTZW5kKShzZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQ
cm9ncmVzc0RlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Mik7CisgICAg
ICAgIHJldHVybiB3dGZPYmpjTXNnU2VuZDxCT09MPihzZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQ
cm9ncmVzc0RlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0Mik7CiAgICAg
fSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRl
RXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTUyMiw3ICs1MjMsNyBA
QCBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1
bHQsIElNUCBpbXBsZW1lbnRhdGlvbiwgVwogQk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVS
ZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0LCBJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcg
KnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgaWQgb2JqZWN0MiwgaWQgb2JqZWN0MykK
IHsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Qk9PTCAoKiko
aWQsIFNFTCwgV2ViVmlldyAqLCBpZCwgaWQsIGlkKT4ob2JqY19tc2dTZW5kKShzZWxmLT5fcHJp
dmF0ZS0+cmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwg
b2JqZWN0Miwgb2JqZWN0Myk7CisgICAgICAgIHJldHVybiB3dGZPYmpjTXNnU2VuZDxCT09MPihz
ZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwg
b2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Myk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7
CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNl
cHRpb24pOwogICAgIH0KQEAgLTU3Nyw3ICs1NzgsNyBAQCBpZCBDYWxsRm9ybURlbGVnYXRlKFdl
YlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgaWQgb2JqZWN0MikKICAgICBp
ZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIG9iamNfbXNn
U2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIpOworICAgICAgICByZXR1
cm4gd3RmT2JqY01zZ1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyKTsK
ICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVs
ZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtNTkwLDcgKzU5
MSw3IEBAIGlkIENhbGxGb3JtRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBp
ZCBvYmplY3QxLCBpZCBvYmplY3QyLCBpZCBvYmplCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiBvYmpjX21zZ1NlbmQoZGVsZWdhdGUsIHNlbGVj
dG9yLCBvYmplY3QxLCBvYmplY3QyLCBvYmplY3QzLCBvYmplY3Q0LCBvYmplY3Q1KTsKKyAgICAg
ICAgcmV0dXJuIHd0Zk9iamNNc2dTZW5kKGRlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2Jq
ZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCwgb2JqZWN0NSk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0
aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9y
LCBleGNlcHRpb24pOwogICAgIH0KQEAgLTYwMyw3ICs2MDQsNyBAQCBCT09MIENhbGxGb3JtRGVs
ZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2Vs
ZWN0b3IsCiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpzZWxlY3Rvcl0pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgQHRyeSB7Ci0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PEJPT0wgKCopKGlkLCBTRUwsIGlkLCBTRUwsIGlkKT4o
b2JqY19tc2dTZW5kKShkZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIHNlbGVjdG9yQXJnLCBv
YmplY3QyKTsKKyAgICAgICAgcmV0dXJuIHd0Zk9iamNNc2dTZW5kPEJPT0w+KGRlbGVnYXRlLCBz
ZWxlY3Rvciwgb2JqZWN0MSwgc2VsZWN0b3JBcmcsIG9iamVjdDIpOwogICAgIH0gQGNhdGNoKGlk
IGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihz
ZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCA1MDVkYjUzMDIxMDRlYTg0OGZiODIwMTI3ZmEyOTRiMzE2YmUwOTIx
Li40NWU4MGE4MTUzNDIzODE3NzFkZDZhZjJjMmQwOWQ1MWY5ZTE1MDU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEyNCw4ICsxMjQsMTAgQEAKICNpbXBv
cnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KICNpbXBvcnQg
PGxpbWl0cz4KKyNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDxydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1w
b3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgpAQCAtMjYyLDcgKzI2
NCw3IEBAIHN0YXRpYyBJTVAgb2xkU2V0Q3Vyc29yRm9yTW91c2VMb2NhdGlvbklNUDsKIHN0YXRp
YyB2b2lkIHNldEN1cnNvcihOU1dpbmRvdyAqc2VsZiwgU0VMIGNtZCwgTlNQb2ludCBwb2ludCkK
IHsKICAgICBpZiAobmVlZHNDdXJzb3JSZWN0c1N1cHBvcnRBdFBvaW50KHNlbGYsIHBvaW50KSkK
LSAgICAgICAgb2xkU2V0Q3Vyc29yRm9yTW91c2VMb2NhdGlvbklNUChzZWxmLCBjbWQsIHBvaW50
KTsKKyAgICAgICAgd3RmQ2FsbElNUChvbGRTZXRDdXJzb3JGb3JNb3VzZUxvY2F0aW9uSU1QLCBz
ZWxmLCBjbWQsIHBvaW50KTsKIH0KIAogCkBAIC0yOTYsNyArMjk4LDcgQEAgc3RhdGljIElNUCBv
bGRTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVA7CiBzdGF0aWMgdm9pZCBzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoTlNWaWV3ICpzZWxmLCBTRUwgY21kLCBOU1JlY3QgaW52YWxpZFJlY3QpCiB7CiAgICAg
aWYgKCFbc2VsZiBfZHJhd25CeUFuY2VzdG9yXSkgewotICAgICAgICBvbGRTZXROZWVkc0Rpc3Bs
YXlJblJlY3RJTVAoc2VsZiwgY21kLCBpbnZhbGlkUmVjdCk7CisgICAgICAgIHd0ZkNhbGxJTVAo
b2xkU2V0TmVlZHNEaXNwbGF5SW5SZWN0SU1QLCBzZWxmLCBjbWQsIGludmFsaWRSZWN0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzA2LDE0ICszMDgsMTQgQEAgc3RhdGljIHZvaWQg
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KE5TVmlldyAqc2VsZiwgU0VMIGNtZCwgTlNSZWN0IGludmFs
aWRSZWN0KQogICAgICAgICBlbmNsb3NpbmdXZWJGcmFtZVZpZXcgPSAoV2ViRnJhbWVWaWV3ICop
W2VuY2xvc2luZ1dlYkZyYW1lVmlldyBzdXBlcnZpZXddOwogCiAgICAgaWYgKCFlbmNsb3NpbmdX
ZWJGcmFtZVZpZXcpIHsKLSAgICAgICAgb2xkU2V0TmVlZHNEaXNwbGF5SW5SZWN0SU1QKHNlbGYs
IGNtZCwgaW52YWxpZFJlY3QpOworICAgICAgICB3dGZDYWxsSU1QKG9sZFNldE5lZWRzRGlzcGxh
eUluUmVjdElNUCwgc2VsZiwgY21kLCBpbnZhbGlkUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbZW5jbG9zaW5nV2ViRnJhbWVWaWV3
IHdlYkZyYW1lXSk7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBjb3JlRnJhbWUgPyBjb3Jl
RnJhbWUtPnZpZXcoKSA6IDA7CiAgICAgaWYgKCFmcmFtZVZpZXcgfHwgIWZyYW1lVmlldy0+aXNF
bmNsb3NlZEluQ29tcG9zaXRpbmdMYXllcigpKSB7Ci0gICAgICAgIG9sZFNldE5lZWRzRGlzcGxh
eUluUmVjdElNUChzZWxmLCBjbWQsIGludmFsaWRSZWN0KTsKKyAgICAgICAgd3RmQ2FsbElNUChv
bGRTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVAsIHNlbGYsIGNtZCwgaW52YWxpZFJlY3QpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLm1tCmluZGV4IDZhMDJmNTYyZGY5Y2ZjNWJmM2E2
YmZiZTY4ZDcwN2YzMWZkNWY0Y2EuLmU2MzVjOGE1Y2IwNTc3YWRmMWI5OTU4NTIzMmE1YzQ2NjBj
N2MwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZp
ZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BE
RlZpZXdDb250cm9sbGVyLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDxQREZLaXQvUERG
S2l0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtNTM3LDcgKzUzOCw3IEBAIHN0YXRpYyB2b2lkIFBERlZpZXdTY3JvbGxWaWV3X3Njcm9sbFdo
ZWVsKE5TU2Nyb2xsVmlldyogc2VsZiwgU0VMIF9jbWQsIE5TRXZlbnQKICAgICAgICAgfQogICAg
IH0KIAotICAgIG9sZFBERlZpZXdTY3JvbGxWaWV3X3Njcm9sbFdoZWVsKHNlbGYsIF9jbWQsIHdo
ZWVsRXZlbnQpOworICAgIHd0ZkNhbGxJTVA8dm9pZD4ob2xkUERGVmlld1Njcm9sbFZpZXdfc2Ny
b2xsV2hlZWwsIHNlbGYsIF9jbWQsIHdoZWVsRXZlbnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNjI0ODRhZGRlNDg4
MDliNGNjMzFiMmUzMDE1NGY0MGFmOGExMzBmLi44ZTAwMzRlOWFhYWFhNzYxYWFiODJmNzE5NDY2
ODcwMzk3YTAyZjBiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMzAgIFByYXRpayBTb2xhbmtpICA8cHNv
bGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBi
ZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB3dGZPYmpjTXNnU2VuZCBhbmQgd3RmQ2FsbElN
UCB0ZW1wbGF0ZXMgd2hpY2ggZG8gYXBwcm9wcmlhdGUgY2FzdHMKKyAgICAgICAgdG8gYSBmdW5j
dGlvbiBwb2ludGVyIHdpdGggcmlnaHQgdHlwZXMgd2hlbiBjYWxsaW5nIG9iamNfbXNnU2VuZCBh
bmQgYW4KKyAgICAgICAgSU1QIG1ldGhvZCBkaXJlY3RseS4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGRydF9OU0ZvbnRNYW5hZ2Vy
X2F2YWlsYWJsZUZvbnRGYW1pbGllcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvQWN0aXZhdGVGb250cy5tbToKKyAgICAgICAgKFdUUjo6d3RyX05TRm9u
dE1hbmFnZXJfYXZhaWxhYmxlRm9udEZhbWlsaWVzKToKKwogMjAxMi0wOC0yOSAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogTm90IHNlbmRp
bmcgTlBQX1NldFdpbmRvdyBpcyBjYXVzaW5nIEZsYXNoIHRvIG5vdCB0aHJvdHRsZSBpdHNlbGYK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAyN2MyZjQz
ZjBiOGU3ZGM4ODMwNzExNDhjNTdiYmE5NjY2MTY2N2Y1Li5mZjgwYmMyZTliOTNhYjQ3MTJjMWQ2
NDRkODQzOGQ2NGI5YjRhNjJlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCkBAIC04OSw2ICs4OSw3IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgorI2lt
cG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAK
IGV4dGVybiAiQyIgewpAQCAtMzU0LDcgKzM1NSw3IEBAIHN0YXRpYyBOU0FycmF5ICpkcnRfTlNG
b250TWFuYWdlcl9hdmFpbGFibGVGb250RmFtaWxpZXMoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAg
aWYgKGF2YWlsYWJsZUZvbnRGYW1pbGllcykKICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRG
YW1pbGllczsKICAgICAKLSAgICBOU0FycmF5ICphdmFpbGFibGVGYW1pbGllcyA9IGFwcEtpdEF2
YWlsYWJsZUZvbnRGYW1pbGllc0lNUChzZWxmLCBfY21kKTsKKyAgICBOU0FycmF5ICphdmFpbGFi
bGVGYW1pbGllcyA9IHd0ZkNhbGxJTVAoYXBwS2l0QXZhaWxhYmxlRm9udEZhbWlsaWVzSU1QLCBz
ZWxmLCBfY21kKTsKIAogICAgIE5TTXV0YWJsZVNldCAqcHJ1bmVkRmFtaWxpZXNTZXQgPSBbTlNN
dXRhYmxlU2V0IHNldFdpdGhBcnJheTphdmFpbGFibGVGYW1pbGllc107CiAgICAgW3BydW5lZEZh
bWlsaWVzU2V0IGludGVyc2VjdFNldDphbGxvd2VkRm9udEZhbWlseVNldCgpXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjdGl2YXRlRm9u
dHMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY3RpdmF0
ZUZvbnRzLm1tCmluZGV4IDU3YTA4Y2E0N2FlODk2MWMzMGJlYjk3YzJhNDVmYjkwOWI2MmQyNDIu
LjI3MmQwNzgyYTY2MDY1Y2EyN2QyZThiMTg1ODVjYzQxMmVmMTU1N2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjdGl2YXRlRm9udHMubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWN0aXZhdGVG
b250cy5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2lt
cG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbXBvcnQgPG9iamMvb2Jq
Yy1ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBXS1RSRm9udEFjdGl2YXRvckR1bW15Q2xh
c3MgOiBOU09iamVjdApAQCAtMTcwLDcgKzE3MSw3IEBAIHN0YXRpYyBOU0FycmF5ICp3dHJfTlNG
b250TWFuYWdlcl9hdmFpbGFibGVGb250RmFtaWxpZXMoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAg
aWYgKGF2YWlsYWJsZUZvbnRGYW1pbGllcykKICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRG
YW1pbGllczsKICAgICAKLSAgICBOU0FycmF5ICphdmFpbGFibGVGYW1pbGllcyA9IGFwcEtpdEF2
YWlsYWJsZUZvbnRGYW1pbGllc0lNUChzZWxmLCBfY21kKTsKKyAgICBOU0FycmF5ICphdmFpbGFi
bGVGYW1pbGllcyA9IHd0ZkNhbGxJTVAoYXBwS2l0QXZhaWxhYmxlRm9udEZhbWlsaWVzSU1QLCBz
ZWxmLCBfY21kKTsKIAogICAgIE5TTXV0YWJsZVNldCAqcHJ1bmVkRmFtaWxpZXNTZXQgPSBbTlNN
dXRhYmxlU2V0IHNldFdpdGhBcnJheTphdmFpbGFibGVGYW1pbGllc107CiAgICAgW3BydW5lZEZh
bWlsaWVzU2V0IGludGVyc2VjdFNldDphbGxvd2VkRm9udEZhbWlseVNldCgpXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161752</attachid>
            <date>2012-08-31 12:37:06 -0700</date>
            <delta_ts>2012-08-31 13:41:52 -0700</delta_ts>
            <desc>Fix for llvm-gcc</desc>
            <filename>bug-95242-20120831123653.patch</filename>
            <type>text/plain</type>
            <size>22298</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0NjdjNDE2ZmRiZWNiYzg3MmIwNjZj
OTQ3OTdjMzQ1ZGMxOGVlMmEuLjcyMDM1OTk5ZTk4ZTg3ZDhiYWMxZWM4ZGFhMWQ3MTRiNDM2MTYw
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMzEgIFByYXRpayBTb2xhbmtpICA8cHNv
bGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBi
ZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3Igb2xkZXIgY29tcGlsZXJzLiBQYXNzIGlk
IGFzIHRoZSByZXR1cm4gdHlwZSB0byB0aGUgdGVtcGxhdGUKKyAgICAgICAgaW5zdGVhZCBvZiBy
ZWx5aW5nIG9uIGRlZmF1bHQgdHlwZS4KKworICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6Cisg
ICAgICAgIChXVEY6OlIpOgorICAgICAgICAqIHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oOgorCiAy
MDEyLTA4LTMwICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBvYmpjX21zZ1NlbmQgYW5kIElNUCBzaG91bGQgYmUgY2FzdCBhcHByb3ByaWF0ZWx5IGJlZm9y
ZSB1c2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDJjMDhiODdjNWYwOGY3YTYzMzBkOGY5ODlmODU0
NGQ2NGQ5ZTEyNzIuLjc2ZDBiZWRkZTlkYjFiOWIwNGMxZDRhZjc1MTJiOTM4YWU3ZmJmODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wOC0zMSAgUHJhdGlrIFNvbGFu
a2kgIDxwc29sYW5raUBhcHBsZS5jb20+CisKKyAgICAgICAgb2JqY19tc2dTZW5kIGFuZCBJTVAg
c2hvdWxkIGJlIGNhc3QgYXBwcm9wcmlhdGVseSBiZWZvcmUgdXNpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjQyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZvciBvbGRlciBjb21waWxlcnMu
IFBhc3MgaWQgYXMgdGhlIHJldHVybiB0eXBlIHRvIHRoZSB0ZW1wbGF0ZQorICAgICAgICBpbnN0
ZWFkIG9mIHJlbHlpbmcgb24gZGVmYXVsdCB0eXBlLgorCisgICAgICAgICogV2ViVmlldy9XZWJE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbToKKyAgICAgICAgKENhbGxEZWxlZ2F0ZSk6
CisgICAgICAgIChDYWxsRm9ybURlbGVnYXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tOgorICAgICAgICAoc2V0Q3Vyc29yKToKKyAgICAgICAgKHNldE5lZWRzRGlzcGxheUlu
UmVjdCk6CisKIDIwMTItMDgtMzAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29t
PgogCiAgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJvcHJp
YXRlbHkgYmVmb3JlIHVzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFs
LmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgKaW5kZXggMjc1MjcxNjdhODQ1ZDM2ODc4
ZjhhZDVjZGIxNGQzZDUyNjFkYmYyNy4uZjUwN2UwY2IxNzE0YzAxYTQ4ZGE3MjRiNTYyZmEwZmNk
Y2RlNjM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0Z1bmN0aW9uYWwuaApAQCAtNjM1LDggKzYzNSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8KICAgICAgICAgLy8gICBkaXNwYXRjaF9hc3luYyhxdWV1ZSwgYmluZCguLi4pKTsK
ICAgICAgICAgLy8KLSAgICAgICAgaWQgY29waWVkQmxvY2sgPSB3dGZPYmpjTXNnU2VuZCgoaWQp
YmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImNvcHkiKSk7Ci0gICAgICAgIGlkIGF1dG9yZWxlYXNl
ZEJsb2NrID0gd3RmT2JqY01zZ1NlbmQoY29waWVkQmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImF1
dG9yZWxlYXNlIikpOworICAgICAgICBpZCBjb3BpZWRCbG9jayA9IHd0Zk9iamNNc2dTZW5kPGlk
PigoaWQpYmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImNvcHkiKSk7CisgICAgICAgIGlkIGF1dG9y
ZWxlYXNlZEJsb2NrID0gd3RmT2JqY01zZ1NlbmQ8aWQ+KGNvcGllZEJsb2NrLCBzZWxfcmVnaXN0
ZXJOYW1lKCJhdXRvcmVsZWFzZSIpKTsKICAgICAgICAgcmV0dXJuIChCbG9ja1R5cGUpYXV0b3Jl
bGVhc2VkQmxvY2s7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9P
YmpjUnVudGltZUV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvT2JqY1J1bnRpbWVFeHRyYXMuaApp
bmRleCAwODc5MDYzYTA5ZWM2YmZlNmNmYTIyNGI2NGM1NTJmNzZkZWEyMDdhLi4zNzg4ZDRhODlm
YTMyOTQ2M2U2ZWMzZmIyOTRlOThjOGJmODJhYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9PYmpjUnVudGltZUV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0
cmFzLmgKQEAgLTI1LDc5ICsyNSw3OSBAQAogI2lmbmRlZiBXVEZfT2JqY1J1bnRpbWVFeHRyYXNf
aAogI2RlZmluZSBXVEZfT2JqY1J1bnRpbWVFeHRyYXNfaAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBS
ZXRUeXBlID0gaWQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlPgogUmV0VHlwZSB3dGZPYmpj
TXNnU2VuZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvcikKIHsKICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMKT4ob2JqY19tc2dTZW5kKSh0YXJnZXQsIHNlbGVj
dG9yKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUmV0VHlwZSA9IGlkLCB0eXBlbmFtZSBBcmcx
VHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUsIHR5cGVuYW1lIEFyZzFUeXBlPgogUmV0
VHlwZSB3dGZPYmpjTXNnU2VuZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJn
MSkKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBB
cmcxVHlwZSk+KG9iamNfbXNnU2VuZCkodGFyZ2V0LCBzZWxlY3RvciwgYXJnMSk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFJldFR5cGUgPSBpZCwgdHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1l
IEFyZzJUeXBlPgordGVtcGxhdGU8dHlwZW5hbWUgUmV0VHlwZSwgdHlwZW5hbWUgQXJnMVR5cGUs
IHR5cGVuYW1lIEFyZzJUeXBlPgogUmV0VHlwZSB3dGZPYmpjTXNnU2VuZChpZCB0YXJnZXQsIFNF
TCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJnMlR5cGUgYXJnMikKIHsKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmcxVHlwZSwgQXJnMlR5cGUp
PihvYmpjX21zZ1NlbmQpKHRhcmdldCwgc2VsZWN0b3IsIGFyZzEsIGFyZzIpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQsIHR5cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBB
cmcyVHlwZSwgdHlwZW5hbWUgQXJnM1R5cGU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlLCB0
eXBlbmFtZSBBcmcxVHlwZSwgdHlwZW5hbWUgQXJnMlR5cGUsIHR5cGVuYW1lIEFyZzNUeXBlPgog
UmV0VHlwZSB3dGZPYmpjTXNnU2VuZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUg
YXJnMSwgQXJnMlR5cGUgYXJnMiwgQXJnM1R5cGUgYXJnMykKIHsKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmcxVHlwZSwgQXJnMlR5cGUsIEFyZzNU
eXBlKT4ob2JqY19tc2dTZW5kKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmcxLCBhcmcyLCBhcmczKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUmV0VHlwZSA9IGlkLCB0eXBlbmFtZSBBcmcxVHlwZSwg
dHlwZW5hbWUgQXJnMlR5cGUsIHR5cGVuYW1lIEFyZzNUeXBlLCB0eXBlbmFtZSBBcmc0VHlwZT4K
K3RlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUsIHR5cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBB
cmcyVHlwZSwgdHlwZW5hbWUgQXJnM1R5cGUsIHR5cGVuYW1lIEFyZzRUeXBlPgogUmV0VHlwZSB3
dGZPYmpjTXNnU2VuZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwgQXJn
MlR5cGUgYXJnMiwgQXJnM1R5cGUgYXJnMywgQXJnNFR5cGUgYXJnNCkKIHsKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmcxVHlwZSwgQXJnMlR5cGUs
IEFyZzNUeXBlLCBBcmc0VHlwZSk+KG9iamNfbXNnU2VuZCkodGFyZ2V0LCBzZWxlY3RvciwgYXJn
MSwgYXJnMiwgYXJnMywgYXJnNCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUgPSBp
ZCwgdHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFtZSBBcmczVHlw
ZSwgdHlwZW5hbWUgQXJnNFR5cGUsIHR5cGVuYW1lIEFyZzVUeXBlPgordGVtcGxhdGU8dHlwZW5h
bWUgUmV0VHlwZSwgdHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFt
ZSBBcmczVHlwZSwgdHlwZW5hbWUgQXJnNFR5cGUsIHR5cGVuYW1lIEFyZzVUeXBlPgogUmV0VHlw
ZSB3dGZPYmpjTXNnU2VuZChpZCB0YXJnZXQsIFNFTCBzZWxlY3RvciwgQXJnMVR5cGUgYXJnMSwg
QXJnMlR5cGUgYXJnMiwgQXJnM1R5cGUgYXJnMywgQXJnNFR5cGUgYXJnNCwgQXJnNVR5cGUgYXJn
NSkKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBB
cmcxVHlwZSwgQXJnMlR5cGUsIEFyZzNUeXBlLCBBcmc0VHlwZSwgQXJnNVR5cGUpPihvYmpjX21z
Z1NlbmQpKHRhcmdldCwgc2VsZWN0b3IsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZXRUeXBlPgogUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0
LCBTRUwgc2VsZWN0b3IpCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0VHlwZSAo
KikoaWQsIFNFTCk+KGltcGxlbWVudGF0aW9uKSh0YXJnZXQsIHNlbGVjdG9yKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgUmV0VHlwZSA9IGlkLCB0eXBlbmFtZSBBcmcxVHlwZT4KK3RlbXBsYXRl
PHR5cGVuYW1lIFJldFR5cGUsIHR5cGVuYW1lIEFyZzFUeXBlPgogUmV0VHlwZSB3dGZDYWxsSU1Q
KElNUCBpbXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBlIGFy
ZzEpCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0VHlwZSAoKikoaWQsIFNFTCwg
QXJnMVR5cGUpPihpbXBsZW1lbnRhdGlvbikodGFyZ2V0LCBzZWxlY3RvciwgYXJnMSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUgPSBpZCwgdHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVu
YW1lIEFyZzJUeXBlPgordGVtcGxhdGU8dHlwZW5hbWUgUmV0VHlwZSwgdHlwZW5hbWUgQXJnMVR5
cGUsIHR5cGVuYW1lIEFyZzJUeXBlPgogUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1lbnRh
dGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBlIGFyZzEsIEFyZzJUeXBlIGFy
ZzIpCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0VHlwZSAoKikoaWQsIFNFTCwg
QXJnMVR5cGUsIEFyZzJUeXBlKT4oaW1wbGVtZW50YXRpb24pKHRhcmdldCwgc2VsZWN0b3IsIGFy
ZzEsIGFyZzIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQsIHR5cGVuYW1l
IEFyZzFUeXBlLCB0eXBlbmFtZSBBcmcyVHlwZSwgdHlwZW5hbWUgQXJnM1R5cGU+Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBSZXRUeXBlLCB0eXBlbmFtZSBBcmcxVHlwZSwgdHlwZW5hbWUgQXJnMlR5cGUs
IHR5cGVuYW1lIEFyZzNUeXBlPgogUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1lbnRhdGlv
biwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBlIGFyZzEsIEFyZzJUeXBlIGFyZzIs
IEFyZzNUeXBlIGFyZzMpCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0VHlwZSAo
KikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBBcmczVHlwZSk+KGltcGxlbWVudGF0aW9u
KSh0YXJnZXQsIHNlbGVjdG9yLCBhcmcxLCBhcmcyLCBhcmczKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgUmV0VHlwZSA9IGlkLCB0eXBlbmFtZSBBcmcxVHlwZSwgdHlwZW5hbWUgQXJnMlR5cGUs
IHR5cGVuYW1lIEFyZzNUeXBlLCB0eXBlbmFtZSBBcmc0VHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1l
IFJldFR5cGUsIHR5cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBBcmcyVHlwZSwgdHlwZW5hbWUg
QXJnM1R5cGUsIHR5cGVuYW1lIEFyZzRUeXBlPgogUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBs
ZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBlIGFyZzEsIEFyZzJU
eXBlIGFyZzIsIEFyZzNUeXBlIGFyZzMsIEFyZzRUeXBlIGFyZzQpCiB7CiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8UmV0VHlwZSAoKikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBB
cmczVHlwZSwgQXJnNFR5cGUpPihpbXBsZW1lbnRhdGlvbikodGFyZ2V0LCBzZWxlY3RvciwgYXJn
MSwgYXJnMiwgYXJnMywgYXJnNCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUgPSBp
ZCwgdHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFtZSBBcmczVHlw
ZSwgdHlwZW5hbWUgQXJnNFR5cGUsIHR5cGVuYW1lIEFyZzVUeXBlPgordGVtcGxhdGU8dHlwZW5h
bWUgUmV0VHlwZSwgdHlwZW5hbWUgQXJnMVR5cGUsIHR5cGVuYW1lIEFyZzJUeXBlLCB0eXBlbmFt
ZSBBcmczVHlwZSwgdHlwZW5hbWUgQXJnNFR5cGUsIHR5cGVuYW1lIEFyZzVUeXBlPgogUmV0VHlw
ZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3Is
IEFyZzFUeXBlIGFyZzEsIEFyZzJUeXBlIGFyZzIsIEFyZzNUeXBlIGFyZzMsIEFyZzRUeXBlIGFy
ZzQsIEFyZzVUeXBlIGFyZzUpCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0VHlw
ZSAoKikoaWQsIFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBBcmczVHlwZSwgQXJnNFR5cGUsIEFy
ZzVUeXBlKT4oaW1wbGVtZW50YXRpb24pKHRhcmdldCwgc2VsZWN0b3IsIGFyZzEsIGFyZzIsIGFy
ZzMsIGFyZzQsIGFyZzUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlID0gaWQsIHR5
cGVuYW1lIEFyZzFUeXBlLCB0eXBlbmFtZSBBcmcyVHlwZSwgdHlwZW5hbWUgQXJnM1R5cGUsIHR5
cGVuYW1lIEFyZzRUeXBlLCB0eXBlbmFtZSBBcmc1VHlwZSwgdHlwZW5hbWUgQXJnNlR5cGU+Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlLCB0eXBlbmFtZSBBcmcxVHlwZSwgdHlwZW5hbWUgQXJn
MlR5cGUsIHR5cGVuYW1lIEFyZzNUeXBlLCB0eXBlbmFtZSBBcmc0VHlwZSwgdHlwZW5hbWUgQXJn
NVR5cGUsIHR5cGVuYW1lIEFyZzZUeXBlPgogUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1l
bnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZzFUeXBlIGFyZzEsIEFyZzJUeXBl
IGFyZzIsIEFyZzNUeXBlIGFyZzMsIEFyZzRUeXBlIGFyZzQsIEFyZzVUeXBlIGFyZzUsIEFyZzZU
eXBlIGFyZzYpCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0VHlwZSAoKikoaWQs
IFNFTCwgQXJnMVR5cGUsIEFyZzJUeXBlLCBBcmczVHlwZSwgQXJnNFR5cGUsIEFyZzVUeXBlLCBB
cmc2VHlwZSk+KGltcGxlbWVudGF0aW9uKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmcxLCBhcmcyLCBh
cmczLCBhcmc0LCBhcmc1LCBhcmc2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCmluZGV4IGY1
NDA3NjM2NWZlZjhmM2Q5OTdkNzc4NWIzMDZhZTFhMTQxMDdmNTEuLjg0NzBmNWYyYmM1M2Q4NmMz
N2Y1YWFhMzhjZWY2NDY5NDQ4N2E0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQpAQCAt
ODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzZWxm
LCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yKQogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIEB0cnkgewotICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQoZGVsZWdhdGUsIHNlbGVj
dG9yLCBzZWxmKTsKKyAgICAgICAgcmV0dXJuIHd0Zk9iamNNc2dTZW5kPGlkPihkZWxlZ2F0ZSwg
c2VsZWN0b3IsIHNlbGYpOwogICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBS
ZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAg
ICB9CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZp
ZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAgICAgaWYgKCFk
ZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiB3dGZPYmpjTXNnU2Vu
ZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdCk7CisgICAgICAgIHJldHVybiB3dGZP
YmpjTXNnU2VuZDxpZD4oZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QpOwogICAgIH0g
QGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4
Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0xMDksNyArMTA5LDcgQEAg
c3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUs
IFNFTCBzZWxlY3RvciwgTlNSZWN0IHIKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBA
dHJ5IHsKLSAgICAgICAgcmV0dXJuIHd0Zk9iamNNc2dTZW5kKGRlbGVnYXRlLCBzZWxlY3Rvciwg
c2VsZiwgcmVjdCk7CisgICAgICAgIHJldHVybiB3dGZPYmpjTXNnU2VuZDxpZD4oZGVsZWdhdGUs
IHNlbGVjdG9yLCBzZWxmLCByZWN0KTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAg
ICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlv
bik7CiAgICAgfQpAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVn
YXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAg
ICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rv
cl0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiB3dGZP
YmpjTXNnU2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIpOwor
ICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQ8aWQ+KGRlbGVnYXRlLCBzZWxlY3Rvciwgc2Vs
Ziwgb2JqZWN0MSwgb2JqZWN0Mik7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAg
ICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24p
OwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0
ZShXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplYwogICAg
IGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3Jd
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gd3RmT2Jq
Y01zZ1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QsIGJvb2xlYW4pOworICAg
ICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQ8aWQ+KGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwg
b2JqZWN0LCBib29sZWFuKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAg
UmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAg
ICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdl
YlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjCiAgICAgaWYg
KCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiB3dGZPYmpjTXNn
U2VuZChkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIsIG9iamVjdDMp
OworICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQ8aWQ+KGRlbGVnYXRlLCBzZWxlY3Rvciwg
c2VsZiwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Myk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0
aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9y
LCBleGNlcHRpb24pOwogICAgIH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIGlk
IENhbGxEZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBp
ZCBvYmplYwogICAgIGlmICghZGVsZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICBy
ZXR1cm4gd3RmT2JqY01zZ1NlbmQoZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QsIGlu
dGVnZXIpOworICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQ8aWQ+KGRlbGVnYXRlLCBzZWxl
Y3Rvciwgc2VsZiwgb2JqZWN0LCBpbnRlZ2VyKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24p
IHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4
Y2VwdGlvbik7CiAgICAgfQpAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2Fs
bERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUs
IFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsK
LSAgICAgICAgcmV0dXJuIHd0ZkNhbGxJTVAoaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxl
Y3Rvciwgc2VsZik7CisgICAgICAgIHJldHVybiB3dGZDYWxsSU1QPGlkPihpbXBsZW1lbnRhdGlv
biwgZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24p
IHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4
Y2VwdGlvbik7CiAgICAgfQpAQCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyBpbmxpbmUgaWQgQ2Fs
bERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdhdGUs
IFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5IHsK
LSAgICAgICAgcmV0dXJuIHd0ZkNhbGxJTVAoaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxl
Y3Rvciwgc2VsZiwgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHd0ZkNhbGxJTVA8aWQ+KGltcGxl
bWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdCk7CiAgICAgfSBAY2F0
Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0
aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0
aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNl
bGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiB3dGZDYWxsSU1QKGltcGxlbWVudGF0aW9u
LCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIG9iamVjdDIpOworICAgICAgICBy
ZXR1cm4gd3RmQ2FsbElNUDxpZD4oaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwg
c2VsZiwgb2JqZWN0MSwgb2JqZWN0Mik7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAg
ICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRp
b24pOwogICAgIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxl
Z2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRQog
ICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAg
ICAgIHJldHVybiB3dGZDYWxsSU1QKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3Is
IHNlbGYsIG9iamVjdDEsIG9iamVjdDIsIG9iamVjdDMpOworICAgICAgICByZXR1cm4gd3RmQ2Fs
bElNUDxpZD4oaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0
MSwgb2JqZWN0Miwgb2JqZWN0Myk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAg
ICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24p
OwogICAgIH0KQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0
ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRQogICAg
IGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAg
IHJldHVybiB3dGZDYWxsSU1QKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNl
bGYsIG9iamVjdDEsIG9iamVjdDIsIG9iamVjdDMsIG9iamVjdDQpOworICAgICAgICByZXR1cm4g
d3RmQ2FsbElNUDxpZD4oaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwg
b2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCk7CiAgICAgfSBAY2F0Y2goaWQgZXhj
ZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVj
dG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTMwMSw3ICszMDEsNyBAQCBzdGF0aWMgaW5saW5l
IGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRl
bGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
QHRyeSB7Ci0gICAgICAgIHJldHVybiB3dGZDYWxsSU1QKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0
ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIpOworICAgICAgICBy
ZXR1cm4gd3RmQ2FsbElNUDxpZD4oaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwg
c2VsZiwgb2JqZWN0MSwgaW50ZWdlciwgb2JqZWN0Mik7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0
aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9y
LCBleGNlcHRpb24pOwogICAgIH0KQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIGlk
IENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVn
YXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRy
eSB7Ci0gICAgICAgIHJldHVybiB3dGZDYWxsSU1QKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwg
c2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIxLCBpbnRlZ2VyMiwgb2JqZWN0Mik7Cisg
ICAgICAgIHJldHVybiB3dGZDYWxsSU1QPGlkPihpbXBsZW1lbnRhdGlvbiwgZGVsZWdhdGUsIHNl
bGVjdG9yLCBzZWxmLCBvYmplY3QxLCBpbnRlZ2VyMSwgaW50ZWdlcjIsIG9iamVjdDIpOwogICAg
IH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0
ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC0zMjUsNyArMzI1LDcg
QEAgc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJW
aWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0UKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gd3RmQ2FsbElNUChpbXBsZW1l
bnRhdGlvbiwgZGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxLCBib29sZWFuLCBpbnRl
Z2VyMSwgaW50ZWdlcjIsIG9iamVjdDIpOworICAgICAgICByZXR1cm4gd3RmQ2FsbElNUDxpZD4o
aW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgYm9vbGVh
biwgaW50ZWdlcjEsIGludGVnZXIyLCBvYmplY3QyKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRp
b24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3Is
IGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMzM3LDcgKzMzNyw3IEBAIHN0YXRpYyBpbmxpbmUgaWQg
Q2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgaWQgZGVsZWdh
dGUsIFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBAdHJ5
IHsKLSAgICAgICAgcmV0dXJuIHd0ZkNhbGxJTVAoaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBz
ZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgb2JqZWN0MiwgaW50ZWdlciwgb2JqZWN0Myk7CisgICAg
ICAgIHJldHVybiB3dGZDYWxsSU1QPGlkPihpbXBsZW1lbnRhdGlvbiwgZGVsZWdhdGUsIHNlbGVj
dG9yLCBzZWxmLCBvYmplY3QxLCBvYmplY3QyLCBpbnRlZ2VyLCBvYmplY3QzKTsKICAgICB9IEBj
YXRjaChpZCBleGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNl
cHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0
YXRpYyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAq
c2VsZiwgaWQgZGVsZWdhdGUsIFNFCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIHd0ZkNhbGxJTVAoaW1wbGVtZW50YXRp
b24sIGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgaW50ZWdlcjEsIG9iamVjdDIs
IGludGVnZXIyLCBvYmplY3QzKTsKKyAgICAgICAgcmV0dXJuIHd0ZkNhbGxJTVA8aWQ+KGltcGxl
bWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIxLCBv
YmplY3QyLCBpbnRlZ2VyMiwgb2JqZWN0Myk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7
CiAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNl
cHRpb24pOwogICAgIH0KQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxE
ZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBT
RQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0g
ICAgICAgIHJldHVybiB3dGZDYWxsSU1QKGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0
b3IsIHNlbGYsIG9iamVjdDEsIGludGVnZXIsIG9iamVjdDIsIG9iamVjdDMsIG9iamVjdDQpOwor
ICAgICAgICByZXR1cm4gd3RmQ2FsbElNUDxpZD4oaW1wbGVtZW50YXRpb24sIGRlbGVnYXRlLCBz
ZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSwgaW50ZWdlciwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0
NCk7CiAgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CiAgICAgICAgIFJlcG9ydERpc2NhcmRl
ZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgIH0KQEAgLTM3Myw3
ICszNzMsNyBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRp
b24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRQogICAgIGlmICghZGVsZWdhdGUpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgQHRyeSB7Ci0gICAgICAgIHJldHVybiB3dGZDYWxsSU1Q
KGltcGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVy
dmFsLCBvYmplY3QyLCBvYmplY3QzKTsKKyAgICAgICAgcmV0dXJuIHd0ZkNhbGxJTVA8aWQ+KGlt
cGxlbWVudGF0aW9uLCBkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEsIGludGVydmFs
LCBvYmplY3QyLCBvYmplY3QzKTsKICAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKICAgICAg
ICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7
CiAgICAgfQpAQCAtNTc4LDcgKzU3OCw3IEBAIGlkIENhbGxGb3JtRGVsZWdhdGUoV2ViVmlldyAq
c2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxLCBpZCBvYmplY3QyKQogICAgIGlmICghZGVs
ZWdhdGUgfHwgIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIEB0cnkgewotICAgICAgICByZXR1cm4gd3RmT2JqY01zZ1NlbmQo
ZGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyKTsKKyAgICAgICAgcmV0dXJuIHd0
Zk9iamNNc2dTZW5kPGlkPihkZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIpOwog
ICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgewogICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxl
Z2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKICAgICB9CkBAIC01OTEsNyArNTkx
LDcgQEAgaWQgQ2FsbEZvcm1EZWxlZ2F0ZShXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlk
IG9iamVjdDEsIGlkIG9iamVjdDIsIGlkIG9iamUKICAgICBpZiAoIWRlbGVnYXRlIHx8ICFbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICBAdHJ5IHsKLSAgICAgICAgcmV0dXJuIHd0Zk9iamNNc2dTZW5kKGRlbGVnYXRlLCBzZWxl
Y3Rvciwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCwgb2JqZWN0NSk7CisgICAg
ICAgIHJldHVybiB3dGZPYmpjTXNnU2VuZDxpZD4oZGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3Qx
LCBvYmplY3QyLCBvYmplY3QzLCBvYmplY3Q0LCBvYmplY3Q1KTsKICAgICB9IEBjYXRjaChpZCBl
eGNlcHRpb24pIHsKICAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2Vs
ZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KaW5kZXggNDVlODBhODE1MzQyMzgxNzcxZGQ2YWYyYzJkMDlkNTFmOWUxNTA1NS4u
YmZlZGU4ZGI2ZjllZmI2NWZkMTE1NDE4OThhOGNkMTA4NGUyYjYzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIElN
UCBvbGRTZXRDdXJzb3JGb3JNb3VzZUxvY2F0aW9uSU1QOwogc3RhdGljIHZvaWQgc2V0Q3Vyc29y
KE5TV2luZG93ICpzZWxmLCBTRUwgY21kLCBOU1BvaW50IHBvaW50KQogewogICAgIGlmIChuZWVk
c0N1cnNvclJlY3RzU3VwcG9ydEF0UG9pbnQoc2VsZiwgcG9pbnQpKQotICAgICAgICB3dGZDYWxs
SU1QKG9sZFNldEN1cnNvckZvck1vdXNlTG9jYXRpb25JTVAsIHNlbGYsIGNtZCwgcG9pbnQpOwor
ICAgICAgICB3dGZDYWxsSU1QPGlkPihvbGRTZXRDdXJzb3JGb3JNb3VzZUxvY2F0aW9uSU1QLCBz
ZWxmLCBjbWQsIHBvaW50KTsKIH0KIAogCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIElNUCBv
bGRTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVA7CiBzdGF0aWMgdm9pZCBzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoTlNWaWV3ICpzZWxmLCBTRUwgY21kLCBOU1JlY3QgaW52YWxpZFJlY3QpCiB7CiAgICAg
aWYgKCFbc2VsZiBfZHJhd25CeUFuY2VzdG9yXSkgewotICAgICAgICB3dGZDYWxsSU1QKG9sZFNl
dE5lZWRzRGlzcGxheUluUmVjdElNUCwgc2VsZiwgY21kLCBpbnZhbGlkUmVjdCk7CisgICAgICAg
IHd0ZkNhbGxJTVA8aWQ+KG9sZFNldE5lZWRzRGlzcGxheUluUmVjdElNUCwgc2VsZiwgY21kLCBp
bnZhbGlkUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMwOCwxNCArMzA4LDE0
IEBAIHN0YXRpYyB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChOU1ZpZXcgKnNlbGYsIFNFTCBj
bWQsIE5TUmVjdCBpbnZhbGlkUmVjdCkKICAgICAgICAgZW5jbG9zaW5nV2ViRnJhbWVWaWV3ID0g
KFdlYkZyYW1lVmlldyAqKVtlbmNsb3NpbmdXZWJGcmFtZVZpZXcgc3VwZXJ2aWV3XTsKIAogICAg
IGlmICghZW5jbG9zaW5nV2ViRnJhbWVWaWV3KSB7Ci0gICAgICAgIHd0ZkNhbGxJTVAob2xkU2V0
TmVlZHNEaXNwbGF5SW5SZWN0SU1QLCBzZWxmLCBjbWQsIGludmFsaWRSZWN0KTsKKyAgICAgICAg
d3RmQ2FsbElNUDxpZD4ob2xkU2V0TmVlZHNEaXNwbGF5SW5SZWN0SU1QLCBzZWxmLCBjbWQsIGlu
dmFsaWRSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtlbmNsb3NpbmdXZWJGcmFtZVZpZXcgd2ViRnJhbWVdKTsKICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+dmlldygpIDogMDsKICAgICBp
ZiAoIWZyYW1lVmlldyB8fCAhZnJhbWVWaWV3LT5pc0VuY2xvc2VkSW5Db21wb3NpdGluZ0xheWVy
KCkpIHsKLSAgICAgICAgd3RmQ2FsbElNUChvbGRTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVAsIHNl
bGYsIGNtZCwgaW52YWxpZFJlY3QpOworICAgICAgICB3dGZDYWxsSU1QPGlkPihvbGRTZXROZWVk
c0Rpc3BsYXlJblJlY3RJTVAsIHNlbGYsIGNtZCwgaW52YWxpZFJlY3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzdkNmJmYjQ4NDU0Mjc0YzUxMmQwMDUxYmZhNTJmZDA3NjZkM2RjZS4uMDMyYjAw
MjQ2ZDRlMGVjMGE1ZWE5ZmU1ZGJmMWE1MDZjMmU4YzJlZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA4LTMx
ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBvYmpjX21z
Z1NlbmQgYW5kIElNUCBzaG91bGQgYmUgY2FzdCBhcHByb3ByaWF0ZWx5IGJlZm9yZSB1c2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIG9s
ZGVyIGNvbXBpbGVycy4gUGFzcyBpZCBhcyB0aGUgcmV0dXJuIHR5cGUgdG8gdGhlIHRlbXBsYXRl
CisgICAgICAgIGluc3RlYWQgb2YgcmVseWluZyBvbiBkZWZhdWx0IHR5cGUuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChkcnRfTlNG
b250TWFuYWdlcl9hdmFpbGFibGVGb250RmFtaWxpZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjdGl2YXRlRm9udHMubW06CisgICAgICAgIChXVFI6
Ond0cl9OU0ZvbnRNYW5hZ2VyX2F2YWlsYWJsZUZvbnRGYW1pbGllcyk6CisKIDIwMTItMDgtMzAg
IFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIG9iamNfbXNn
U2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggZmY4MGJjMmU5
YjkzYWI0NzEyYzFkNjQ0ZDg0MzhkNjRiOWI0YTYyZS4uY2I5ODBmODY2ZmRlM2E2NTg3YTUzOTk0
YWM1ODMyODc1MmU3ODZjMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQpAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBOU0FycmF5ICpkcnRfTlNGb250TWFu
YWdlcl9hdmFpbGFibGVGb250RmFtaWxpZXMoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAgaWYgKGF2
YWlsYWJsZUZvbnRGYW1pbGllcykKICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRGYW1pbGll
czsKICAgICAKLSAgICBOU0FycmF5ICphdmFpbGFibGVGYW1pbGllcyA9IHd0ZkNhbGxJTVAoYXBw
S2l0QXZhaWxhYmxlRm9udEZhbWlsaWVzSU1QLCBzZWxmLCBfY21kKTsKKyAgICBOU0FycmF5ICph
dmFpbGFibGVGYW1pbGllcyA9IHd0ZkNhbGxJTVA8aWQ+KGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1p
bGllc0lNUCwgc2VsZiwgX2NtZCk7CiAKICAgICBOU011dGFibGVTZXQgKnBydW5lZEZhbWlsaWVz
U2V0ID0gW05TTXV0YWJsZVNldCBzZXRXaXRoQXJyYXk6YXZhaWxhYmxlRmFtaWxpZXNdOwogICAg
IFtwcnVuZWRGYW1pbGllc1NldCBpbnRlcnNlY3RTZXQ6YWxsb3dlZEZvbnRGYW1pbHlTZXQoKV07
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y3RpdmF0ZUZvbnRzLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvQWN0aXZhdGVGb250cy5tbQppbmRleCAyNzJkMDc4MmE2NjA2NWNhMjdkMmU4YjE4NTg1Y2M0
MTJlZjE1NTdhLi5jNDkxNzFhOGMwODAwOTQ5NGE3YzhjZTQ5NTcwMGYwYTJkODdmNGMzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY3RpdmF0
ZUZvbnRzLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjdGl2YXRlRm9udHMubW0KQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgTlNBcnJheSAqd3Ry
X05TRm9udE1hbmFnZXJfYXZhaWxhYmxlRm9udEZhbWlsaWVzKGlkIHNlbGYsIFNFTCBfY21kKQog
ICAgIGlmIChhdmFpbGFibGVGb250RmFtaWxpZXMpCiAgICAgICAgIHJldHVybiBhdmFpbGFibGVG
b250RmFtaWxpZXM7CiAgICAgCi0gICAgTlNBcnJheSAqYXZhaWxhYmxlRmFtaWxpZXMgPSB3dGZD
YWxsSU1QKGFwcEtpdEF2YWlsYWJsZUZvbnRGYW1pbGllc0lNUCwgc2VsZiwgX2NtZCk7CisgICAg
TlNBcnJheSAqYXZhaWxhYmxlRmFtaWxpZXMgPSB3dGZDYWxsSU1QPGlkPihhcHBLaXRBdmFpbGFi
bGVGb250RmFtaWxpZXNJTVAsIHNlbGYsIF9jbWQpOwogCiAgICAgTlNNdXRhYmxlU2V0ICpwcnVu
ZWRGYW1pbGllc1NldCA9IFtOU011dGFibGVTZXQgc2V0V2l0aEFycmF5OmF2YWlsYWJsZUZhbWls
aWVzXTsKICAgICBbcHJ1bmVkRmFtaWxpZXNTZXQgaW50ZXJzZWN0U2V0OmFsbG93ZWRGb250RmFt
aWx5U2V0KCldOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161762</attachid>
            <date>2012-08-31 13:41:57 -0700</date>
            <delta_ts>2012-08-31 13:45:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95242-20120831134145.patch</filename>
            <type>text/plain</type>
            <size>1388</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjdlYTI4Y2E3MTZkMDYz
ZTM4YTFhZTNkNDFhOWJjZTJiZTQxNWZmYS4uZjk2MWY0NTRlNWVjMDA4NTYxNDY4MGMwOTM2ZDk4
YjA5NThkNGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTMxICBQcmF0
aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBvYmpjX21zZ1NlbmQg
YW5kIElNUCBzaG91bGQgYmUgY2FzdCBhcHByb3ByaWF0ZWx5IGJlZm9yZSB1c2luZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb2xsb3cgb24gZml4IGZv
ciBNYWMgRVdTIC0gdXNlIG9iamMtcnVudGltZS5oIGluc3RlYWQgb2YgcnVudGltZS5oIHNvCisg
ICAgICAgIHRoYXQgaXQgZmluZHMgdGhlIGRlY2xhcmF0aW9uIGZvciBvYmpjX21zZ1NlbmQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5tbToKKwogMjAx
Mi0wOC0zMSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1Rlc3RzXSBB
ZGQgYmFzaWMgdGVzdHMgdG8gaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLm1tCmluZGV4
IGU2MzVjOGE1Y2IwNTc3YWRmMWI5OTU4NTIzMmE1YzQ2NjBjN2MwNTAuLjRkZjBlZjFjNGMxNjFl
Mzg5YmE0MTRjZGE4OTMwZWIxMjg0N2FlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLm1tCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRp
bWUuaD4KKyNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvT2JqY1J1
bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgo=
</data>
<flag name="review"
          id="172668"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>