<?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>52417</bug_id>
          
          <creation_ts>2011-01-13 17:51:07 -0800</creation_ts>
          <short_desc>Add EditorClient callbacks to override isDOMPasteAllowed and javaScriptCanAccessClipboard</short_desc>
          <delta_ts>2011-04-21 16:19:02 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>59153</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dcheng</cc>
    
    <cc>enrica</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>ojan</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>334059</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-13 17:51:07 -0800</bug_when>
    <thetext>Right now, the permission to execute copy, cut, paste is dictated by isDOMPasteAllowed and javaScriptCanAccessClipboard, which are called by supportedCopyCut and supportedPaste.  However, this won&apos;t allow fine-grained control such as allowing copy, cut, paste for certain origins.

I&apos;d like to make these EditorClient callbacks so that EditorClient can decide whether or not copy, cut, &amp; paste is supported or not per frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334068</commentid>
    <comment_count>1</comment_count>
      <attachid>78881</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-13 18:12:28 -0800</bug_when>
    <thetext>Created attachment 78881
proof of concept on Mac port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334110</commentid>
    <comment_count>2</comment_count>
      <attachid>78881</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-13 21:46:43 -0800</bug_when>
    <thetext>Comment on attachment 78881
proof of concept on Mac port

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

&gt; WebKit2/WebProcess/WebPage/WebPage.cpp:1189
&gt; -    settings-&gt;setDOMPasteAllowed(store.getBoolValueForKey(WebPreferencesKey::domPasteAllowedKey()));
&gt; +
&gt; +    m_isCopyCutEnabled = store.getBoolValueForKey(WebPreferencesKey::domPasteAllowedKey());

I don&apos;t know what&apos;s the correct thing to do for WebKit2. Could someone familiar with WebKit2 comment on what I should be doing here?  Enrica?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334134</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-13 23:24:06 -0800</bug_when>
    <thetext>&gt; +    m_isCopyCutEnabled = store.getBoolValueForKey(WebPreferencesKey::domPasteAllowedKey());

This looks good WebKit2-wise, but not so good logically. Why does m_isCopyCutEnabled have to do with domPasteAllowed?

These new client calls have extremely generic names that hide their meaning. Compare to javaScriptCanAccessClipboard() and isDOMPasteAllowed().

+    WebPreferences* pref = [m_webView preferences];

No abbr.?

I&apos;m not sure if giving some frames extra privileges is good security architecture. Adam will hopefully tell us if it&apos;s not! Perhaps this should be a page group option instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334866</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-14 23:48:18 -0800</bug_when>
    <thetext>We discussed this on IRC.  Our current thinking is to add SecurityOrigin::canPaste style functions and use a whitelist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347074</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-07 21:29:11 -0800</bug_when>
    <thetext>After another discussion with abarth and othermaciej, I think we&apos;re going back to the original plan of adding an method to EditorClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347138</commentid>
    <comment_count>6</comment_count>
      <attachid>81592</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-07 23:07:20 -0800</bug_when>
    <thetext>Created attachment 81592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351041</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 18:30:04 -0800</bug_when>
    <thetext>Hi, could someone review my patch?  This patch or some alternative mechanism to control copy &amp; paste per origin is required for a Chromium feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351045</commentid>
    <comment_count>8</comment_count>
      <attachid>81592</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-14 18:50:08 -0800</bug_when>
    <thetext>Comment on attachment 81592
Patch

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

&gt; Source/WebCore/editing/EditorCommand.cpp:1129
&gt; +    EditorClient* client = frame-&gt;editor()-&gt;client();
&gt; +    if (client &amp;&amp; client-&gt;canCopyCut())
&gt; +        return true;

It&apos;s strange that if the client returns false from canCopyCut, the web page might still be able to copy or cut.  That&apos;s why I recommended the design we use for allowPlugins where we pass the default as a parameter.  That way its easy for the client to accept the default and also easy for the client to have the final say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351098</commentid>
    <comment_count>9</comment_count>
      <attachid>82415</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 22:29:34 -0800</bug_when>
    <thetext>Created attachment 82415
Fixed per Adam&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351101</commentid>
    <comment_count>10</comment_count>
      <attachid>82415</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-14 22:38:17 -0800</bug_when>
    <thetext>Comment on attachment 82415
Fixed per Adam&apos;s comment

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp:256
&gt; +    notImplemented();

These probably don&apos;t need notImplemented().  These are perfectly fine implementations.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h:78
&gt; +    virtual bool canCopyCut(bool defaultValue) const;
&gt; +    virtual bool canPaste(bool defaultValue) const;

