<?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>124175</bug_id>
          
          <creation_ts>2013-11-11 17:03:01 -0800</creation_ts>
          <short_desc>Blob constructor should accept sequences</short_desc>
          <delta_ts>2013-11-14 05:02:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsbin.com/alEMuQu/1</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Victor Costan">costan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949496</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-11 17:03:01 -0800</bug_when>
    <thetext>According to the WebIDL in the File API, the Blob constructor should accept a sequence for the parts argument.
http://www.w3.org/TR/FileAPI/#dfn-Blob

In WebKit, the constructor only accepts arrays, as can be shown by the test case in the bug&apos;s URL.

Chromium bug (fixed, contains LayoutTests that might be useful):
https://code.google.com/p/chromium/issues/detail?id=314755

Firefox bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=937348</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949623</commentid>
    <comment_count>1</comment_count>
      <attachid>216654</attachid>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-12 04:45:27 -0800</bug_when>
    <thetext>Created attachment 216654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949744</commentid>
    <comment_count>2</comment_count>
      <attachid>216654</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-11-12 11:13:10 -0800</bug_when>
    <thetext>Comment on attachment 216654
Patch

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

&gt; Source/WebCore/bindings/js/JSBlobCustom.cpp:81
&gt; +    } else if (firstArg.isObject()) {

The Web IDL specification says &quot;Any kind of object except for a native Date object or a native RegExp object&quot;
http://heycam.github.io/webidl/#es-sequence

You currently accept Date / RegExp objects which is against the spec and also does not match Blink&apos;s behavior.

Also, It might be a good idea to move this to a separate utility function since there are other places that need to handle sequences.

&gt; LayoutTests/fast/files/blob-constructor-expected.txt:13
&gt; +FAIL new Blob(&apos;hello&apos;) should throw TypeError: First argument of the constructor is not of type Array. Threw exception TypeError: First argument is not a sequence.

The test needs updating. Leaving them as FAIL is not a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949748</commentid>
    <comment_count>3</comment_count>
      <attachid>216654</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-11-12 11:15:03 -0800</bug_when>
    <thetext>Comment on attachment 216654
Patch

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

&gt;&gt; LayoutTests/fast/files/blob-constructor-expected.txt:13
&gt;&gt; +FAIL new Blob(&apos;hello&apos;) should throw TypeError: First argument of the constructor is not of type Array. Threw exception TypeError: First argument is not a sequence.
&gt; 
&gt; The test needs updating. Leaving them as FAIL is not a good idea.

Also, I am not sure we want to expose the term &quot;sequence&quot; in the exception message since this is a Web IDL term and JavaScript developers won&apos;t necessarily know what it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949789</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-12 12:11:59 -0800</bug_when>
    <thetext>JSCryptoOperationData.cpp also handles sequences, would be nice to see if some code can be shared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949790</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-12 12:13:41 -0800</bug_when>
    <thetext>Actually, that uses code that&apos;s already in a shared location, toJSSequence().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949802</commentid>
    <comment_count>6</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-12 12:23:02 -0800</bug_when>
    <thetext>Thank you for the fast and thorough feedback!


toJSSequence() throws a TypeError with no description. I copied its code and tweaked it to do what I wanted.

The two solutions I thought about are:
1) Adding a toJSSequence overload that takes an extra String containing the error description, and changing the current version to call it with the string TypeError.

2) Creating a separate toJSSequenceWithCustomErrorMessage (I&apos;m terrible at names, sorry) with the tweaks that I added there.

Which way would you like me to go?

I inherited the Date / RegExp issue from the original implementation. I know the V8 bindings in Blink explicitly test, and I thought there&apos;s some reason why this isn&apos;t happening in JavaScriptCore / WebKit. Should I add the checks to toJSSequence?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949816</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-11-12 12:45:00 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Thank you for the fast and thorough feedback!
&gt; 
&gt; 
&gt; toJSSequence() throws a TypeError with no description. I copied its code and tweaked it to do what I wanted.
&gt; 
&gt; The two solutions I thought about are:
&gt; 1) Adding a toJSSequence overload that takes an extra String containing the error description, and changing the current version to call it with the string TypeError.
&gt; 
&gt; 2) Creating a separate toJSSequenceWithCustomErrorMessage (I&apos;m terrible at names, sorry) with the tweaks that I added there.

Technically, we don&apos;t strictly need this custom error message. Throwing a TypeError is enough, but I&apos;ll let Alexey decide.

&gt; Which way would you like me to go?
&gt; 
&gt; I inherited the Date / RegExp issue from the original implementation. I know the V8 bindings in Blink explicitly test, and I thought there&apos;s some reason why this isn&apos;t happening in JavaScriptCore / WebKit. Should I add the checks to toJSSequence?

This is not really related to this patch then and can / should be addressed separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949836</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-12 13:15:36 -0800</bug_when>
    <thetext>Providing extra debugging information to web developers is certainly useful. But &quot;First argument is not a sequence&quot; is IMO not materially better than &quot;Value is not a sequence&quot; that could be added to toJSSequence() without any extra arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949888</commentid>
    <comment_count>9</comment_count>
      <attachid>216729</attachid>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-12 14:58:09 -0800</bug_when>
    <thetext>Created attachment 216729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949896</commentid>
    <comment_count>10</comment_count>
      <attachid>216730</attachid>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-12 15:24:18 -0800</bug_when>
    <thetext>Created attachment 216730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949923</commentid>
    <comment_count>11</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-12 16:22:51 -0800</bug_when>
    <thetext>I removed the custom code in favor of calling toJSSequence and implemented Alexey&apos;s suggested error message. I also updated test expectations to match the new error message.

Please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950446</commentid>
    <comment_count>12</comment_count>
      <attachid>216730</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-11-13 16:55:24 -0800</bug_when>
    <thetext>Comment on attachment 216730
Patch

LGTM, r=me, assuming Alexey is also fine with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950449</commentid>
    <comment_count>13</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-13 16:59:59 -0800</bug_when>
    <thetext>Thank you, Chris!

Alexey, I&apos;ll wait for you to flip the commit-queue flag, or to give me more feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950518</commentid>
    <comment_count>14</comment_count>
      <attachid>216730</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-13 21:19:34 -0800</bug_when>
    <thetext>Comment on attachment 216730
Patch

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

&gt; Source/WebCore/bindings/js/JSBlobCustom.cpp:116
&gt; +        JSValue item = blobParts-&gt;get(exec, i);

Can&apos;t get() throw an exception?

&gt; Source/WebCore/bindings/js/JSBlobCustom.cpp:119
&gt;          if (item.inherits(JSArrayBuffer::info()))
&gt;              blobBuilder.append(toArrayBuffer(item));

This is not the best way to write this - toArrayBuffer will check the type again. I&apos;d write

if (ArrayBuffer* arrayBuffer = toArrayBuffer(item))
    blobBuilder.append(arrayBuffer);

Same inefficiency is repeated below again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950521</commentid>
    <comment_count>15</comment_count>
      <attachid>216730</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-13 21:44:00 -0800</bug_when>
    <thetext>Comment on attachment 216730
Patch

Clearing flags on attachment: 216730

Committed r159275: &lt;http://trac.webkit.org/changeset/159275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950522</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-13 21:44:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950534</commentid>
    <comment_count>17</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-13 23:33:10 -0800</bug_when>
    <thetext>Alexey, I&apos;m preparing a new patch with the feedback you gave me. While doing that, I ran into something odd.

toArrayBuffer is defined in Source/JavaScriptCore/JSArrayBuffer.h as 
inline ArrayBuffer* toArrayBuffer(JSValue value)

toArrayBufferView is defined in Source/WebCore/bindings/js/JSDomBinding.h as
inline PassRefPtr&lt;JSC::ArrayBufferView&gt; toArrayBufferView(JSC::JSValue value)

Otherwise, the method bodies are really similar.

I think this is weird because, in the Blob constructor, I&apos;d have to use RefPtr&lt;ArrayBufferView&gt; on one branch, and a bare ArrayBuffer* on the other branch, to follow convention.


What do you advise? Should I do this, or change one of the defintions? If I go down that route, I&apos;d also move  toArrayBufferView in JavaScriptCore/JSArrayBufferView.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950539</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-14 00:10:46 -0800</bug_when>
    <thetext>It seems worthwhile to look into whether toArrayBufferView can return a raw pointer. But my guess is that it&apos;s not possible - an ArrayBufferView only exists when referenced. JSArrayBufferView is not a wrapper, it&apos;s a proxy that creates an ArrayBufferView on demand.

This is based on a very brief look at the code, so it may be incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950607</commentid>
    <comment_count>19</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-11-14 05:02:54 -0800</bug_when>
    <thetext>Thank you very much for your guidance, Alexey!

I implemented your suggestions and submitted a new bug+patch.
https://bugs.webkit.org/show_bug.cgi?id=124343

I&apos;ll look into the ArrayBufferView issue sometime soon. I&apos;m completely new to the JavaScriptCore codebase, so it will take a while.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216654</attachid>
            <date>2013-11-12 04:45:27 -0800</date>
            <delta_ts>2013-11-12 14:58:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124175-20131112074549.patch</filename>
            <type>text/plain</type>
            <size>7311</size>
            <attacher name="Victor Costan">costan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTEwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTExLTEyICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBCbG9iIGNvbnN0cnVjdG9yIGFj
Y2VwdHMgYSBzZXF1ZW5jZSAoYXJyYXktbGlrZSBvYmplY3QpIGFzIGZpcnN0IGFyZy4gCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IGNh
c2VzIHRvIGZhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOiBNYWtlIHRoZSBjb25zdHJ1Y3Rv
ciB3b3JrIHdpdGggc2VxdWVuY2VzLgorICAgICAgICAoV2ViQ29yZTo6SlNCbG9iQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTQmxvYik6CisKIDIwMTMtMTEtMTIgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEpTQyBiaW5kaW5ncyBnZW5lcmF0b3Igc2hvdWxk
IGdlbmVyYXRlIGRlbGV0YWJsZSBKU0MgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAJKHJldmlzaW9uIDE1OTEwMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDkgKzcxLDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNCbG9iQ29uc3QK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywg
anNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIEJsb2IsIGJsb2IuZ2V0KCkpKTsKICAgICB9
CiAKKyAgICBKU09iamVjdCogYmxvYlBhcnRzOworICAgIHVuc2lnbmVkIGJsb2JQYXJ0c0xlbmd0
aDsKICAgICBKU1ZhbHVlIGZpcnN0QXJnID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgaWYgKCFp
c0pTQXJyYXkoZmlyc3RBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiRmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlz
IG5vdCBvZiB0eXBlIEFycmF5IikpOworICAgIGlmIChpc0pTQXJyYXkoZmlyc3RBcmcpKSB7Cisg
ICAgICAgIEpTQzo6SlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGZpcnN0QXJnKTsKKyAgICAgICAg
YmxvYlBhcnRzTGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOworICAgICAgICBibG9iUGFydHMgPSBh
cnJheTsKKyAgICB9IGVsc2UgaWYgKGZpcnN0QXJnLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgYmxv
YlBhcnRzID0gZmlyc3RBcmcuZ2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghYmxvYlBhcnRzKQor
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIHNlcXVlbmNlIikpOworCisgICAgICAgIEpTQzo6
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGJsb2JQYXJ0cy0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgICAg
IGlmIChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkZpcnN0IGFyZ3VtZW50
IGlzIG5vdCBhIHNlcXVlbmNlIikpOworCisgICAgICAgIGJsb2JQYXJ0c0xlbmd0aCA9IGxlbmd0
aFZhbHVlLnRvVUludDMyKGV4ZWMpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IH0gZWxzZQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiAKICAgICBTdHJp
bmcgdHlwZTsKICAgICBTdHJpbmcgZW5kaW5ncyA9IEFTQ0lJTGl0ZXJhbCgidHJhbnNwYXJlbnQi
KTsKQEAgLTExMCwxMSArMTMxLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Js
b2JDb25zdAogCiAgICAgQmxvYkJ1aWxkZXIgYmxvYkJ1aWxkZXI7CiAKLSAgICBKU0FycmF5KiBh
cnJheSA9IGFzQXJyYXkoZmlyc3RBcmcpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5LT5s
ZW5ndGgoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBhcnJheS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2JQYXJ0c0xlbmd0aDsgKytpKSB7CisgICAgICAgIEpT
VmFsdWUgaXRlbSA9IGJsb2JQYXJ0cy0+Z2V0KGV4ZWMsIGkpOwogI2lmIEVOQUJMRShCTE9CKQog
ICAgICAgICBpZiAoaXRlbS5pbmhlcml0cyhKU0FycmF5QnVmZmVyOjppbmZvKCkpKQogICAgICAg
ICAgICAgYmxvYkJ1aWxkZXIuYXBwZW5kKHRvQXJyYXlCdWZmZXIoaXRlbSkpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTU5MTAxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMTIgIFZpY3RvciBDb3N0YW4gIDxjb3N0YW5AZ21h
aWwuY29tPgorCisgICAgICAgIEJsb2IgY29uc3RydWN0b3IgYWNjZXB0cyBhIHNlcXVlbmNlIChh
cnJheS1saWtlIG9iamVjdCkgYXMgZmlyc3QgYXJnLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0OiBVcGRhdGVkIGVycm9yIHRleHQgYW5kIGFkZGVkIGV4cGVjdGF0aW9ucy4KKyAg
ICAgICAgKiBmYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzOiBBZGRl
ZCBzZXF1ZW5jZSB0ZXN0IGNhc2VzLgorCiAyMDEzLTExLTEyICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBKU0MgYmluZGluZ3MgZ2VuZXJhdG9yIHNob3Vs
ZCBnZW5lcmF0ZSBkZWxldGFibGUgSlNDIGZ1bmN0aW9ucwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNTkxMDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIFBBU1MgKG5ldyBCbG9i
KFsnaGVsbG8nXSwge30pKSBpbnN0YW5jZW8KIFBBU1MgKG5ldyBCbG9iKFsnaGVsbG8nXSwge3R5
cGU6J3RleHQvaHRtbCd9KSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCiBQQVNTIChu
ZXcgQmxvYihbJ2hlbGxvJ10sIHt0eXBlOid0ZXh0L2h0bWwnLCBlbmRpbmdzOiduYXRpdmUnfSkp
IGluc3RhbmNlb2Ygd2luZG93LkJsb2IgaXMgdHJ1ZQogUEFTUyAobmV3IEJsb2IoWydoZWxsbydd
LCB7dHlwZTondGV4dC9odG1sJywgZW5kaW5nczondHJhbnNwYXJlbnQnfSkpIGluc3RhbmNlb2Yg
d2luZG93LkJsb2IgaXMgdHJ1ZQotUEFTUyBuZXcgQmxvYignaGVsbG8nKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBGaXJzdCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9m
IHR5cGUgQXJyYXkuCi1QQVNTIG5ldyBCbG9iKDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEZpcnN0IGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBBcnJheS4K
K0ZBSUwgbmV3IEJsb2IoJ2hlbGxvJykgc2hvdWxkIHRocm93IFR5cGVFcnJvcjogRmlyc3QgYXJn
dW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIEFycmF5LiBUaHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBGaXJzdCBhcmd1bWVudCBpcyBub3QgYSBzZXF1ZW5jZS4KK0ZBSUwg
bmV3IEJsb2IoMCkgc2hvdWxkIHRocm93IFR5cGVFcnJvcjogRmlyc3QgYXJndW1lbnQgb2YgdGhl
IGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIEFycmF5LiBUaHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBGaXJzdCBhcmd1bWVudCBpcyBub3QgYSBzZXF1ZW5jZS4KIFBBU1MgKG5ldyBCbG9iKFtd
KSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbJ3N0cmlu
Z1ByaW1pdGl2ZSddKSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCiBQQVNTIChuZXcg
QmxvYihbU3RyaW5nKCdzdHJpbmdPYmplY3QnKV0pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlz
IHRydWUKQEAgLTcyLDYgKzcyLDEyIEBAIFBBU1MgbmV3IEJsb2IoWyhuZXcgRmxvYXQzMkFycmF5
KDEwMCkpLmIKIFBBU1MgbmV3IEJsb2IoWyhuZXcgRmxvYXQ2NEFycmF5KDEwMCkpLmJ1ZmZlcl0p
LnNpemUgaXMgODAwCiBQQVNTIG5ldyBCbG9iKFsobmV3IEZsb2F0NjRBcnJheSgxMDApKS5idWZm
ZXIsIChuZXcgSW50MzJBcnJheSgxMDApKS5idWZmZXIsIChuZXcgVWludDhBcnJheSgxMDApKS5i
dWZmZXIsIChuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEwMCkpKS5idWZmZXJdKS5zaXpl
IGlzIDE0MDAKIFBBU1MgbmV3IEJsb2IoW25ldyBCbG9iKFsobmV3IEludDMyQXJyYXkoMTAwKSku
YnVmZmVyXSksIChuZXcgVWludDhBcnJheSgxMDApKS5idWZmZXIsIChuZXcgRmxvYXQzMkFycmF5
KDEwMCkpLmJ1ZmZlciwgKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSkpLmJ1ZmZl
cl0pLnNpemUgaXMgMTAwMAorUEFTUyBuZXcgQmxvYih7bGVuZ3RoOiAwfSkgaW5zdGFuY2VvZiB3
aW5kb3cuQmxvYiBpcyB0cnVlCitQQVNTIG5ldyBCbG9iKHtsZW5ndGg6IDB9KS5zaXplIGlzIDAK
K1BBU1MgbmV3IEJsb2Ioe2xlbmd0aDogMSwgMDogJ3N0cmluZyd9KS5zaXplIGlzIDYKK1BBU1Mg
bmV3IEJsb2Ioe2xlbmd0aDogMiwgMDogbmV3IFVpbnQ4QXJyYXkoMTAwKSwgMTogbmV3IEludDE2
QXJyYXkoMTAwKX0pLnNpemUgaXMgMzAwCitQQVNTIG5ldyBCbG9iKHtsZW5ndGg6IDEsIDA6ICdz
dHJpbmcnfSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkudHlwZSBpcyAndGV4dC9odG1sJworUEFTUyBu
ZXcgQmxvYih7bGVuZ3RoOiAwfSwge2VuZGluZ3M6J2lsbGVnYWwnfSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgInRyYW5zcGFy
ZW50IiBvciAibmF0aXZlIi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxv
Yi1jb25zdHJ1Y3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Nj
cmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCShyZXZpc2lvbiAxNTkxMDEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OCwzICs5OCwxMSBAQCBzaG91bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxv
YXQzMkFycmF5KDEwCiBzaG91bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxvYXQ2NEFycmF5KDEwMCkp
LmJ1ZmZlcl0pLnNpemUiLCAiODAwIik7CiBzaG91bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxvYXQ2
NEFycmF5KDEwMCkpLmJ1ZmZlciwgKG5ldyBJbnQzMkFycmF5KDEwMCkpLmJ1ZmZlciwgKG5ldyBV
aW50OEFycmF5KDEwMCkpLmJ1ZmZlciwgKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAw
KSkpLmJ1ZmZlcl0pLnNpemUiLCAiMTQwMCIpOwogc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgQmxv
YihbKG5ldyBJbnQzMkFycmF5KDEwMCkpLmJ1ZmZlcl0pLCAobmV3IFVpbnQ4QXJyYXkoMTAwKSku
YnVmZmVyLCAobmV3IEZsb2F0MzJBcnJheSgxMDApKS5idWZmZXIsIChuZXcgRGF0YVZpZXcobmV3
IEFycmF5QnVmZmVyKDEwMCkpKS5idWZmZXJdKS5zaXplIiwgIjEwMDAiKTsKKworLy8gVGVzdCBw
YXNzaW5nIGJsb2IgcGFydHMgaW4gc2VxdWVuY2VzLgorc2hvdWxkQmVUcnVlKCJuZXcgQmxvYih7
bGVuZ3RoOiAwfSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiIpOworc2hvdWxkQmUoIm5ldyBCbG9i
KHtsZW5ndGg6IDB9KS5zaXplIiwgIjAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYih7bGVuZ3RoOiAx
LCAwOiAnc3RyaW5nJ30pLnNpemUiLCAiNiIpOworc2hvdWxkQmUoIm5ldyBCbG9iKHtsZW5ndGg6
IDIsIDA6IG5ldyBVaW50OEFycmF5KDEwMCksIDE6IG5ldyBJbnQxNkFycmF5KDEwMCl9KS5zaXpl
IiwgIjMwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKHtsZW5ndGg6IDEsIDA6ICdzdHJpbmcnfSwg
e3R5cGU6ICd0ZXh0L2h0bWwnfSkudHlwZSIsICIndGV4dC9odG1sJyIpOworc2hvdWxkVGhyb3co
Im5ldyBCbG9iKHtsZW5ndGg6IDB9LCB7ZW5kaW5nczonaWxsZWdhbCd9KSIsICInVHlwZUVycm9y
OiBUaGUgZW5kaW5ncyBwcm9wZXJ0eSBtdXN0IGJlIGVpdGhlciBcInRyYW5zcGFyZW50XCIgb3Ig
XCJuYXRpdmVcIiciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216729</attachid>
            <date>2013-11-12 14:58:09 -0800</date>
            <delta_ts>2013-11-12 15:24:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124175-20131112175809.patch</filename>
            <type>text/plain</type>
            <size>10371</size>
            <attacher name="Victor Costan">costan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTExLTEyICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBCbG9iIGNvbnN0cnVjdG9yIGFj