Are these the same semantically as the functions below?  If not, consider renaming them to allowPaste, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351108</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 22:55:50 -0800</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #10)
&gt; (From update of attachment 82415 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82415&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp:256
&gt; &gt; +    notImplemented();
&gt; 
&gt; These probably don&apos;t need notImplemented().  These are perfectly fine implementations.

Ok, will remove.

&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h:78
&gt; &gt; +    virtual bool canCopyCut(bool defaultValue) const;
&gt; &gt; +    virtual bool canPaste(bool defaultValue) const;
&gt; 
&gt; Are these the same semantically as the functions below?  If not, consider renaming them to allowPaste, etc.

Semantics depends on each implementation because some client might always return true/false to indicate that copy/cut/paste are always possible.  canUndo/canRedo are usually implemented to return true iff we have objects in the undo stack but clients are free to access control undo/redo per origin via these two functions as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351130</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-15 00:22:03 -0800</bug_when>
    <thetext>Committed r78532: &lt;http://trac.webkit.org/changeset/78532&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78881</attachid>
            <date>2011-01-13 18:12:28 -0800</date>
            <delta_ts>2011-02-07 23:07:14 -0800</delta_ts>
            <desc>proof of concept on Mac port</desc>
            <filename>bug-52417-20110113181226.patch</filename>
            <type>text/plain</type>
            <size>16552</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMDU2MjZmMzg3OTk3OGUyNjc2MTI0NTA5MzViODU4YmNiZGFmMjZlLi4y
NDhmZDJkZTY0Y2E0MzM5MTBjOTY4ZjU0NDQxMjM0ODM5Mjg1YjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTEtMDEtMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFj
ZSBpc0RPTVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCBieSBF
ZGl0b3JDbGllbnQgY2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjQxNworCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZENvcHlDdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6c3VwcG9ydGVkUGFzdGUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpjYW5Db3B5Q3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpjYW5QYXN0ZSk6CisgICAgICAgICogcGFn
ZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6c2V0TmVlZHNUaWdlck1haWxRdWlya3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoK
KwogMjAxMS0wMS0xMyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NTcyNS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggZTk0MThmMGVlMzg2ZDBmOGNmNzMzZTAzOWM2OWFmODc4OWQxNWI0Yy4uNmFkNmFj
Y2YxOGIxMjUwZDY1ODYwMDU4YTIxYTg3MmRjZmVlNzY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTc3Nyw3ICs3NzcsNiBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVk
RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczE2c2V0VXNlc1BhZ2VDYWNoZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxN3Nl
dFBsdWdpbnNFbmFibGVkRWIKLV9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0RE9NUGFzdGVBbGxv
d2VkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0RGVmYXVsdEZvbnRTaXplRWkKIF9fWk43
V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmlu
Z0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0TWluaW11bUZvbnRTaXplRWkKQEAgLTgyMiw3
ICs4MjEsNiBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyOXNldEFjY2VsZXJhdGVkMmRDYW52YXNF
bmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI5c2V0QXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjlzZXRXZWJBcmNoaXZlRGVidWdNb2RlRW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMc0ViCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MzMXNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlw
Ym9hcmRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzFzZXRTaHJpbmtzU3RhbmRhbG9uZUltYWdl
c1RvRml0RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczMyc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzJzZXROZWVkc0Fkb2JlRnJhbWVSZWxv
YWRpbmdRdWlya0ViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRl
eCA1ZGU0NGE2ODgyZjVmNmVkYTJjYjM1NWExMTM4YWRhM2RmYjc1NjlhLi4yMjc4MTE0OTAzMWM4
NWE5ZDEzMjE2ZTgwMjc5Yjc2MjgzNjQ2OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAKQEAgLTExMDAsMTQgKzExMDAsMTIgQEAgc3RhdGljIGJvb2wgc3VwcG9y
dGVkRnJvbU1lbnVPcktleUJpbmRpbmcoRnJhbWUqKQogCiBzdGF0aWMgYm9vbCBzdXBwb3J0ZWRD
b3B5Q3V0KEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSA/
IGZyYW1lLT5zZXR0aW5ncygpIDogMDsKLSAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3Mt
PmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKTsKKyAgICByZXR1cm4gZnJhbWUgJiYgZnJh
bWUtPmVkaXRvcigpLT5jbGllbnQoKS0+Y2FuQ29weUN1dCgpOwogfQogCiBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWRQYXN0ZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
ZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3MoKSA6IDA7Ci0gICAgcmV0dXJuIHNldHRpbmdzICYmIChz
ZXR0aW5ncy0+amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgpID8gc2V0dGluZ3MtPmlzRE9N
UGFzdGVBbGxvd2VkKCkgOiAwKTsKKyAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigp
LT5jbGllbnQoKS0+Y2FuUGFzdGUoKTsKIH0KIAogLy8gRW5hYmxlZCBmdW5jdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBlNGNlZmM1NGFhMDc3NmI5NzZmYTYxYzM0
YTAwYTViNjUwNTI3MmY5Li4wM2RlODYyMGYwMjY1OTExM2NiMzBkMjUxMTlhMDkxMDNhZGNhM2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MzEsNiArNDMxLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQ
dHI8RWRpdENvbW1hbmQ+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJh
dGlvbnMoKSB7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGFzdGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVkbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDcxYmEzZGRmOTUyNTk4MTJkNTYyN2Nl
MTIxNWEyN2MzNzkzMGUyOWEuLmMwOWRmNTgzNmQ0MjMzYzVlYWVkYTZhYTczNmZhN2E2Y2M4MGI2
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMTM3LDYgKzEzNyw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRy
PEVkaXRDb21tYW5kPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0
aW9ucygpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuVW5kbygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVkbygpIGNvbnN0ID0g
MDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggMTAwNTMzODEzNmE5MDk4ZTg3
M2FkYmU5YTZhOGY1YjU5ZWFlNmMyYy4uNWJkMTY1OWYyNDY3MjJhYTRhYzk3MGRmNzk4NWE1MmE0
MmVhOWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTExMyw3ICsxMTMsNiBAQCBT
ZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fYWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHModHJ1ZSkKICAgICAsIG1fYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
KHRydWUpCiAgICAgLCBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoZmFs
c2UpCi0gICAgLCBtX2phdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoZmFsc2UpCiAgICAgLCBt
X3Nob3VsZFByaW50QmFja2dyb3VuZHMoZmFsc2UpCiAgICAgLCBtX3RleHRBcmVhc0FyZVJlc2l6
YWJsZShmYWxzZSkKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC0xMjQsNyArMTIz
LDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3RyZWF0c0FueVRl
eHRDU1NMaW5rQXNTdHlsZXNoZWV0KGZhbHNlKQogICAgICwgbV9uZWVkc0xlb3BhcmRNYWlsUXVp
cmtzKGZhbHNlKQogICAgICwgbV9uZWVkc1RpZ2VyTWFpbFF1aXJrcyhmYWxzZSkKLSAgICAsIG1f
aXNET01QYXN0ZUFsbG93ZWQoZmFsc2UpCiAgICAgLCBtX3Nocmlua3NTdGFuZGFsb25lSW1hZ2Vz
VG9GaXQodHJ1ZSkKICAgICAsIG1fdXNlc1BhZ2VDYWNoZShmYWxzZSkKICAgICAsIG1fc2hvd3NV
UkxzSW5Ub29sVGlwcyhmYWxzZSkKQEAgLTM0NiwxMSArMzQ0LDYgQEAgdm9pZCBTZXR0aW5nczo6
c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShib29sIGphdmFTY3JpcHRD
YW5PcGVuV2kKICAgICBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBq
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OwogfQogCi12b2lkIFNldHRpbmdz
OjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJvb2wgamF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZCkKLXsKLSAgICBtX2phdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQgPSBqYXZh
U2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkOwotfQotCiB2b2lkIFNldHRpbmdzOjpzZXREZWZhdWx0
VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIGRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKQog
ewogICAgIG1fZGVmYXVsdFRleHRFbmNvZGluZ05hbWUgPSBkZWZhdWx0VGV4dEVuY29kaW5nTmFt
ZTsKQEAgLTQyNiwxMSArNDE5LDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0TmVlZHNUaWdlck1haWxR
dWlya3MoYm9vbCBuZWVkc1F1aXJrcykKIHsKICAgICBtX25lZWRzVGlnZXJNYWlsUXVpcmtzID0g
bmVlZHNRdWlya3M7CiB9Ci0gICAgCi12b2lkIFNldHRpbmdzOjpzZXRET01QYXN0ZUFsbG93ZWQo
Ym9vbCBET01QYXN0ZUFsbG93ZWQpCi17Ci0gICAgbV9pc0RPTVBhc3RlQWxsb3dlZCA9IERPTVBh
c3RlQWxsb3dlZDsKLX0KIAogdm9pZCBTZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggZjQ2MzBkZTRhOTQy
ZDFmNTM2MTIyMzJmNmQzMDY2YTlhMjcxNGY2Yy4uZWViODYyZTAxODYxYzJjNmZhODA0ZGZhMTJm
ZDI2NDdmODI4YjE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMTA3LDkgKzEwNyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5KGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHk7IH0KIAotICAgICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5B
Y2Nlc3NDbGlwYm9hcmQoYm9vbCk7Ci0gICAgICAgIGJvb2wgamF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZDsg
fQotCiAgICAgICAgIHZvaWQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wpOwogICAg
ICAgICBib29sIGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZDsgfQogCkBAIC0xOTksOSArMTk2LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE5lZWRzVGlnZXJNYWlsUXVpcmtzKGJvb2wp
OwogICAgICAgICBib29sIG5lZWRzVGlnZXJNYWlsUXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9u
ZWVkc1RpZ2VyTWFpbFF1aXJrczsgfQogCi0gICAgICAgIHZvaWQgc2V0RE9NUGFzdGVBbGxvd2Vk
KGJvb2wpOwotICAgICAgICBib29sIGlzRE9NUGFzdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0RPTVBhc3RlQWxsb3dlZDsgfQotICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgc2V0
TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUpOyAvLyBJbnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vj
b25kcy4KICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0VXNlc1BhZ2VDYWNoZShib29sKTsKQEAg
LTM5Miw3ICszODYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9hbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczogMTsKICAgICAgICAgYm9vbCBtX2FsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMczogMTsKICAgICAgICAgYm9vbCBtX2phdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkgOiAxOwotICAgICAgICBib29sIG1famF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZCA6IDE7CiAgICAgICAgIGJvb2wgbV9zaG91bGRQcmludEJhY2tncm91bmRz
IDogMTsKICAgICAgICAgYm9vbCBtX3RleHRBcmVhc0FyZVJlc2l6YWJsZSA6IDE7CiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQpAQCAtNDAzLDcgKzM5Niw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgYm9vbCBtX3RyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0IDog
MTsKICAgICAgICAgYm9vbCBtX25lZWRzTGVvcGFyZE1haWxRdWlya3MgOiAxOwogICAgICAgICBi
b29sIG1fbmVlZHNUaWdlck1haWxRdWlya3MgOiAxOwotICAgICAgICBib29sIG1faXNET01QYXN0
ZUFsbG93ZWQgOiAxOwogICAgICAgICBib29sIG1fc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0Zp
dCA6IDE7CiAgICAgICAgIGJvb2wgbV91c2VzUGFnZUNhY2hlOiAxOwogICAgICAgICBib29sIG1f
c2hvd3NVUkxzSW5Ub29sVGlwcyA6IDE7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkNmFjYWVmMzhlODQxODYwZDc1OWUyYjQ5
MDhiZGYyNDhmYTI4NzUuLjZmZDBkMmE2MWRjZWIwNzhiMjdlMzRmNGI2N2U0N2JhMmZmNGU5YzQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEtMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSBpc0RPTVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBi
b2FyZCBieSBFZGl0b3JDbGllbnQgY2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjYW5Db3B5Q3V0KToKKyAgICAgICAg
KFdlYkVkaXRvckNsaWVudDo6Y2FuUGFzdGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOl0p
OgorCiAyMDExLTAxLTEyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBkNWFjODkxYjdhNmMwZTBiNzA1ODkyNmIyMzFlOGI5
NWQ5ZWI5NmMyLi5mMzYxZDAwNWQ5ZDk3ZmM2OGJlYTFhZmY2YzliNmUzODM4NGUyZGQzIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEwNCw3ICsx
MDQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8o
UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKLSAgICAKKworICAgIHZp
cnR1YWwgYm9vbCBjYW5Db3B5Q3V0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblBhc3Rl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgY2FuUmVkbygpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA1Y2JiMGZlZDgyODkwYTdlYjYzNjJhOWEzNzAwNTRj
MDcxZmVmZTA5Li5kYTMwY2IxOTU0MjlhNDkyZDFhMmQ4ZDM2ODViZmIzNDU4NmUyMjlhIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysg
Yi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDksNiAr
NDksNyBAQAogI2ltcG9ydCAiV2ViS2l0VmVyc2lvbkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViTG9j
YWxpemFibGVTdHJpbmdzLmgiCiAjaW1wb3J0ICJXZWJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAi
V2ViUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldlYlJlc291cmNlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2Uu
aD4KQEAgLTU5NCw2ICs1OTUsMTcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1Jl
ZG9PcGVyYXRpb25zKCkKICAgICB9ICAgIAogfQogCitib29sIFdlYkVkaXRvckNsaWVudDo6Y2Fu
Q29weUN1dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtbbV93ZWJWaWV3IHByZWZlcmVuY2VzXSBq
YXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkXTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OmNhblBhc3RlKCkgY29uc3QKK3sKKyAgICBXZWJQcmVmZXJlbmNlcyogcHJlZiA9IFttX3dlYlZp
ZXcgcHJlZmVyZW5jZXNdOworICAgIHJldHVybiBbcHJlZiBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkXSAmJiBbcHJlZiBpc0RPTVBhc3RlQWxsb3dlZF07Cit9CisKIGJvb2wgV2ViRWRpdG9y
Q2xpZW50OjpjYW5VbmRvKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1ttX3dlYlZpZXcgdW5kb01h
bmFnZXJdIGNhblVuZG9dOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA2MzhkMzI4NjA2OGI5MmZi
MjkzNjc4YTI1MTNhZGQ0YjhlYWQxYzA1Li5jMTkxNjI2YjJkYjdjZDc2NWRhYzYzNmM4NWMyMDM4
MDg5NGMxODFkIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTQ2Miw3ICsxNDYyLDYgQEAgc3Rh
dGljIGJvb2wgZmFzdERvY3VtZW50VGVhcmRvd25FbmFibGVkKCkKICAgICBzZXR0aW5ncy0+c2V0
RWRpdGFibGVMaW5rQmVoYXZpb3IoY29yZShbcHJlZmVyZW5jZXMgZWRpdGFibGVMaW5rQmVoYXZp
b3JdKSk7CiAgICAgc2V0dGluZ3MtPnNldEVkaXRpbmdCZWhhdmlvclR5cGUoY29yZShbcHJlZmVy
ZW5jZXMgZWRpdGluZ0JlaGF2aW9yXSkpOwogICAgIHNldHRpbmdzLT5zZXRUZXh0RGlyZWN0aW9u
U3VibWVudUluY2x1c2lvbkJlaGF2aW9yKGNvcmUoW3ByZWZlcmVuY2VzIHRleHREaXJlY3Rpb25T
dWJtZW51SW5jbHVzaW9uQmVoYXZpb3JdKSk7Ci0gICAgc2V0dGluZ3MtPnNldERPTVBhc3RlQWxs
b3dlZChbcHJlZmVyZW5jZXMgaXNET01QYXN0ZUFsbG93ZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0
VXNlc1BhZ2VDYWNoZShbc2VsZiB1c2VzUGFnZUNhY2hlXSk7CiAgICAgc2V0dGluZ3MtPnNldFNo
b3dzVVJMc0luVG9vbFRpcHMoW3ByZWZlcmVuY2VzIHNob3dzVVJMc0luVG9vbFRpcHNdKTsKICAg
ICBzZXR0aW5ncy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChbcHJlZmVyZW5jZXMgZGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZF0pOwpAQCAtMTQ4NCw3ICsxNDgzLDYgQEAgc3RhdGljIGJvb2wgZmFz
dERvY3VtZW50VGVhcmRvd25FbmFibGVkKCkKICAgICBzZXR0aW5ncy0+c2V0V2ViQXJjaGl2ZURl
YnVnTW9kZUVuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkXSk7
CiAgICAgc2V0dGluZ3MtPnNldExvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoW3ByZWZl
cmVuY2VzIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+
c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKFtwcmVmZXJlbmNlcyBvZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRdKTsKLSAgICBzZXR0aW5ncy0+c2V0SmF2YVNjcmlw
dENhbkFjY2Vzc0NsaXBib2FyZChbcHJlZmVyZW5jZXMgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBi
b2FyZF0pOwogICAgIHNldHRpbmdzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChbcHJlZmVyZW5jZXMg
aXNYU1NBdWRpdG9yRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRFbmZvcmNlQ1NTTUlNRVR5
cGVJbk5vUXVpcmtzTW9kZSghV0tBcHBWZXJzaW9uQ2hlY2tMZXNzVGhhbihAImNvbS5hcHBsZS5p
V2ViIiwgLTEsIDIuMSkpOwogICAgIHNldHRpbmdzLT5zZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQo
W3ByZWZlcmVuY2VzIGlzRE5TUHJlZmV0Y2hpbmdFbmFibGVkXSk7CmRpZmYgLS1naXQgYS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhhZjk1YjAwMDM4NGM3NDgx
ZWRiZjQyMmVmODBmNzU3NjkwNTRlNDMuLjNiMGY0NjIxNjAyNjg2ZjhhZTQ3ZjViYTRhNjdhMDlj
YmMxZjNiNTcgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDEtMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZSBpc0RPTVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZCBieSBFZGl0b3JDbGllbnQgY2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNworCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJF
ZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6OmNhblBhc3RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0NvcHlDdXRFbmFibGVkKToK
KwogMjAxMS0wMS0xMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGUzZGI5Njc5ZDc4Nzli
NWJmNTkzY2M3ZjBlYjRiZmNlNzVjMDZlNWUuLjI4NzhiMjQ0MGM3YWJjODllZjJlMmU5NzhkNDFm
YTA3Njc3YWIxYzYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNTAsNiArMjUwLDE3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyQWxsRWRpdENvbW1hbmRzKCkpOwogfQogCitib29s
IFdlYkVkaXRvckNsaWVudDo6Y2FuQ29weUN1dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFn
ZS0+aXNDb3B5Q3V0RW5hYmxlZCgpOworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuUGFz
dGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MGJkOGM2OTMwZDA5OWEwN2ZjMDEwNjEzNDJhMDRlNjA0
OTkyOGZhLi43YjIzNjBkNTk3ODQ4N2E0NWI2ZDllNWQ0NjQwMjMwNTZmYjQyYmEwIDEwMDY0NAot
LS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC03NCw5ICs3NCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNv
bW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBj
YW5Db3B5Q3V0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblBhc3RlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVk
bygpIGNvbnN0OwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHVuZG8oKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVkbygpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDU0MzU1N2MzYjYxMjM4ZDU2MjZkMzExNzZmY2FhNTE1MTIzOGQ3YjMuLmQ3OTExNjhmNjVlNzcx
OGFiNTcwMzIyNTEwN2E0Yjk2Yjg5MDU2ZTEgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAg
LCBtX2lzSW5SZWRvKGZhbHNlKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKICAgICAsIG1fdGFi
VG9MaW5rcyhmYWxzZSkKKyAgICAsIG1faXNDb3B5Q3V0RW5hYmxlZChmYWxzZSkKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgLCBtX3dpbmRvd0lzVmlzaWJsZShmYWxzZSkKICAgICAsIG1faXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQocGFyYW1ldGVycy5pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZCkKQEAgLTExODQsNyArMTE4NSw4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGluZ3MtPnNldFVzZXNQ
YWdlQ2FjaGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp1c2Vz
UGFnZUNhY2hlS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldFBhZ2luYXRlRHVy
aW5nTGF5b3V0RW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OnBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZEtleSgpKSk7Ci0gICAgc2V0dGluZ3MtPnNl
dERPTVBhc3RlQWxsb3dlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OmRvbVBhc3RlQWxsb3dlZEtleSgpKSk7CisKKyAgICBtX2lzQ29weUN1dEVuYWJsZWQgPSBz
dG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRvbVBhc3RlQWxsb3dl
ZEtleSgpKTsKIAogICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtRm9udFNpemUoc3RvcmUuZ2V0VUlu
dDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Om1pbmltdW1Gb250U2l6ZUtleSgpKSk7
CiAgICAgc2V0dGluZ3MtPnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoc3RvcmUuZ2V0VUludDMy
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Om1pbmltdW1Mb2dpY2FsRm9udFNpemVLZXko
KSkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQ5MmY1NGI2MTQ1NWI3
MGRhNTBjYjg1Zjc0YzhjMjU3NGI3YzA0ZDkuLjY4OWM4Nzg3Mjc1Y2MyM2M1YTVhNWI4ZjBkNDFj
NzFjNzU1OTA3YjIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI4OSw2
ICsyODksOCBAQCBwdWJsaWM6CiAgICAgLy8gYW55IHN5bmNocm9ub3VzIG1lc3NhZ2VzLCBhbmQg
c2hvdWxkIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vODc3NTExNT4gaXMgZml4ZWQu
CiAgICAgdm9pZCBkdW1teShib29sJik7CiAKKyAgICBib29sIGlzQ29weUN1dEVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzQ29weUN1dEVuYWJsZWQ7IH0KKwogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBib29sIGlzU3BlYWtpbmcoKTsKICAgICB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpOwpA
QCAtNDI5LDYgKzQzMSw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdGFiVG9MaW5rczsKIAor
ICAgIGJvb2wgbV9pc0NvcHlDdXRFbmFibGVkOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgd2luZG93IGlzIHZpc2libGUgb3Igbm90LgogICAgIGJv
b2wgbV93aW5kb3dJc1Zpc2libGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81592</attachid>
            <date>2011-02-07 23:07:20 -0800</date>
            <delta_ts>2011-02-14 22:29:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52417-20110208160717.patch</filename>
            <type>text/plain</type>
            <size>24358</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDItMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEVkaXRvckNsaWVudCBjYWxsYmFja3MgdG8gb3ZlcnJpZGUg
aXNET01QYXN0ZUFsbG93ZWQgYW5kIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDE3CisKKyAgICAg
ICAgQWRkZWQgdHdvIGNhbGxiYWNrIGZ1bmN0aW9ucywgY2FuQ29weUN1dCBhbmQgY2FuUGFzdGUg
dG8gRWRpdG9yQ2xpZW50LiBXaGVuIHRoZXNlIGZ1bmN0aW9ucworICAgICAgICByZXR1cm4gdHJ1
ZSwgaXQgYWxsb3dzIGNvcHkvY3V0IGFuZCBwYXN0ZSByZXNwZWN0aXZlbHkgcmVnYXJkbGVzcyBv
ZiB0aGUgdmFsdWVzIG9mCisgICAgICAgIGlzRE9NUGFzdGVBbGxvd2VkIGFuZCBqYXZhU2NyaXB0
Q2FuQWNjZXNzQ2xpcGJvYXJkIGluIHRoZSBzZXR0aW5nLgorCisgICAgICAgIFRoZXNlIGNhbGxi
YWNrcyBhbGxvd3MgZW1iZWRkZXJzIHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCBjb3B5L2N1dC9w
YXN0ZSBzaG91bGQgYmUgZW5hYmxlZAorICAgICAgICBwZXIgZnJhbWUgYW5kIHRodXMgcGVyIG9y
aWdpbiByYXRoZXIgdGhhbiBwZXIgcGFnZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIGFk
ZGVkIHNpbmNlIHRoaXMgaXMgYSBtZXJlIEFQSSBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkQ29weUN1dCk6
CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRQYXN0ZSk6CisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlFZGl0b3JDbGllbnQ6OmNhbkNv
cHlDdXQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlFZGl0b3JDbGllbnQ6OmNhblBhc3RlKToK
KyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorCiAyMDExLTAyLTA3ICBNaWtlIFJlZWQg
IDxyZWVkQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxs
LgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCShyZXZpc2lv
biA3Nzc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMjEsMTQgKzExMjEsMjggQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
RnJvbU1lbnVPcktleUJpbmRpbgogCiBzdGF0aWMgYm9vbCBzdXBwb3J0ZWRDb3B5Q3V0KEZyYW1l
KiBmcmFtZSkKIHsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0
aW5ncygpIDogMDsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAg
aWYgKGNsaWVudCAmJiBjbGllbnQtPmNhbkNvcHlDdXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKICAgICByZXR1
cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKTsK
IH0KIAogc3RhdGljIGJvb2wgc3VwcG9ydGVkUGFzdGUoRnJhbWUqIGZyYW1lKQogewotICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lID8gZnJhbWUtPnNldHRpbmdzKCkgOiAwOwotICAgIHJl
dHVybiBzZXR0aW5ncyAmJiAoc2V0dGluZ3MtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQo
KSA/IHNldHRpbmdzLT5pc0RPTVBhc3RlQWxsb3dlZCgpIDogMCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFt
ZS0+ZWRpdG9yKCktPmNsaWVudCgpOworICAgIGlmIChjbGllbnQgJiYgY2xpZW50LT5jYW5QYXN0
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZy
YW1lLT5zZXR0aW5ncygpOworICAgIHJldHVybiBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+amF2YVNj
cmlwdENhbkFjY2Vzc0NsaXBib2FyZCgpICYmIHNldHRpbmdzLT5pc0RPTVBhc3RlQWxsb3dlZCgp
OwogfQogCiAvLyBFbmFibGVkIGZ1bmN0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAkocmV2aXNpb24gNzc3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0Myw2ICs0NDMsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxFZGl0Q29t
bWFuZD4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpIHsg
fQogCisgICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1Jl
ZlB0cjxFZGl0Q29tbWFuZD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGFzdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGNhblVuZG8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25z
dCA9IDA7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NzkwNSkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAy
LTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFZGl0b3JDbGllbnQgY2FsbGJhY2tz
IHRvIG92ZXJyaWRlIGlzRE9NUGFzdGVBbGxvd2VkIGFuZCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MjQxNworCisgICAgICAgIEFkZGVkIHR3byBjYWxsYmFjayBmdW5jdGlvbnMsIGNhbkNvcHlDdXQg
YW5kIGNhblBhc3RlIHRvIEVkaXRvckNsaWVudC4gVGhleSBhcmUgY3VycmVudGx5CisgICAgICAg
IG5vdCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojpj
YW5Db3B5Q3V0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Y2Fu
UGFzdGUpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorCiAyMDExLTAyLTA3ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IHRoZSAzMi1iaXQgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDYg
KzI1MSwxOCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2xlYXJVbmRvUmVkb09wZXJhCiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyQWxsRWRpdENvbW1hbmRz
KCkpOwogfQogCitib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuQ29weUN1dCgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViRWRp
dG9yQ2xpZW50OjpjYW5QYXN0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpjYW5VbmRvKCkgY29u
c3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShy
ZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRy
PFdlYkNvcmU6OkVkaXRDb21tYW5kPik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBjYW5QYXN0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRv
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3NzkwNSkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMDItMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVkaXRvckNsaWVudCBjYWxs
YmFja3MgdG8gb3ZlcnJpZGUgaXNET01QYXN0ZUFsbG93ZWQgYW5kIGphdmFTY3JpcHRDYW5BY2Nl
c3NDbGlwYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUyNDE3CisKKyAgICAgICAgQWRkZWQgdHdvIGNhbGxiYWNrIGZ1bmN0aW9ucywgY2FuQ29w
eUN1dCBhbmQgY2FuUGFzdGUgdG8gRWRpdG9yQ2xpZW50LiBUaGV5IGFyZSBjdXJyZW50bHkKKyAg
ICAgICAgbm90IGltcGxlbWVudGVkLgorCisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmNhblBhc3RlKTogQWRkZWQu
CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuaDoKKwogMjAxMS0wMi0wNyAgQWxleGV5
IE1hcmluaWNoZXYgIDxhbWFyaW5pY2hldkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyMiw2ICszMjIsMTYgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjbGVhclVuZG9SZWRvT3Bl
cgogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50SW1wbDo6
Y2FuQ29weUN1dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVkaXRv
ckNsaWVudEltcGw6OmNhblBhc3RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuVW5kbygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFt
X3VuZG9TdGFjay5pc0VtcHR5KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRWRpdG9yQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiAr
NzgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8o
UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29weUN1dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNh
blJlZG8oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdW5kbygpOwpJbmRleDogU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzc5MDUpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0wNyAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgRWRpdG9yQ2xpZW50IGNhbGxiYWNrcyB0byBvdmVycmlkZSBpc0RPTVBh
c3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MTcKKworICAgICAgICBBZGRl
ZCB0d28gY2FsbGJhY2sgZnVuY3Rpb25zLCBjYW5Db3B5Q3V0IGFuZCBjYW5QYXN0ZSB0byBFZGl0
b3JDbGllbnQuIFRoZXkgYXJlIGN1cnJlbnRseQorICAgICAgICBub3QgaW1wbGVtZW50ZWQuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpjYW5Db3B5Q3V0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmNhblBhc3RlKTogQWRkZWQuCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisKIDIwMTEtMDItMDcgIEVucmljYSBDYXN1
Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBBZGFtIFJvYmVuIGFu
ZCBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNzc3NzgpCisrKyBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjYsNiArMTY2LDE4IEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpjbGVhclVuZG9S
ZWRvT3BlcmEKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEVkaXRvckNsaWVudEVm
bDo6Y2FuQ29weUN1dCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5QYXN0ZSgpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRWRp
dG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJ
bmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmgJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFz
c1JlZlB0cjxFZGl0Q29tbWFuZD4pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3Bl
cmF0aW9ucygpOwogCisgICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuUGFzdGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHJldmlzaW9uIDc3OTA1KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMDcgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEVkaXRvckNsaWVudCBjYWxsYmFja3MgdG8gb3ZlcnJpZGUgaXNE
T01QYXN0ZUFsbG93ZWQgYW5kIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDE3CisKKyAgICAgICAg
QWRkZWQgdHdvIGNhbGxiYWNrIGZ1bmN0aW9ucywgY2FuQ29weUN1dCBhbmQgY2FuUGFzdGUgdG8g
RWRpdG9yQ2xpZW50LiBUaGV5IGFyZSBjdXJyZW50bHkKKyAgICAgICAgbm90IGltcGxlbWVudGVk
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpjYW5Db3B5Q3V0KTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OkVkaXRvckNsaWVudDo6Y2FuUGFzdGUpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKwogMjAxMS0wMi0wNyAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIEFkYW0gUm9iZW4gYW5kIERh
cmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwNiw2ICs1MDYsMTYgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVy
YXRpbwogICAgIHJlZG9TdGFjay5jbGVhcigpOwogfQogCitib29sIEVkaXRvckNsaWVudDo6Y2Fu
Q29weUN1dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVkaXRvckNs
aWVudDo6Y2FuUGFzdGUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBF
ZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25zdAogewogICAgIHJldHVybiAhdW5kb1N0YWNrLmlz
RW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5oCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
NiArMTAzLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4p
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAorICAg
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FuUGFzdGUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKIApJbmRleDogU291cmNl
L1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9oYWlr
dS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTA1KQorKysgU291cmNlL1dlYktpdC9oYWlrdS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0wNyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgRWRpdG9yQ2xpZW50IGNhbGxiYWNrcyB0byBvdmVycmlk
ZSBpc0RPTVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MTcKKworICAg
ICAgICBBZGRlZCB0d28gY2FsbGJhY2sgZnVuY3Rpb25zLCBjYW5Db3B5Q3V0IGFuZCBjYW5QYXN0
ZSB0byBFZGl0b3JDbGllbnQuIFRoZXkgYXJlIGN1cnJlbnRseQorICAgICAgICBub3QgaW1wbGVt
ZW50ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6Y2FuQ29weUN1dCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6OmNhblBhc3RlKTogQWRkZWQu
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaDoKKwogMjAxMS0w
Mi0wNyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIEFkYW0gUm9iZW4gYW5kIERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAJKHJl
dmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsMTggQEAgdm9p
ZCBFZGl0b3JDbGllbnRIYWlrdTo6Y2xlYXJVbmRvUmVkb09wZQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50SGFpa3U6OmNhbkNvcHlDdXQoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVkaXRv
ckNsaWVudEhhaWt1OjpjYW5QYXN0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRWRpdG9yQ2xpZW50SGFpa3U6OmNhblVuZG8o
KSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCShyZXZp
c2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBh
c3NSZWZQdHI8RWRpdENvbW1hbmQ+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1Jl
ZG9PcGVyYXRpb25zKCk7CiAKKyAgICAgICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCBib29sIGNhblBhc3RlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTA1KQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMDItMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVkaXRvckNsaWVudCBjYWxs
YmFja3MgdG8gb3ZlcnJpZGUgaXNET01QYXN0ZUFsbG93ZWQgYW5kIGphdmFTY3JpcHRDYW5BY2Nl
c3NDbGlwYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUyNDE3CisKKyAgICAgICAgQWRkZWQgdHdvIGNhbGxiYWNrIGZ1bmN0aW9ucywgY2FuQ29w
eUN1dCBhbmQgY2FuUGFzdGUgdG8gRWRpdG9yQ2xpZW50LiBUaGV5IGFyZSBjdXJyZW50bHkKKyAg
ICAgICAgbm90IGltcGxlbWVudGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjYW5Db3B5Q3V0KTogQWRkZWQuCisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OmNhblBhc3RlKTogQWRkZWQuCisKIDIwMTEtMDItMDcgIEVucmlj
YSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBBZGFtIFJv
YmVuIGFuZCBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDQsNyArMTA0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVk
aXRDb21tYW5kPik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7
Ci0gICAgCisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBjYW5QYXN0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0J
KHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNiArNTk0LDE2IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmEKICAgICB9ICAgIAogfQogCitib29s
IFdlYkVkaXRvckNsaWVudDo6Y2FuQ29weUN1dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuUGFzdGUoKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25zdAog
ewogICAgIHJldHVybiBbW21fd2ViVmlldyB1bmRvTWFuYWdlcl0gY2FuVW5kb107CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkocmV2aXNpb24gNzc5MDUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTA3ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBFZGl0b3JDbGllbnQgY2FsbGJhY2tzIHRvIG92ZXJyaWRlIGlz
RE9NUGFzdGVBbGxvd2VkIGFuZCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNworCisgICAgICAg
IEFkZGVkIHR3byBjYWxsYmFjayBmdW5jdGlvbnMsIGNhbkNvcHlDdXQgYW5kIGNhblBhc3RlIHRv
IEVkaXRvckNsaWVudC4gVGhleSBhcmUgY3VycmVudGx5CisgICAgICAgIG5vdCBpbXBsZW1lbnRl
ZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpjYW5Db3B5Q3V0KTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Y2FuUGFzdGUpOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCiAyMDExLTAyLTA3ICBCZW5qYW1pbiBQ
b3VsYWluICA8aWtpcG91QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjQsNiArMjY0LDE2IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmNsZWFyVW5kb1Jl
ZG9PcGVyYXQKICNlbmRpZgogfQogCitib29sIEVkaXRvckNsaWVudFF0OjpjYW5Db3B5Q3V0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OmNh
blBhc3RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRWRpdG9yQ2xp
ZW50UXQ6OmNhblVuZG8oKSBjb25zdAogewogI2lmZGVmIFFUX05PX1VORE9TVEFDSwpJbmRleDog
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAko
cmV2aXNpb24gNzc3NzgpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1h
bmQ+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAorICAg
IHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblBh
c3RlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuUmVkbygpIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2
aXNpb24gNzc5MDUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgRWRpdG9yQ2xpZW50IGNhbGxiYWNrcyB0byBvdmVycmlkZSBpc0RPTVBhc3RlQWxsb3dl
ZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MTcKKworICAgICAgICBBZGRlZCB0d28gY2Fs
bGJhY2sgZnVuY3Rpb25zLCBjYW5Db3B5Q3V0IGFuZCBjYW5QYXN0ZSB0byBFZGl0b3JDbGllbnQu
IFRoZXkgYXJlIGN1cnJlbnRseQorICAgICAgICBub3QgaW1wbGVtZW50ZWQuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpjYW5Db3B5Q3V0KTogQWRkZWQuCisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNh
blBhc3RlKTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisKIDIwMTEtMDItMDcgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBBZGFtIFJvYmVuIGFuZCBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAkocmV2aXNpb24gNzc3NzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjksNiArNTY5LDE4IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmEKICAgICB9CiB9CiAKK2Jvb2wg
V2ViRWRpdG9yQ2xpZW50OjpjYW5Db3B5Q3V0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmNhblBh
c3RlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25zdAogewogICAgIEJPT0wg
cmVzdWx0ID0gRkFMU0U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gNzc3NzgpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRv
KFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKICAgICB2b2lkIGNsZWFyVW5kb1Jl
ZG9PcGVyYXRpb25zKCk7CiAKKyAgICBib29sIGNhbkNvcHlDdXQoKSBjb25zdDsKKyAgICBib29s
IGNhblBhc3RlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CiAgICAgYm9vbCBj
YW5SZWRvKCkgY29uc3Q7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24g
Nzc5MDUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDExLTAyLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBFZGl0b3JDbGllbnQgY2FsbGJhY2tzIHRvIG92ZXJyaWRlIGlzRE9NUGFzdGVBbGxvd2VkIGFu
ZCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNworCisgICAgICAgIEFkZGVkIHR3byBjYWxsYmFj
ayBmdW5jdGlvbnMsIGNhbkNvcHlDdXQgYW5kIGNhblBhc3RlIHRvIEVkaXRvckNsaWVudC4gVGhl
eSBhcmUgY3VycmVudGx5CisgICAgICAgIG5vdCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRp
dG9yQ2xpZW50V2luQ0U6OmNhbkNvcHlDdXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RWRp
dG9yQ2xpZW50V2luQ0U6OmNhblBhc3RlKTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0wMi0wNyAgRW5yaWNhIENhc3VjY2kgIDxl
bnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIEFkYW0gUm9iZW4gYW5kIERhcmlu
IEFkbGVyLgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2NSw2ICsxNjUsMTggQEAgdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6Y2xl
YXJVbmRvUmVkb09wZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRWRpdG9yQ2xp
ZW50V2luQ0U6OmNhbkNvcHlDdXQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVkaXRvckNsaWVudFdpbkNFOjpjYW5QYXN0ZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IGJvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmNhblVuZG8oKSBjb25zdAogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
Q29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuQ29weUN1dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGNhblJlZG8oKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTA1KQor
KysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMS0wMi0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRWRpdG9yQ2xp
ZW50IGNhbGxiYWNrcyB0byBvdmVycmlkZSBpc0RPTVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlw
dENhbkFjY2Vzc0NsaXBib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI0MTcKKworICAgICAgICBBZGRlZCB0d28gY2FsbGJhY2sgZnVuY3Rpb25z
LCBjYW5Db3B5Q3V0IGFuZCBjYW5QYXN0ZSB0byBFZGl0b3JDbGllbnQuIFRoZXkgYXJlIGN1cnJl
bnRseQorICAgICAgICBub3QgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0VkaXRvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4Ojpj
YW5Db3B5Q3V0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6Y2Fu
UGFzdGUpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6
CisKIDIwMTEtMDItMDcgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBBZGFtIFJvYmVuIGFuZCBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkocmV2aXNp
b24gNzc3NzgpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50
V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDE4IEBAIHZvaWQgRWRpdG9yQ2xp
ZW50V3g6OmNsZWFyVW5kb1JlZG9PcGVyYXQKICAgICB9CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50
V3g6OmNhbkNvcHlDdXQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEVkaXRvckNsaWVudFd4OjpjYW5QYXN0ZSgpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRWRp
dG9yQ2xpZW50V3g6OmNhblVuZG8oKSBjb25zdAogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpJbmRleDogU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgJKHJldmlzaW9u
IDc3Nzc4KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAorICAgIHZpcnR1YWwg
Ym9vbCBjYW5Db3B5Q3V0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblBhc3RlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmVkbygpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82415</attachid>
            <date>2011-02-14 22:29:34 -0800</date>
            <delta_ts>2011-02-14 22:38:17 -0800</delta_ts>
            <desc>Fixed per Adam&apos;s comment</desc>
            <filename>bug-52417-20110215152931.patch</filename>
            <type>text/plain</type>
            <size>25593</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDItMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEVkaXRvckNsaWVudCBjYWxsYmFja3MgdG8gb3ZlcnJpZGUg
aXNET01QYXN0ZUFsbG93ZWQgYW5kIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDE3CisKKyAgICAg
ICAgQWRkZWQgdHdvIGNhbGxiYWNrIGZ1bmN0aW9ucywgY2FuQ29weUN1dCBhbmQgY2FuUGFzdGUg
dG8gRWRpdG9yQ2xpZW50LiBUaGVzZSBmdW5jdGlvbnMKKyAgICAgICAgcmV0dXJucyB0cnVlIGlm
ZiB0aGUgY3VycmVudCBmcmFtZSBzaG91bGQgYmUgYWJsZSB0byBjb3B5L2N1dCBhbmQgcGFzdGUg
cmVzcGVjdGl2ZWx5LgorICAgICAgICBUaGV5IHRha2UgdGhlIGRlZmF1bHQgdmFsdWUgZGV0ZXJt
aW5lZCBieSBpc0RPTVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZC4KKworICAgICAgICBUaGVzZSBjYWxsYmFja3MgYWxsb3dzIGVtYmVkZGVycyB0byBkZWNpZGUg
d2hldGhlciBvciBub3QgY29weS9jdXQvcGFzdGUgc2hvdWxkIGJlIGVuYWJsZWQKKyAgICAgICAg
cGVyIGZyYW1lIGFuZCB0aHVzIHBlciBvcmlnaW4gcmF0aGVyIHRoYW4gcGVyIHBhZ2UuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGFyZSBhZGRlZCBzaW5jZSB0aGlzIGlzIGEgV2ViS2l0L1dlYkNv
cmUgaW50ZXJmYWNlIGNoYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KTogQ2FsbHMgY2FuQ29weUN1
dC4KKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFBhc3RlKTogQ2FsbHMgY2FuUGFzdGUuCisg
ICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlF
ZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
RWRpdG9yQ2xpZW50OjpjYW5QYXN0ZSk6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xp
ZW50Lmg6CisKIDIwMTEtMDItMDcgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyMSwxNCAr
MTEyMSwyNiBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluCiAKIHN0
YXRpYyBib29sIHN1cHBvcnRlZENvcHlDdXQoRnJhbWUqIGZyYW1lKQogewotICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGZyYW1lID8gZnJhbWUtPnNldHRpbmdzKCkgOiAwOwotICAgIHJldHVybiBz
ZXR0aW5ncyAmJiBzZXR0aW5ncy0+amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgpOworICAg
IGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpOworICAgIGJvb2wgZGVmYXVsdFZhbHVlID0gc2V0dGlu
Z3MgJiYgc2V0dGluZ3MtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKTsKKworICAgIEVk
aXRvckNsaWVudCogY2xpZW50ID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKTsKKyAgICByZXR1
cm4gY2xpZW50ID8gY2xpZW50LT5jYW5Db3B5Q3V0KGRlZmF1bHRWYWx1ZSkgOiBkZWZhdWx0VmFs
dWU7CiB9CiAKIHN0YXRpYyBib29sIHN1cHBvcnRlZFBhc3RlKEZyYW1lKiBmcmFtZSkKIHsKLSAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpIDogMDsKLSAg
ICByZXR1cm4gc2V0dGluZ3MgJiYgKHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkKCkgPyBzZXR0aW5ncy0+aXNET01QYXN0ZUFsbG93ZWQoKSA6IDApOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZy
YW1lLT5zZXR0aW5ncygpOworICAgIGJvb2wgZGVmYXVsdFZhbHVlID0gc2V0dGluZ3MgJiYgc2V0
dGluZ3MtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBzZXR0aW5ncy0+aXNET01Q
YXN0ZUFsbG93ZWQoKTsKKworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKTsKKyAgICByZXR1cm4gY2xpZW50ID8gY2xpZW50LT5jYW5QYXN0ZShkZWZh
dWx0VmFsdWUpIDogZGVmYXVsdFZhbHVlOwogfQogCiAvLyBFbmFibGVkIGZ1bmN0aW9ucwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNzc3NzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
Myw2ICs0NDMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZv
clJlZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVh
clVuZG9SZWRvT3BlcmF0aW9ucygpIHsgfQogCisgICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQo
Ym9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBjYW5QYXN0ZShib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgeyByZXR1cm4gZGVm
YXVsdFZhbHVlOyB9CiAgICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lvbiA3Nzc3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMiw2ICsxMzIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFu
ZEZvclJlZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29w
eUN1dChib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5Q
YXN0ZShib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5V
bmRvKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3QgPSAwOwog
ICAgIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzc5MDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0wNyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRWRpdG9yQ2xpZW50IGNhbGxiYWNrcyB0byBvdmVy
cmlkZSBpc0RPTVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MTcKKwor
ICAgICAgICBBZGRlZCB0d28gY2FsbGJhY2sgZnVuY3Rpb25zLCBjYW5Db3B5Q3V0IGFuZCBjYW5Q
YXN0ZSB0byBFZGl0b3JDbGllbnQuIFRoZXkgYXJlIGN1cnJlbnRseQorICAgICAgICBub3QgaW1w
bGVtZW50ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Y2FuQ29weUN1
dCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmNhblBhc3RlKTog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKwogMjAxMS0wMi0wNyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCB0aGUgMzItYml0IGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAko
cmV2aXNpb24gNzc3NzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw2ICsyNTEsMTgg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVyYQogICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhckFsbEVkaXRDb21tYW5kcygpKTsKIH0K
IAorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQoYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwor
fQorCitib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuUGFzdGUoYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwor
fQorCiBib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gNzc3NzgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29t
bWFuZD4pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogCisg
ICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGNhblVuZG8oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVkbygpIGNv
bnN0OwogICAgIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTA1
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wMi0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
RWRpdG9yQ2xpZW50IGNhbGxiYWNrcyB0byBvdmVycmlkZSBpc0RPTVBhc3RlQWxsb3dlZCBhbmQg
amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MTcKKworICAgICAgICBBZGRlZCB0d28gY2FsbGJhY2sg
ZnVuY3Rpb25zLCBjYW5Db3B5Q3V0IGFuZCBjYW5QYXN0ZSB0byBFZGl0b3JDbGllbnQuIFRoZXkg
YXJlIGN1cnJlbnRseQorICAgICAgICBub3QgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBzcmMv
RWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6
OmNhbkNvcHlDdXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6
Y2FuUGFzdGUpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorCiAy
MDExLTAyLTA3ICBBbGV4ZXkgTWFyaW5pY2hldiAgPGFtYXJpbmljaGV2QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNzc3
NzgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiwxOCBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6
OmNsZWFyVW5kb1JlZG9PcGVyCiAgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKIH0KIAorYm9vbCBF
ZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKworYm9v
bCBFZGl0b3JDbGllbnRJbXBsOjpjYW5QYXN0ZShib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Cit9CisKIGJv
b2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuVW5kbygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX3Vu
ZG9TdGFjay5pc0VtcHR5KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFz
c1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29weUN1dChib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNh
blBhc3RlKGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuVW5k
bygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHVuZG8oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTA1KQorKysg
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDItMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVkaXRvckNsaWVu
dCBjYWxsYmFja3MgdG8gb3ZlcnJpZGUgaXNET01QYXN0ZUFsbG93ZWQgYW5kIGphdmFTY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUyNDE3CisKKyAgICAgICAgQWRkZWQgdHdvIGNhbGxiYWNrIGZ1bmN0aW9ucywg
Y2FuQ29weUN1dCBhbmQgY2FuUGFzdGUgdG8gRWRpdG9yQ2xpZW50LiBUaGV5IGFyZSBjdXJyZW50
bHkKKyAgICAgICAgbm90IGltcGxlbWVudGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6
Y2FuQ29weUN1dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpj
YW5QYXN0ZSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5oOgorCiAyMDExLTAyLTA3ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgQWRhbSBSb2JlbiBhbmQgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHAJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2NiwxOCBAQCB2
b2lkIEVkaXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAorYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhbkNvcHlDdXQoYm9vbCBkZWZhdWx0
VmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZGVmYXVs
dFZhbHVlOworfQorCitib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUGFzdGUoYm9vbCBkZWZhdWx0
VmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZGVmYXVs
dFZhbHVlOworfQorCiBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuVW5kbygpIGNvbnN0CiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJD
b21tYW5kRm9yUmVkbyhXVEY6OlBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KTsKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBjYW5D
b3B5Q3V0KGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGFz
dGUoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKIApJbmRleDogU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwkocmV2aXNpb24gNzc5MDUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0wNyAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgRWRpdG9yQ2xpZW50IGNhbGxiYWNrcyB0byBvdmVycmlkZSBpc0RP
TVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MTcKKworICAgICAgICBB
ZGRlZCB0d28gY2FsbGJhY2sgZnVuY3Rpb25zLCBjYW5Db3B5Q3V0IGFuZCBjYW5QYXN0ZSB0byBF
ZGl0b3JDbGllbnQuIFRoZXkgYXJlIGN1cnJlbnRseQorICAgICAgICBub3QgaW1wbGVtZW50ZWQu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQpOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6RWRpdG9yQ2xpZW50OjpjYW5QYXN0ZSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5oOgorCiAyMDExLTAyLTA3ICBFbnJpY2EgQ2FzdWNjaSAg
PGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgQWRhbSBSb2JlbiBhbmQgRGFy
aW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTA2LDYgKzUwNiwxOCBAQCB2b2lkIEVkaXRvckNsaWVudDo6Y2xlYXJVbmRvUmVkb09wZXJh
dGlvCiAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50OjpjYW5D
b3B5Q3V0KGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnQ6OmNhblBh
c3RlKGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKwogYm9vbCBFZGl0b3JDbGllbnQ6OmNhblVuZG8o
KSBjb25zdAogewogICAgIHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCShy
ZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDggQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q29weUN1dChib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBj
YW5QYXN0ZShib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBj
YW5VbmRvKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NzkwNSkKKysrIFNvdXJjZS9XZWJL
aXQvaGFpa3UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEt
MDItMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVkaXRvckNsaWVudCBjYWxsYmFj
a3MgdG8gb3ZlcnJpZGUgaXNET01QYXN0ZUFsbG93ZWQgYW5kIGphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUyNDE3CisKKyAgICAgICAgQWRkZWQgdHdvIGNhbGxiYWNrIGZ1bmN0aW9ucywgY2FuQ29weUN1
dCBhbmQgY2FuUGFzdGUgdG8gRWRpdG9yQ2xpZW50LiBUaGV5IGFyZSBjdXJyZW50bHkKKyAgICAg
ICAgbm90IGltcGxlbWVudGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6OmNhbkNv
cHlDdXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpjYW5Q
YXN0ZSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1
Lmg6CisKIDIwMTEtMDItMDcgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBBZGFtIFJvYmVuIGFuZCBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
SGFpa3UuY3BwCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNiAr
MjEwLDE4IEBAIHZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OmNsZWFyVW5kb1JlZG9PcGUKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEVkaXRvckNsaWVudEhhaWt1OjpjYW5Db3B5Q3V0
KGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6Y2FuUGFz
dGUoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCiBib29sIEVkaXRvckNsaWVudEhhaWt1OjpjYW5V
bmRvKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAko
cmV2aXNpb24gNzc3NzgpCisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVk
byhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhclVu
ZG9SZWRvT3BlcmF0aW9ucygpOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KGJv
b2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGNhblBhc3RlKGJv
b2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNzc5MDUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0wNyAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgRWRpdG9yQ2xpZW50IGNhbGxiYWNrcyB0byBvdmVycmlkZSBp
c0RPTVBhc3RlQWxsb3dlZCBhbmQgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MTcKKworICAgICAg
ICBBZGRlZCB0d28gY2FsbGJhY2sgZnVuY3Rpb25zLCBjYW5Db3B5Q3V0IGFuZCBjYW5QYXN0ZSB0
byBFZGl0b3JDbGllbnQuIFRoZXkgYXJlIGN1cnJlbnRseQorICAgICAgICBub3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0
b3JDbGllbnQ6OmNhbkNvcHlDdXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
Y2FuUGFzdGUpOiBBZGRlZC4KKwogMjAxMS0wMi0wNyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIEFkYW0gUm9iZW4gYW5kIERhcmluIEFkbGVy
LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFz
c1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKLSAgICAKKworICAgIHZpcnR1
YWwgYm9vbCBjYW5Db3B5Q3V0KGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuUGFzdGUoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBjYW5VbmRvKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNiAr
NTk0LDE2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmEKICAgICB9
ICAgIAogfQogCitib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuQ29weUN1dChib29sIGRlZmF1bHRW
YWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCitib29sIFdlYkVk
aXRvckNsaWVudDo6Y2FuUGFzdGUoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGRlZmF1bHRWYWx1ZTsKK30KKwogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBj
b25zdAogewogICAgIHJldHVybiBbW21fd2ViVmlldyB1bmRvTWFuYWdlcl0gY2FuVW5kb107Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNzc5MDUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTA3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFZGl0b3JDbGllbnQgY2FsbGJhY2tzIHRvIG92ZXJy
aWRlIGlzRE9NUGFzdGVBbGxvd2VkIGFuZCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNworCisg
ICAgICAgIEFkZGVkIHR3byBjYWxsYmFjayBmdW5jdGlvbnMsIGNhbkNvcHlDdXQgYW5kIGNhblBh
c3RlIHRvIEVkaXRvckNsaWVudC4gVGhleSBhcmUgY3VycmVudGx5CisgICAgICAgIG5vdCBpbXBs
ZW1lbnRlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpjYW5Db3B5Q3V0KTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Y2FuUGFzdGUpOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCiAyMDExLTAyLTA3ICBCZW5q
YW1pbiBQb3VsYWluICA8aWtpcG91QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA3Nzc3OCkKKysr
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjQsNiArMjY0LDE4IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmNsZWFy
VW5kb1JlZG9PcGVyYXQKICNlbmRpZgogfQogCitib29sIEVkaXRvckNsaWVudFF0OjpjYW5Db3B5
Q3V0KGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuUGFz
dGUoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5VbmRv
KCkgY29uc3QKIHsKICNpZmRlZiBRVF9OT19VTkRPU1RBQ0sKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgJKHJldmlzaW9uIDc3Nzc4
KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPik7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29weUN1dChib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNh
blBhc3RlKGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuVW5k
bygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3NzkwNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTA3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFZGl0b3JDbGllbnQgY2FsbGJhY2tzIHRvIG92ZXJy
aWRlIGlzRE9NUGFzdGVBbGxvd2VkIGFuZCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNworCisg
ICAgICAgIEFkZGVkIHR3byBjYWxsYmFjayBmdW5jdGlvbnMsIGNhbkNvcHlDdXQgYW5kIGNhblBh
c3RlIHRvIEVkaXRvckNsaWVudC4gVGhleSBhcmUgY3VycmVudGx5CisgICAgICAgIG5vdCBpbXBs
ZW1lbnRlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkVkaXRvckNsaWVudDo6Y2FuUGFzdGUpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxMS0wMi0wNyAgRW5yaWNhIENhc3VjY2kgIDxl
bnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIEFkYW0gUm9iZW4gYW5kIERhcmlu
IEFkbGVyLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2OSw2ICs1NjksMTggQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVy
YQogICAgIH0KIH0KIAorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQoYm9vbCBkZWZh
dWx0VmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZGVm
YXVsdFZhbHVlOworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuUGFzdGUoYm9vbCBkZWZh
dWx0VmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZGVm
YXVsdFZhbHVlOworfQorCiBib29sIFdlYkVkaXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7
CiAgICAgQk9PTCByZXN1bHQgPSBGQUxTRTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiA3Nzc3OCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyQ29t
bWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwogICAgIHZvaWQg
Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAorICAgIGJvb2wgY2FuQ29weUN1dChib29sIGRl
ZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgYm9vbCBjYW5QYXN0ZShib29sIGRlZmF1bHRWYWx1ZSkg
Y29uc3Q7CiAgICAgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5SZWRvKCkgY29u
c3Q7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gNzc5MDUpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisyMDExLTAyLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFZGl0b3JDbGll
bnQgY2FsbGJhY2tzIHRvIG92ZXJyaWRlIGlzRE9NUGFzdGVBbGxvd2VkIGFuZCBqYXZhU2NyaXB0
Q2FuQWNjZXNzQ2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MjQxNworCisgICAgICAgIEFkZGVkIHR3byBjYWxsYmFjayBmdW5jdGlvbnMs
IGNhbkNvcHlDdXQgYW5kIGNhblBhc3RlIHRvIEVkaXRvckNsaWVudC4gVGhleSBhcmUgY3VycmVu
dGx5CisgICAgICAgIG5vdCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2lu
Q0U6OmNhbkNvcHlDdXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2lu
Q0U6OmNhblBhc3RlKTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50V2luQ0UuaDoKKwogMjAxMS0wMi0wNyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIEFkYW0gUm9iZW4gYW5kIERhcmluIEFkbGVyLgpJbmRl
eDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2NSw2ICsxNjUsMTggQEAgdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6Y2xlYXJVbmRvUmVkb09w
ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmNh
bkNvcHlDdXQoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCitib29sIEVkaXRvckNsaWVudFdpbkNF
OjpjYW5QYXN0ZShib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Cit9CisKIGJvb2wgRWRpdG9yQ2xpZW50V2lu
Q0U6OmNhblVuZG8oKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRX
aW5DRS5oCShyZXZpc2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
VW5kb1JlZG9PcGVyYXRpb25zKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChib29s
IGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblBhc3RlKGJvb2wgZGVm
YXVsdFZhbHVlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZp
c2lvbiA3NzkwNSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEVkaXRvckNsaWVudCBjYWxsYmFja3MgdG8gb3ZlcnJpZGUgaXNET01QYXN0ZUFsbG93ZWQg
YW5kIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDE3CisKKyAgICAgICAgQWRkZWQgdHdvIGNhbGxi
YWNrIGZ1bmN0aW9ucywgY2FuQ29weUN1dCBhbmQgY2FuUGFzdGUgdG8gRWRpdG9yQ2xpZW50LiBU
aGV5IGFyZSBjdXJyZW50bHkKKyAgICAgICAgbm90IGltcGxlbWVudGVkLgorCisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRXeDo6Y2FuQ29weUN1dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50V3g6OmNhblBhc3RlKTogQWRkZWQuCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0
b3JDbGllbnRXeC5oOgorCiAyMDExLTAyLTA3ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgQWRhbSBSb2JlbiBhbmQgRGFyaW4gQWRsZXIuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRX
eC5jcHAJKHJldmlzaW9uIDc3Nzc4KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0VkaXRvckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSwxOCBAQCB2
b2lkIEVkaXRvckNsaWVudFd4OjpjbGVhclVuZG9SZWRvT3BlcmF0CiAgICAgfQogfQogCitib29s
IEVkaXRvckNsaWVudFd4OjpjYW5Db3B5Q3V0KGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKworYm9v
bCBFZGl0b3JDbGllbnRXeDo6Y2FuUGFzdGUoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCiBib29s
IEVkaXRvckNsaWVudFd4OjpjYW5VbmRvKCkgY29uc3QKIHsKICAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCShyZXZp
c2lvbiA3Nzc3OCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGll
bnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPik7
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29weUN1dChib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGNhblBhc3RlKGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgY2FuVW5kbygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CiAK
</data>
<flag name="review"
          id="74086"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>