Y2VwdHMgYSBzZXF1ZW5jZSAoYXJyYXktbGlrZSBvYmplY3QpIGFzIGZpcnN0IGFyZy4gCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IGNh
c2VzIHRvIGZhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOiBNYWtlIHRoZSBjb25zdHJ1Y3Rv
ciB3b3JrIHdpdGggc2VxdWVuY2VzLgorICAgICAgICAoV2ViQ29yZTo6SlNCbG9iQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTQmxvYik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTU2VxdWVuY2UpOiBTbGlnaHRseSBiZXR0ZXIgZXJy
b3IgbWVzc2FnZSB3aGVuIGNvbnZlcnNpb24gZmFpbHMuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
KTogV2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OmpzQXJyYXkpOiBXaGl0ZXNwYWNlLgor
CiAyMDEzLTExLTExICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIFJlbmRlckJsb2NrUmFyZURhdGEgYmUgaW4gYSBoYXNodGFibGUgaW5zdGVhZCBvZiBiZWlu
ZyBhIG1lbWJlciB2YXJpYWJsZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmxvYkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCbG9iQ3VzdG9tLmNwcAkocmV2aXNpb24gMTU5MTQ4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsOSArNzEsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Jsb2JDb25zdAogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgQmxvYiwgYmxvYi5nZXQoKSkpOwogICAgIH0KIAotICAgIEpTVmFs
dWUgZmlyc3RBcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoIWlzSlNBcnJheShmaXJz
dEFyZykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJGaXJzdCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUg
QXJyYXkiKSk7CisgICAgdW5zaWduZWQgYmxvYlBhcnRzTGVuZ3RoID0gMDsKKyAgICBKU09iamVj
dCogYmxvYlBhcnRzID0gdG9KU1NlcXVlbmNlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBibG9i
UGFydHNMZW5ndGgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoYmxvYlBhcnRz
KTsKIAogICAgIFN0cmluZyB0eXBlOwogICAgIFN0cmluZyBlbmRpbmdzID0gQVNDSUlMaXRlcmFs
KCJ0cmFuc3BhcmVudCIpOwpAQCAtMTEwLDExICsxMTIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTQmxvYkNvbnN0CiAKICAgICBCbG9iQnVpbGRlciBibG9iQnVpbGRlcjsKIAot
ICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShmaXJzdEFyZyk7Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gYXJyYXktPmxlbmd0aCgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgaXRlbSA9IGFycmF5LT5nZXRJbmRleChleGVj
LCBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvYlBhcnRzTGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgSlNWYWx1ZSBpdGVtID0gYmxvYlBhcnRzLT5nZXQoZXhlYywgaSk7CiAjaWYg
RU5BQkxFKEJMT0IpCiAgICAgICAgIGlmIChpdGVtLmluaGVyaXRzKEpTQXJyYXlCdWZmZXI6Omlu
Zm8oKSkpCiAgICAgICAgICAgICBibG9iQnVpbGRlci5hcHBlbmQodG9BcnJheUJ1ZmZlcihpdGVt
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2
aXNpb24gMTU5MTQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUgSlNDOjpXZWFrSGFu
ZGxlT3duZXIqIHdyYXBwZXJPd25lCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlcio+KHdvcmxkLnZtKCktPm1fdHlwZWRBcnJheUNvbnRyb2xsZXIu
Z2V0KCkpLT53cmFwcGVyT3duZXIoKTsKIH0KLSAgICAKKwogaW5saW5lIHZvaWQqIHdyYXBwZXJD
b250ZXh0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqKQogewogICAg
IHJldHVybiAmd29ybGQ7CkBAIC0xOTcsNyArMTk3LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIERP
TUNsYXNzLCB0eXBlbmFtZSBXcgogICAgICAgICByZXR1cm47CiAgICAgd2Vha1JlbW92ZSh3b3Js
ZC5tX3dyYXBwZXJzLCAodm9pZCopZG9tT2JqZWN0LCB3cmFwcGVyKTsKIH0KLSAgICAKKwogI2Rl
ZmluZSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBjbGFzc05hbWUsIG9i
amVjdCkgY3JlYXRlV3JhcHBlcjxKUyMjY2xhc3NOYW1lPihleGVjLCBnbG9iYWxPYmplY3QsIHN0
YXRpY19jYXN0PGNsYXNzTmFtZSo+KG9iamVjdCkpCiB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xh
c3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlNET01XcmFwcGVyKiBjcmVhdGVXcmFwcGVyKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01D
bGFzcyogbm9kZSkKIHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpz
U3RyaW5nV2l0aENhY2hlKEpTCiB7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IHMuc3RyaW5nKCkpOwogfQotICAgICAgICAKKwogSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxs
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7IC8vIG51bGwgaWYgdGhlIHN0cmluZyBp
cyBudWxsCiBKU0M6OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBVUkwmKTsgLy8gbnVsbCBpZiB0aGUgVVJMIGlzIG51bGwKIApAQCAtMzI1LDcgKzMyNSw3IEBA
IGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjoKIHsKICAgICBKU0M6OkpT
T2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMzM0LDcgKzMzNCw3IEBAIGlubGluZSBKU0M6OkpT
T2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjoKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAo
bGVuZ3RoVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IApAQCAtMzc0LDEwICszNzQsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZlY3RvcjxUPiB2ZWN0b3IpCiB7CiAgICAgSlNDOjpKU0FycmF5KiBhcnJh
eSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCwgdmVjdG9yLnNpemUoKSk7Ci0gICAgCisK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAg
YXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB2
ZWN0b3JbaV0pKTsKLSAgICAKKwogICAgIHJldHVybiBhcnJheTsKIH0KIApAQCAtMzg1LDEwICsz
ODUsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZl
Y3RvcjxSZWZQdHI8VD4+IHZlY3RvcikKIHsKICAgICBKU0M6OkpTQXJyYXkqIGFycmF5ID0gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCAwLCB2ZWN0b3Iuc2l6ZSgpKTsKLSAgICAKKwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICBhcnJheS0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHZlY3Rvcltp
XS5nZXQoKSkpOwotICAgIAorCiAgICAgcmV0dXJuIGFycmF5OwogfQogCkBAIC00MjgsNyArNDI4
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhYwogSlNDOjpKU1Zh
bHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIGl0ZXJhdG9yKQogewog
ICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKLSAgICB0eXBlbmFtZSBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpdGVyYXRvci5lbmQoKTsg
ICAgICAgIAorICAgIHR5cGVuYW1lIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGl0ZXJhdG9yLmVuZCgpOwogICAgIHR5cGVkZWYgSlNWYWx1ZVRyYWl0czxU
PiBUcmFpdHNUeXBlOwogCiAgICAgZm9yICh0eXBlbmFtZSBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHk+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaXRlcmF0b3IuYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTE1MCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTExLTEyICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBCbG9iIGNvbnN0cnVjdG9yIGFj
Y2VwdHMgYSBzZXF1ZW5jZSAoYXJyYXktbGlrZSBvYmplY3QpIGFzIGZpcnN0IGFyZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDE3NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9maWxlcy9i
bG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDogVXBkYXRlZCBlcnJvciB0ZXh0IGFuZCBhZGRl
ZCBleHBlY3RhdGlvbnMuCisgICAgICAgICogZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1j
b25zdHJ1Y3Rvci5qczogQWRkZWQgc2VxdWVuY2UgdGVzdCBjYXNlcy4KKwogMjAxMy0xMS0xMiAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZmFz
dC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94Lmh0bWwgdG8gdGhlIHBpbGUgb2YgdGlueS1j
b2xvci1taXNtYXRjaCB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi1j
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU5MTQ4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQCBQQVNTIChuZXcgQmxvYihbJ2hlbGxvJ10sIHt9
KSkgaW5zdGFuY2VvCiBQQVNTIChuZXcgQmxvYihbJ2hlbGxvJ10sIHt0eXBlOid0ZXh0L2h0bWwn
fSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IgaXMgdHJ1ZQogUEFTUyAobmV3IEJsb2IoWydoZWxs
byddLCB7dHlwZTondGV4dC9odG1sJywgZW5kaW5nczonbmF0aXZlJ30pKSBpbnN0YW5jZW9mIHdp
bmRvdy5CbG9iIGlzIHRydWUKIFBBU1MgKG5ldyBCbG9iKFsnaGVsbG8nXSwge3R5cGU6J3RleHQv
aHRtbCcsIGVuZGluZ3M6J3RyYW5zcGFyZW50J30pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlz
IHRydWUKLVBBU1MgbmV3IEJsb2IoJ2hlbGxvJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
Rmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIEFycmF5Lgot
UEFTUyBuZXcgQmxvYigwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBGaXJzdCBhcmd1bWVu
dCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgQXJyYXkuCitQQVNTIG5ldyBCbG9i
KCdoZWxsbycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVl
bmNlLgorUEFTUyBuZXcgQmxvYigwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBp
cyBub3QgYSBzZXF1ZW5jZS4KIFBBU1MgKG5ldyBCbG9iKFtdKSkgaW5zdGFuY2VvZiB3aW5kb3cu
QmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbJ3N0cmluZ1ByaW1pdGl2ZSddKSkgaW5zdGFu
Y2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbU3RyaW5nKCdzdHJpbmdP
YmplY3QnKV0pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKQEAgLTcyLDYgKzcyLDEy
IEBAIFBBU1MgbmV3IEJsb2IoWyhuZXcgRmxvYXQzMkFycmF5KDEwMCkpLmIKIFBBU1MgbmV3IEJs
b2IoWyhuZXcgRmxvYXQ2NEFycmF5KDEwMCkpLmJ1ZmZlcl0pLnNpemUgaXMgODAwCiBQQVNTIG5l
dyBCbG9iKFsobmV3IEZsb2F0NjRBcnJheSgxMDApKS5idWZmZXIsIChuZXcgSW50MzJBcnJheSgx
MDApKS5idWZmZXIsIChuZXcgVWludDhBcnJheSgxMDApKS5idWZmZXIsIChuZXcgRGF0YVZpZXco
bmV3IEFycmF5QnVmZmVyKDEwMCkpKS5idWZmZXJdKS5zaXplIGlzIDE0MDAKIFBBU1MgbmV3IEJs
b2IoW25ldyBCbG9iKFsobmV3IEludDMyQXJyYXkoMTAwKSkuYnVmZmVyXSksIChuZXcgVWludDhB
cnJheSgxMDApKS5idWZmZXIsIChuZXcgRmxvYXQzMkFycmF5KDEwMCkpLmJ1ZmZlciwgKG5ldyBE
YXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSkpLmJ1ZmZlcl0pLnNpemUgaXMgMTAwMAorUEFT
UyBuZXcgQmxvYih7bGVuZ3RoOiAwfSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCitQ
QVNTIG5ldyBCbG9iKHtsZW5ndGg6IDB9KS5zaXplIGlzIDAKK1BBU1MgbmV3IEJsb2Ioe2xlbmd0
aDogMSwgMDogJ3N0cmluZyd9KS5zaXplIGlzIDYKK1BBU1MgbmV3IEJsb2Ioe2xlbmd0aDogMiwg
MDogbmV3IFVpbnQ4QXJyYXkoMTAwKSwgMTogbmV3IEludDE2QXJyYXkoMTAwKX0pLnNpemUgaXMg
MzAwCitQQVNTIG5ldyBCbG9iKHtsZW5ndGg6IDEsIDA6ICdzdHJpbmcnfSwge3R5cGU6ICd0ZXh0
L2h0bWwnfSkudHlwZSBpcyAndGV4dC9odG1sJworUEFTUyBuZXcgQmxvYih7bGVuZ3RoOiAwfSwg
e2VuZGluZ3M6J2lsbGVnYWwnfSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIGVuZGlu
Z3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgInRyYW5zcGFyZW50IiBvciAibmF0aXZlIi4KIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1jb25zdHJ1Y3Rvci5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0
cnVjdG9yLmpzCShyZXZpc2lvbiAxNTkxNDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Nj
cmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsx
MCw4IEBAIHNob3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFsnaGVsbG8nXSwge3R5cGUKIHNob3VsZEJl
VHJ1ZSgiKG5ldyBCbG9iKFsnaGVsbG8nXSwge3R5cGU6J3RleHQvaHRtbCcsIGVuZGluZ3M6J3Ry
YW5zcGFyZW50J30pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIik7CiAKIC8vIFRlc3QgaW52YWxp
ZCBibG9iIHBhcnRzCi1zaG91bGRUaHJvdygibmV3IEJsb2IoJ2hlbGxvJykiLCAiJ1R5cGVFcnJv
cjogRmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIEFycmF5
JyIpOwotc2hvdWxkVGhyb3coIm5ldyBCbG9iKDApIiwgIidUeXBlRXJyb3I6IEZpcnN0IGFyZ3Vt
ZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBBcnJheSciKTsKK3Nob3VsZFRo
cm93KCJuZXcgQmxvYignaGVsbG8nKSIsICInVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1
ZW5jZSciKTsKK3Nob3VsZFRocm93KCJuZXcgQmxvYigwKSIsICInVHlwZUVycm9yOiBWYWx1ZSBp
cyBub3QgYSBzZXF1ZW5jZSciKTsKIAogLy8gVGVzdCB2YWxpZCBibG9iIHBhcnRzLgogc2hvdWxk
QmVUcnVlKCIobmV3IEJsb2IoW10pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIik7CkBAIC05OCwz
ICs5OCwxMSBAQCBzaG91bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxvYXQzMkFycmF5KDEwCiBzaG91
bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxvYXQ2NEFycmF5KDEwMCkpLmJ1ZmZlcl0pLnNpemUiLCAi
ODAwIik7CiBzaG91bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxvYXQ2NEFycmF5KDEwMCkpLmJ1ZmZl
ciwgKG5ldyBJbnQzMkFycmF5KDEwMCkpLmJ1ZmZlciwgKG5ldyBVaW50OEFycmF5KDEwMCkpLmJ1
ZmZlciwgKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSkpLmJ1ZmZlcl0pLnNpemUi
LCAiMTQwMCIpOwogc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgQmxvYihbKG5ldyBJbnQzMkFycmF5
KDEwMCkpLmJ1ZmZlcl0pLCAobmV3IFVpbnQ4QXJyYXkoMTAwKSkuYnVmZmVyLCAobmV3IEZsb2F0
MzJBcnJheSgxMDApKS5idWZmZXIsIChuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEwMCkp
KS5idWZmZXJdKS5zaXplIiwgIjEwMDAiKTsKKworLy8gVGVzdCBwYXNzaW5nIGJsb2IgcGFydHMg
aW4gc2VxdWVuY2VzLgorc2hvdWxkQmVUcnVlKCJuZXcgQmxvYih7bGVuZ3RoOiAwfSkgaW5zdGFu
Y2VvZiB3aW5kb3cuQmxvYiIpOworc2hvdWxkQmUoIm5ldyBCbG9iKHtsZW5ndGg6IDB9KS5zaXpl
IiwgIjAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYih7bGVuZ3RoOiAxLCAwOiAnc3RyaW5nJ30pLnNp
emUiLCAiNiIpOworc2hvdWxkQmUoIm5ldyBCbG9iKHtsZW5ndGg6IDIsIDA6IG5ldyBVaW50OEFy
cmF5KDEwMCksIDE6IG5ldyBJbnQxNkFycmF5KDEwMCl9KS5zaXplIiwgIjMwMCIpOworc2hvdWxk
QmUoIm5ldyBCbG9iKHtsZW5ndGg6IDEsIDA6ICdzdHJpbmcnfSwge3R5cGU6ICd0ZXh0L2h0bWwn
fSkudHlwZSIsICIndGV4dC9odG1sJyIpOworc2hvdWxkVGhyb3coIm5ldyBCbG9iKHtsZW5ndGg6
IDB9LCB7ZW5kaW5nczonaWxsZWdhbCd9KSIsICInVHlwZUVycm9yOiBUaGUgZW5kaW5ncyBwcm9w
ZXJ0eSBtdXN0IGJlIGVpdGhlciBcInRyYW5zcGFyZW50XCIgb3IgXCJuYXRpdmVcIiciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216730</attachid>
            <date>2013-11-12 15:24:18 -0800</date>
            <delta_ts>2013-11-13 21:44:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124175-20131112182419.patch</filename>
            <type>text/plain</type>
            <size>20462</size>
            <attacher name="Victor Costan">costan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTExLTEyICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBCbG9iIGNvbnN0cnVjdG9yIGFj
Y2VwdHMgYSBzZXF1ZW5jZSAoYXJyYXktbGlrZSBvYmplY3QpIGFzIGZpcnN0IGFyZy4gCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IGNh
c2VzIHRvIGZhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOiBNYWtlIHRoZSBjb25zdHJ1Y3Rv
ciB3b3JrIHdpdGggc2VxdWVuY2VzLgorICAgICAgICAoV2ViQ29yZTo6SlNCbG9iQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTQmxvYik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTU2VxdWVuY2UpOiBTbGlnaHRseSBiZXR0ZXIgZXJy
b3IgbWVzc2FnZSB3aGVuIGNvbnZlcnNpb24gZmFpbHMuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
KTogV2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OmpzQXJyYXkpOiBXaGl0ZXNwYWNlLgor
CiAyMDEzLTExLTExICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIFJlbmRlckJsb2NrUmFyZURhdGEgYmUgaW4gYSBoYXNodGFibGUgaW5zdGVhZCBvZiBiZWlu
ZyBhIG1lbWJlciB2YXJpYWJsZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmxvYkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCbG9iQ3VzdG9tLmNwcAkocmV2aXNpb24gMTU5MTQ4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsOSArNzEsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Jsb2JDb25zdAogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgQmxvYiwgYmxvYi5nZXQoKSkpOwogICAgIH0KIAotICAgIEpTVmFs
dWUgZmlyc3RBcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoIWlzSlNBcnJheShmaXJz
dEFyZykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJGaXJzdCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUg
QXJyYXkiKSk7CisgICAgdW5zaWduZWQgYmxvYlBhcnRzTGVuZ3RoID0gMDsKKyAgICBKU09iamVj
dCogYmxvYlBhcnRzID0gdG9KU1NlcXVlbmNlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBibG9i
UGFydHNMZW5ndGgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoYmxvYlBhcnRz
KTsKIAogICAgIFN0cmluZyB0eXBlOwogICAgIFN0cmluZyBlbmRpbmdzID0gQVNDSUlMaXRlcmFs
KCJ0cmFuc3BhcmVudCIpOwpAQCAtMTEwLDExICsxMTIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTQmxvYkNvbnN0CiAKICAgICBCbG9iQnVpbGRlciBibG9iQnVpbGRlcjsKIAot
ICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShmaXJzdEFyZyk7Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gYXJyYXktPmxlbmd0aCgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgaXRlbSA9IGFycmF5LT5nZXRJbmRleChleGVj
LCBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvYlBhcnRzTGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgSlNWYWx1ZSBpdGVtID0gYmxvYlBhcnRzLT5nZXQoZXhlYywgaSk7CiAjaWYg
RU5BQkxFKEJMT0IpCiAgICAgICAgIGlmIChpdGVtLmluaGVyaXRzKEpTQXJyYXlCdWZmZXI6Omlu
Zm8oKSkpCiAgICAgICAgICAgICBibG9iQnVpbGRlci5hcHBlbmQodG9BcnJheUJ1ZmZlcihpdGVt
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2
aXNpb24gMTU5MTQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUgSlNDOjpXZWFrSGFu
ZGxlT3duZXIqIHdyYXBwZXJPd25lCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlcio+KHdvcmxkLnZtKCktPm1fdHlwZWRBcnJheUNvbnRyb2xsZXIu
Z2V0KCkpLT53cmFwcGVyT3duZXIoKTsKIH0KLSAgICAKKwogaW5saW5lIHZvaWQqIHdyYXBwZXJD
b250ZXh0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqKQogewogICAg
IHJldHVybiAmd29ybGQ7CkBAIC0xOTcsNyArMTk3LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIERP
TUNsYXNzLCB0eXBlbmFtZSBXcgogICAgICAgICByZXR1cm47CiAgICAgd2Vha1JlbW92ZSh3b3Js
ZC5tX3dyYXBwZXJzLCAodm9pZCopZG9tT2JqZWN0LCB3cmFwcGVyKTsKIH0KLSAgICAKKwogI2Rl
ZmluZSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBjbGFzc05hbWUsIG9i
amVjdCkgY3JlYXRlV3JhcHBlcjxKUyMjY2xhc3NOYW1lPihleGVjLCBnbG9iYWxPYmplY3QsIHN0
YXRpY19jYXN0PGNsYXNzTmFtZSo+KG9iamVjdCkpCiB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xh
c3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlNET01XcmFwcGVyKiBjcmVhdGVXcmFwcGVyKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01D
bGFzcyogbm9kZSkKIHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpz
U3RyaW5nV2l0aENhY2hlKEpTCiB7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IHMuc3RyaW5nKCkpOwogfQotICAgICAgICAKKwogSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxs
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7IC8vIG51bGwgaWYgdGhlIHN0cmluZyBp
cyBudWxsCiBKU0M6OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBVUkwmKTsgLy8gbnVsbCBpZiB0aGUgVVJMIGlzIG51bGwKIApAQCAtMzI1LDcgKzMyNSw3IEBA
IGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjoKIHsKICAgICBKU0M6OkpT
T2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMzM0LDcgKzMzNCw3IEBAIGlubGluZSBKU0M6OkpT
T2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjoKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAo
bGVuZ3RoVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IApAQCAtMzc0LDEwICszNzQsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZlY3RvcjxUPiB2ZWN0b3IpCiB7CiAgICAgSlNDOjpKU0FycmF5KiBhcnJh
eSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCwgdmVjdG9yLnNpemUoKSk7Ci0gICAgCisK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAg
YXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB2
ZWN0b3JbaV0pKTsKLSAgICAKKwogICAgIHJldHVybiBhcnJheTsKIH0KIApAQCAtMzg1LDEwICsz
ODUsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZl
Y3RvcjxSZWZQdHI8VD4+IHZlY3RvcikKIHsKICAgICBKU0M6OkpTQXJyYXkqIGFycmF5ID0gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCAwLCB2ZWN0b3Iuc2l6ZSgpKTsKLSAgICAKKwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICBhcnJheS0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHZlY3Rvcltp
XS5nZXQoKSkpOwotICAgIAorCiAgICAgcmV0dXJuIGFycmF5OwogfQogCkBAIC00MjgsNyArNDI4
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhYwogSlNDOjpKU1Zh
bHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIGl0ZXJhdG9yKQogewog
ICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKLSAgICB0eXBlbmFtZSBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpdGVyYXRvci5lbmQoKTsg
ICAgICAgIAorICAgIHR5cGVuYW1lIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGl0ZXJhdG9yLmVuZCgpOwogICAgIHR5cGVkZWYgSlNWYWx1ZVRyYWl0czxU
PiBUcmFpdHNUeXBlOwogCiAgICAgZm9yICh0eXBlbmFtZSBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHk+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaXRlcmF0b3IuYmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTE1NCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTExLTEyICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBCbG9iIGNvbnN0cnVjdG9yIGFj
Y2VwdHMgYSBzZXF1ZW5jZSAoYXJyYXktbGlrZSBvYmplY3QpIGFzIGZpcnN0IGFyZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDE3NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisKKyAgICAgICAgKiBjcnlwdG8vc3Vi
dGxlL2FyZ3VtZW50LWNvbnZlcnNpb24tZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHNlcXVlbmNlIGVy
cm9yIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHNlcXVlbmNlIGVycm9yIGV4cGVjdGF0
aW9ucy4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvbWVzc2FnZS1ldmVudC1j
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgc2VxdWVuY2UgZXJyb3IgZXhwZWN0YXRp
b25zLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50
eHQ6IFVwZGF0ZWQgc2VxdWVuY2UgZXJyb3IgZXhwZWN0YXRpb25zLgorICAgICAgICAqIGZhc3Qv
ZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgZXJyb3IgdGV4dCBh
bmQgYWRkZWQgZXhwZWN0YXRpb25zLgorICAgICAgICAqIGZhc3QvZmlsZXMvc2NyaXB0LXRlc3Rz
L2Jsb2ItY29uc3RydWN0b3IuanM6IEFkZGVkIHNlcXVlbmNlIHRlc3QgY2FzZXMuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0OiBV
cGRhdGVkIHNlcXVlbmNlIGVycm9yIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHNlcXVlbmNlIGVycm9y
IGV4cGVjdGF0aW9ucy4KKwogMjAxMy0xMS0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3At
Ym94Lmh0bWwgdG8gdGhlIHBpbGUgb2YgdGlueS1jb2xvci1taXNtYXRjaCB0ZXN0cy4KSW5kZXg6
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYXJndW1lbnQtY29udmVyc2lvbi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hcmd1bWVudC1jb252
ZXJzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU5MTQ4KQorKysgTGF5b3V0VGVzdHMvY3J5
cHRvL3N1YnRsZS9hcmd1bWVudC1jb252ZXJzaW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTcsOCArMTcsOCBAQCBQQVNTIC4uLnN1Y2NlZWRlZAogCiBQYXNzaW5nIGludmFsaWQg
ZGF0YSB0byBkaWdlc3QoKQogUEFTUyBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3NoYS0x
J30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFT
UyBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3NoYS0xJ30sIG51bGwpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtu
YW1lOiAnc2hhLTEnfSwgMTApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CitQQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgbnVsbCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UuCitQQVNTIGNyeXB0
by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgMTApIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlLgogUEFTUyBjcnlwdG8uc3VidGxlLmRpZ2Vz
dCh7bmFtZTogJ3NoYS0xJ30sIFsxMF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9ubHkg
QXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXJ0IG9mIENy
eXB0b09wZXJhdGlvbkRhdGEgc2VxdWVuY2UuCiBQQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtu
YW1lOiAnc2hhLTEnfSwgbmV3IFVpbnQ4QXJyYXkoWzBdKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogT25seSBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IG9iamVjdHMgY2FuIGJl
IHBhcnQgb2YgQ3J5cHRvT3BlcmF0aW9uRGF0YSBzZXF1ZW5jZS4KIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTkxNDgpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQg
b2Ygd2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYg
aXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEn
IHRocm91Z2ggJzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2Vp
dmVkIGJlbG93LgogCi1QQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCBj
KTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgotUEFTUzogUG9zdGluZyBt
ZXNzYWdlICgnMycsIFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKK1BBU1M6IFBvc3RpbmcgbWVz
c2FnZSAoJzInLCBjKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEg
c2VxdWVuY2UKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQogUEFTUzog
UG9zdGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBl
eGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzRhJywgKikgZGlkIG5vdCB0aHJvdyBh
biBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUnLCBudWxsKSBkaWQgbm90IHRo
cm93IGFuIGV4Y2VwdGlvbgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LW11bHRpLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTkxNDgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQCBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoImVudGFuZ2xlCiBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm51bGwgcG9y
dCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgogUEFTUyBjaGFu
bmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNo
YW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBB
U1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZHVwbGljYXRlIHBvcnQiLCBbY2hhbm5lbDMu
cG9ydDEsIGNoYW5uZWwzLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3Rh
dGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2Fn
ZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5
IiwgY2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5v
dCBhIHNlcXVlbmNlLgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVu
Y2UiLCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJsYXJnZVNlcXVlbmNlIiwgbGFyZ2VQ
b3J0QXJyYXkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBF
eGNlcHRpb24gMTEuCiBQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0
aCB3aGVuIG5vIHBvcnQgc2VudApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY29uc3Ry
dWN0b3JzL21lc3NhZ2UtZXZlbnQtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZXNzYWdlLWV2ZW50LWNv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU5MTQ4KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL21lc3NhZ2UtZXZlbnQtY29uc3RydWN0b3ItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04MywxOCArODMsMTggQEAgUEFTUyBuZXcgTWVzc2Fn
ZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcgogUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5
cGUnLCB7IHBvcnRzOiB1bmRlZmluZWQgfSkucG9ydHMgaXMgW10KIFBBU1MgbmV3IE1lc3NhZ2VF
dmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogbnVsbCB9KS5wb3J0cyBpcyBbXQogUEFTUyBuZXcg
TWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiBbMSwgMiwgM10gfSkucG9ydHNbMl0g
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgbmV3IE1lc3NhZ2VF
dmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogdGVzdF9vYmplY3QgfSkucG9ydHMgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZl
bnRUeXBlJywgeyBwb3J0czogZG9jdW1lbnQgfSkucG9ydHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KLVBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBw
b3J0czogZmFsc2UgfSkucG9ydHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KLVBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogdHJ1ZSB9KS5w
b3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBuZXcgTWVz
c2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiAnJyB9KS5wb3J0cyB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5
cGUnLCB7IHBvcnRzOiAnY2hvY29sYXRlJyB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBv
cnRzOiAxMjM0NSB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiAxODQ0Njc0NDA3
MzcwOTU1MTYxNSB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiBOYU4gfSkucG9y
dHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgbmV3IE1lc3Nh
Z2VFdmVudCgnZXZlbnRUeXBlJywgeyBnZXQgcG9ydHMoKSB7IHJldHVybiAxMjM7IH0gfSkucG9y
dHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IE1lc3Nh
Z2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogdGVzdF9vYmplY3QgfSkucG9ydHMgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UuCitQQVNTIG5ldyBN
ZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IGRvY3VtZW50IH0pLnBvcnRzIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlLgorUEFTUyBuZXcg
TWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiBmYWxzZSB9KS5wb3J0cyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4KK1BBU1MgbmV3IE1l
c3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogdHJ1ZSB9KS5wb3J0cyB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4KK1BBU1MgbmV3IE1lc3Nh
Z2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogJycgfSkucG9ydHMgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UuCitQQVNTIG5ldyBNZXNzYWdlRXZl
bnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6ICdjaG9jb2xhdGUnIH0pLnBvcnRzIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlLgorUEFTUyBuZXcgTWVzc2Fn
ZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiAxMjM0NSB9KS5wb3J0cyB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4KK1BBU1MgbmV3IE1lc3NhZ2VF
dmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogMTg0NDY3NDQwNzM3MDk1NTE2MTUgfSkucG9ydHMg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UuCitQQVNT
IG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IE5hTiB9KS5wb3J0cyB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4KK1BBU1MgbmV3
IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBnZXQgcG9ydHMoKSB7IHJldHVybiAxMjM7IH0g
fSkucG9ydHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVu
Y2UuCiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgZ2V0IHBvcnRzKCkgeyB0
aHJvdyAnTWVzc2FnZUV2ZW50IEVycm9yJzsgfSB9KSB0aHJldyBleGNlcHRpb24gTWVzc2FnZUV2
ZW50IEVycm9yLgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiB7
dmFsdWVPZjogZnVuY3Rpb24gKCkgeyByZXR1cm4gW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9y
dDIsIGNoYW5uZWwucG9ydDJdOyB9IH0gfSkucG9ydHNbMF0gdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBw
b3J0czoge3ZhbHVlT2Y6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtjaGFubmVsLnBvcnQxLCBjaGFu
bmVsLnBvcnQyLCBjaGFubmVsLnBvcnQyXTsgfSB9IH0pLnBvcnRzWzBdIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlLgogUEFTUyBuZXcgTWVzc2FnZUV2
ZW50KCdldmVudFR5cGUnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIGRhdGE6
IHRlc3Rfb2JqZWN0LCBvcmlnaW46ICd3b25kZXJmdWwnLCBsYXN0RXZlbnRJZDogJ2V4Y2VsbGVu
dCcsIHNvdXJjZTogd2luZG93LCBwb3J0czogW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDIs
IGNoYW5uZWwyLnBvcnQxXSB9KS5idWJibGVzIGlzIHRydWUKIFBBU1MgbmV3IE1lc3NhZ2VFdmVu
dCgnZXZlbnRUeXBlJywgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlLCBkYXRhOiB0
ZXN0X29iamVjdCwgb3JpZ2luOiAnd29uZGVyZnVsJywgbGFzdEV2ZW50SWQ6ICdleGNlbGxlbnQn
LCBzb3VyY2U6IHdpbmRvdywgcG9ydHM6IFtjaGFubmVsLnBvcnQxLCBjaGFubmVsLnBvcnQyLCBj
aGFubmVsMi5wb3J0MV0gfSkuY2FuY2VsYWJsZSBpcyB0cnVlCiBQQVNTIG5ldyBNZXNzYWdlRXZl
bnQoJ2V2ZW50VHlwZScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSwgZGF0YTog
dGVzdF9vYmplY3QsIG9yaWdpbjogJ3dvbmRlcmZ1bCcsIGxhc3RFdmVudElkOiAnZXhjZWxsZW50
Jywgc291cmNlOiB3aW5kb3csIHBvcnRzOiBbY2hhbm5lbC5wb3J0MSwgY2hhbm5lbC5wb3J0Miwg
Y2hhbm5lbDIucG9ydDFdIH0pLmRhdGEgaXMgdGVzdF9vYmplY3QKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU5MTQ4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQCBQQVNTIChuZXcg
QmxvYihbJ2hlbGxvJ10sIHt9KSkgaW5zdGFuY2VvCiBQQVNTIChuZXcgQmxvYihbJ2hlbGxvJ10s
IHt0eXBlOid0ZXh0L2h0bWwnfSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IgaXMgdHJ1ZQogUEFT
UyAobmV3IEJsb2IoWydoZWxsbyddLCB7dHlwZTondGV4dC9odG1sJywgZW5kaW5nczonbmF0aXZl
J30pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKIFBBU1MgKG5ldyBCbG9iKFsnaGVs
bG8nXSwge3R5cGU6J3RleHQvaHRtbCcsIGVuZGluZ3M6J3RyYW5zcGFyZW50J30pKSBpbnN0YW5j
ZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKLVBBU1MgbmV3IEJsb2IoJ2hlbGxvJykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogRmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5v
dCBvZiB0eXBlIEFycmF5LgotUEFTUyBuZXcgQmxvYigwKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBGaXJzdCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgQXJy
YXkuCitQQVNTIG5ldyBCbG9iKCdoZWxsbycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZh
bHVlIGlzIG5vdCBhIHNlcXVlbmNlLgorUEFTUyBuZXcgQmxvYigwKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4KIFBBU1MgKG5ldyBCbG9iKFtdKSkg
aW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbJ3N0cmluZ1By
aW1pdGl2ZSddKSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxv
YihbU3RyaW5nKCdzdHJpbmdPYmplY3QnKV0pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRy
dWUKQEAgLTcyLDYgKzcyLDEyIEBAIFBBU1MgbmV3IEJsb2IoWyhuZXcgRmxvYXQzMkFycmF5KDEw
MCkpLmIKIFBBU1MgbmV3IEJsb2IoWyhuZXcgRmxvYXQ2NEFycmF5KDEwMCkpLmJ1ZmZlcl0pLnNp
emUgaXMgODAwCiBQQVNTIG5ldyBCbG9iKFsobmV3IEZsb2F0NjRBcnJheSgxMDApKS5idWZmZXIs
IChuZXcgSW50MzJBcnJheSgxMDApKS5idWZmZXIsIChuZXcgVWludDhBcnJheSgxMDApKS5idWZm
ZXIsIChuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEwMCkpKS5idWZmZXJdKS5zaXplIGlz
IDE0MDAKIFBBU1MgbmV3IEJsb2IoW25ldyBCbG9iKFsobmV3IEludDMyQXJyYXkoMTAwKSkuYnVm
ZmVyXSksIChuZXcgVWludDhBcnJheSgxMDApKS5idWZmZXIsIChuZXcgRmxvYXQzMkFycmF5KDEw
MCkpLmJ1ZmZlciwgKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSkpLmJ1ZmZlcl0p
LnNpemUgaXMgMTAwMAorUEFTUyBuZXcgQmxvYih7bGVuZ3RoOiAwfSkgaW5zdGFuY2VvZiB3aW5k
b3cuQmxvYiBpcyB0cnVlCitQQVNTIG5ldyBCbG9iKHtsZW5ndGg6IDB9KS5zaXplIGlzIDAKK1BB
U1MgbmV3IEJsb2Ioe2xlbmd0aDogMSwgMDogJ3N0cmluZyd9KS5zaXplIGlzIDYKK1BBU1MgbmV3
IEJsb2Ioe2xlbmd0aDogMiwgMDogbmV3IFVpbnQ4QXJyYXkoMTAwKSwgMTogbmV3IEludDE2QXJy
YXkoMTAwKX0pLnNpemUgaXMgMzAwCitQQVNTIG5ldyBCbG9iKHtsZW5ndGg6IDEsIDA6ICdzdHJp
bmcnfSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkudHlwZSBpcyAndGV4dC9odG1sJworUEFTUyBuZXcg
QmxvYih7bGVuZ3RoOiAwfSwge2VuZGluZ3M6J2lsbGVnYWwnfSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgInRyYW5zcGFyZW50
IiBvciAibmF0aXZlIi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1j
b25zdHJ1Y3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Njcmlw
dC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCShyZXZpc2lvbiAxNTkxNDgpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIHNob3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFsnaGVsbG8n
XSwge3R5cGUKIHNob3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFsnaGVsbG8nXSwge3R5cGU6J3RleHQv
aHRtbCcsIGVuZGluZ3M6J3RyYW5zcGFyZW50J30pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIik7
CiAKIC8vIFRlc3QgaW52YWxpZCBibG9iIHBhcnRzCi1zaG91bGRUaHJvdygibmV3IEJsb2IoJ2hl
bGxvJykiLCAiJ1R5cGVFcnJvcjogRmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlz
IG5vdCBvZiB0eXBlIEFycmF5JyIpOwotc2hvdWxkVGhyb3coIm5ldyBCbG9iKDApIiwgIidUeXBl
RXJyb3I6IEZpcnN0IGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBB
cnJheSciKTsKK3Nob3VsZFRocm93KCJuZXcgQmxvYignaGVsbG8nKSIsICInVHlwZUVycm9yOiBW
YWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSciKTsKK3Nob3VsZFRocm93KCJuZXcgQmxvYigwKSIsICIn
VHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSciKTsKIAogLy8gVGVzdCB2YWxpZCBi
bG9iIHBhcnRzLgogc2hvdWxkQmVUcnVlKCIobmV3IEJsb2IoW10pKSBpbnN0YW5jZW9mIHdpbmRv
dy5CbG9iIik7CkBAIC05OCwzICs5OCwxMSBAQCBzaG91bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxv
YXQzMkFycmF5KDEwCiBzaG91bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxvYXQ2NEFycmF5KDEwMCkp
LmJ1ZmZlcl0pLnNpemUiLCAiODAwIik7CiBzaG91bGRCZSgibmV3IEJsb2IoWyhuZXcgRmxvYXQ2
NEFycmF5KDEwMCkpLmJ1ZmZlciwgKG5ldyBJbnQzMkFycmF5KDEwMCkpLmJ1ZmZlciwgKG5ldyBV
aW50OEFycmF5KDEwMCkpLmJ1ZmZlciwgKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAw
KSkpLmJ1ZmZlcl0pLnNpemUiLCAiMTQwMCIpOwogc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgQmxv
YihbKG5ldyBJbnQzMkFycmF5KDEwMCkpLmJ1ZmZlcl0pLCAobmV3IFVpbnQ4QXJyYXkoMTAwKSku
YnVmZmVyLCAobmV3IEZsb2F0MzJBcnJheSgxMDApKS5idWZmZXIsIChuZXcgRGF0YVZpZXcobmV3
IEFycmF5QnVmZmVyKDEwMCkpKS5idWZmZXJdKS5zaXplIiwgIjEwMDAiKTsKKworLy8gVGVzdCBw
YXNzaW5nIGJsb2IgcGFydHMgaW4gc2VxdWVuY2VzLgorc2hvdWxkQmVUcnVlKCJuZXcgQmxvYih7
bGVuZ3RoOiAwfSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiIpOworc2hvdWxkQmUoIm5ldyBCbG9i
KHtsZW5ndGg6IDB9KS5zaXplIiwgIjAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYih7bGVuZ3RoOiAx
LCAwOiAnc3RyaW5nJ30pLnNpemUiLCAiNiIpOworc2hvdWxkQmUoIm5ldyBCbG9iKHtsZW5ndGg6
IDIsIDA6IG5ldyBVaW50OEFycmF5KDEwMCksIDE6IG5ldyBJbnQxNkFycmF5KDEwMCl9KS5zaXpl
IiwgIjMwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKHtsZW5ndGg6IDEsIDA6ICdzdHJpbmcnfSwg
e3R5cGU6ICd0ZXh0L2h0bWwnfSkudHlwZSIsICIndGV4dC9odG1sJyIpOworc2hvdWxkVGhyb3co
Im5ldyBCbG9iKHtsZW5ndGg6IDB9LCB7ZW5kaW5nczonaWxsZWdhbCd9KSIsICInVHlwZUVycm9y
OiBUaGUgZW5kaW5ncyBwcm9wZXJ0eSBtdXN0IGJlIGVpdGhlciBcInRyYW5zcGFyZW50XCIgb3Ig
XCJuYXRpdmVcIiciKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29u
dGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE1OTE0OCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1t
dWx0aS1wb3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw3ICs5LDcgQEAgUEFT
UyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbgogUEFTUyBwb3N0aW5nIGEgbnVs
bCBwb3J0IGRpZCB0aHJvdzogRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9u
IDExCiBQQVNTIHBvc3RpbmcgYSBub24tcG9ydCBkaWQgdGhyb3c6IFR5cGVFcnJvcjogVHlwZSBl
cnJvcgogUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMg
cmUtc2VudCBhZnRlciBlcnJvcgotUEFTUyBwb3N0aW5nIGEgbm9uLWFycmF5IGRpZCB0aHJvdzog
VHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBub24tYXJyYXkgZGlkIHRocm93
OiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlCiBQQVNTIHBvc3RpbmcgYSBub24t
c2VxdWVuY2UgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVU
RQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11
bHRpLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTkxNDgpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC01LDcgKzUsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
CiAKIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEs
IG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3Rh
dGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RB
UG9ydCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RB
bkFycmF5IiwgY2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBv
cnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4K
IFBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0aDogM31dKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBldmVudC5wb3J0cyBp
cyBub24tbnVsbCBhbmQgemVybyBsZW5ndGggd2hlbiBubyBwb3J0IHNlbnQKIFBBU1MgZXZlbnQu
cG9ydHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gZW1wdHkgYXJyYXkgc2VudAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>