<?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>107287</bug_id>
          
          <creation_ts>2013-01-18 08:43:54 -0800</creation_ts>
          <short_desc>Web Inspector: modify generate_protocol_externs.py to generate JSON typedef&apos;s for @constructors</short_desc>
          <delta_ts>2013-01-21 06:17:45 -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>Web Inspector (Deprecated)</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rniwa</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>810643</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-18 08:43:54 -0800</bug_when>
    <thetext>We&apos;ll need to modify generate_protocol_externs.py to also generate JSON typedef&apos;s for @constructors, like:

/** @constructor */
CanvasAgent.TraceLog = function()
{
/** @type {CanvasAgent.TraceLogId} */ this.id;
/** @type {Array.&lt;CanvasAgent.Call&gt;} */ this.calls;
/** @type {number|undefined} */ this.startOffset;
/** @type {boolean|undefined} */ this.alive;
}

/** @typedef {{id:CanvasAgent.TraceLogId, calls:Array.&lt;CanvasAgent.Call&gt;, ...}} */
CanvasAgent.TraceLogJSON;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810837</commentid>
    <comment_count>1</comment_count>
      <attachid>183506</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-18 10:56:57 -0800</bug_when>
    <thetext>Created attachment 183506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810873</commentid>
    <comment_count>2</comment_count>
      <attachid>183515</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-18 11:24:31 -0800</bug_when>
    <thetext>Created attachment 183515
Generated protocol externs diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810880</commentid>
    <comment_count>3</comment_count>
      <attachid>183506</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-18 11:30:33 -0800</bug_when>
    <thetext>Comment on attachment 183506
Patch

Attachment 183506 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/15948481

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810910</commentid>
    <comment_count>4</comment_count>
      <attachid>183506</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 12:04:44 -0800</bug_when>
    <thetext>Comment on attachment 183506
Patch

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

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810965</commentid>
    <comment_count>5</comment_count>
      <attachid>183506</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-18 13:08:45 -0800</bug_when>
    <thetext>Comment on attachment 183506
Patch

Attachment 183506 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15949458

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811846</commentid>
    <comment_count>6</comment_count>
      <attachid>183506</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-20 23:20:11 -0800</bug_when>
    <thetext>Comment on attachment 183506
Patch

What is CanvasAgent.TraceLogJSON? CanvasAgent.TraceLog is already generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811940</commentid>
    <comment_count>7</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-21 01:50:01 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 183506 [details])
&gt; What is CanvasAgent.TraceLogJSON? CanvasAgent.TraceLog is already generated.

hmmm... plz see my first comment :) also plz check out the generated protocol externs diff.

These are two different types. The CanvasAgent.TraceLog defines a type of CanvasAgent.TraceLog class with some methods defined in prototype and etc. The CanvasAgent.TraceLogJSON is of the Object type with a set of properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811942</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-21 01:52:13 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 183506 [details] [details])
&gt; &gt; What is CanvasAgent.TraceLogJSON? CanvasAgent.TraceLog is already generated.
&gt; 
&gt; hmmm... plz see my first comment :) also plz check out the generated protocol externs diff.
&gt; 
&gt; These are two different types. The CanvasAgent.TraceLog defines a type of CanvasAgent.TraceLog class with some methods defined in prototype and etc. The CanvasAgent.TraceLogJSON is of the Object type with a set of properties.

But I think they are equivalent from the compiler standpoint. At least the ones you specify in comment #1 are equivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811950</commentid>
    <comment_count>9</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-21 02:03:04 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (From update of attachment 183506 [details] [details] [details])
&gt; &gt; &gt; What is CanvasAgent.TraceLogJSON? CanvasAgent.TraceLog is already generated.
&gt; &gt; 
&gt; &gt; hmmm... plz see my first comment :) also plz check out the generated protocol externs diff.
&gt; &gt; 
&gt; &gt; These are two different types. The CanvasAgent.TraceLog defines a type of CanvasAgent.TraceLog class with some methods defined in prototype and etc. The CanvasAgent.TraceLogJSON is of the Object type with a set of properties.
&gt; 
&gt; But I think they are equivalent from the compiler standpoint. At least the ones you specify in comment #1 are equivalent.

Those are different. Example:

/** @type {CanvasAgent.TraceLog} */
var a;
/** @type {CanvasAgent.TraceLogJSON} */
var b;

a = {id:1, calls:[], ...}; // compiler warns it cannot be casted to CanvasAgent.TraceLog
b = {id:2, calls:[], ...}; // compiler will do the right thing

b = {calls:[], ...}; // compiler will warn that the &apos;id&apos; property is missing, cause it&apos;s not optional

Even the following is not permitted by the recent version of compiler:
a = /** @type {CanvasAgent.TraceLog} */ ({id:1, calls:[], ...});

not to mention that we would loose all compiler type checking work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811952</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-21 02:06:54 -0800</bug_when>
    <thetext>My point is that CanvasAgent.TraceLog is a type we define for protocol type TraceLog that is supposed to describe the JSON payload. And with that regard, TraceLog is no different from any other type we use. If you are saying compiler could check more if we switched to another notation, please switch entire protocol there. I.e. start generating @typedefs for all payloads and use existing names for the types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811954</commentid>
    <comment_count>11</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-21 02:11:16 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; My point is that CanvasAgent.TraceLog is a type we define for protocol type TraceLog that is supposed to describe the JSON payload. And with that regard, TraceLog is no different from any other type we use. If you are saying compiler could check more if we switched to another notation, please switch entire protocol there. I.e. start generating @typedefs for all payloads and use existing names for the types.

Oh, I see. Yes, we should use @typedef instead of @constructor, since those payloads are of type Object.

I&apos;ll send a new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812037</commentid>
    <comment_count>12</comment_count>
      <attachid>183759</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-21 04:50:01 -0800</bug_when>
    <thetext>Created attachment 183759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812054</commentid>
    <comment_count>13</comment_count>
      <attachid>183759</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 05:33:04 -0800</bug_when>
    <thetext>Comment on attachment 183759
Patch

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

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812082</commentid>
    <comment_count>14</comment_count>
      <attachid>183759</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-21 06:11:03 -0800</bug_when>
    <thetext>Comment on attachment 183759
Patch

Attachment 183759 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16038034

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812086</commentid>
    <comment_count>15</comment_count>
      <attachid>183759</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-21 06:16:35 -0800</bug_when>
    <thetext>Comment on attachment 183759
Patch

Attachment 183759 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16043028

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812087</commentid>
    <comment_count>16</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-21 06:17:45 -0800</bug_when>
    <thetext>Committed r140329: &lt;http://trac.webkit.org/changeset/140329&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183506</attachid>
            <date>2013-01-18 10:56:57 -0800</date>
            <delta_ts>2013-01-21 02:11:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107287-20130118225355.patch</filename>
            <type>text/plain</type>
            <size>13993</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg1OTVhNzZlYjgyOTky
MjRiZDE3OGJiN2I5YWVjNjE4M2Y5MzkzMC4uZWIxNjRlNDhhODgxMzkxM2I0ODk3NzI3MTc5MTJk
YmM2OTJkYTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTE4ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1vZGlmeSBnZW5lcmF0ZV9wcm90b2NvbF9leHRlcm5zLnB5IHRvIGdlbmVyYXRlIEpTT04g
dHlwZWRlZidzIGZvciBAY29uc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcyODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb2RpZnkgZ2VuZXJhdGVfcHJvdG9jb2xfZXh0ZXJucy5weSB0
byBnZW5lcmF0ZSBKU09OIHR5cGVkZWYncyBmb3IgQGNvbnN0cnVjdG9ycywKKworICAgICAgICAq
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qczoKKyAgICAgICAg
KC4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5zcGVjdG9y
L2dlbmVyYXRlX3Byb3RvY29sX2V4dGVybnMucHk6CisgICAgICAgIChwYXJhbV90eXBlKToKKwog
MjAxMy0wMS0xOCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBBWDogSW1wcm92ZSB0YWJsZS1ndWVzc2luZyBoZXVyaXN0aWNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2Uu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVT
b3VyY2UuanMKaW5kZXggOGQ0NDc4MTBhNzgxMTYwM2Y3YmM3Y2Y2ODkwODRmMDVlZDI5ZGMzZS4u
YjljZDQzODI1MGE0OTU5OTAyMTUxYzY5OWIwNzQ3ZjIxMTgyYTJhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZVNvdXJjZS5qcwpAQCAtMjg1Niw3ICsyODU2LDcgQEAgSW5qZWN0ZWRDYW52YXNNb2R1bGUucHJv
dG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Cisg
ICAgICogQHJldHVybiB7Q2FudmFzQWdlbnQuVHJhY2VMb2dJZH0KICAgICAgKi8KICAgICBjYXB0
dXJlRnJhbWU6IGZ1bmN0aW9uKCkKICAgICB7CkBAIC0yODY0LDcgKzI4NjQsNyBAQCBJbmplY3Rl
ZENhbnZhc01vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKiBAcmV0dXJuIHtDYW52YXNBZ2VudC5UcmFjZUxvZ0lkfQog
ICAgICAqLwogICAgIHN0YXJ0Q2FwdHVyaW5nOiBmdW5jdGlvbigpCiAgICAgewpAQCAtMjg3Myw3
ICsyODczLDcgQEAgSW5qZWN0ZWRDYW52YXNNb2R1bGUucHJvdG90eXBlID0gewogCiAgICAgLyoq
CiAgICAgICogQHBhcmFtIHtmdW5jdGlvbih0aGlzOlJlc291cmNlVHJhY2tpbmdNYW5hZ2VyKX0g
ZnVuYwotICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKiBAcmV0dXJuIHtDYW52YXNBZ2Vu
dC5UcmFjZUxvZ0lkfQogICAgICAqLwogICAgIF9jYWxsU3RhcnRDYXB0dXJpbmdGdW5jdGlvbjog
ZnVuY3Rpb24oZnVuYykKICAgICB7CkBAIC0yODkyLDcgKzI4OTIsNyBAQCBJbmplY3RlZENhbnZh
c01vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBpZAorICAgICAqIEBwYXJhbSB7Q2FudmFzQWdlbnQuVHJhY2VMb2dJZH0gaWQKICAg
ICAgKi8KICAgICBzdG9wQ2FwdHVyaW5nOiBmdW5jdGlvbihpZCkKICAgICB7CkBAIC0yOTAyLDcg
KzI5MDIsNyBAQCBJbmplY3RlZENhbnZhc01vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAog
ICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZAorICAgICAqIEBwYXJhbSB7Q2FudmFz
QWdlbnQuVHJhY2VMb2dJZH0gaWQKICAgICAgKi8KICAgICBkcm9wVHJhY2VMb2c6IGZ1bmN0aW9u
KGlkKQogICAgIHsKQEAgLTI5MTIsOSArMjkxMiw5IEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnBy
b3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGlk
CisgICAgICogQHBhcmFtIHtDYW52YXNBZ2VudC5UcmFjZUxvZ0lkfSBpZAogICAgICAqIEBwYXJh
bSB7bnVtYmVyPX0gc3RhcnRPZmZzZXQKLSAgICAgKiBAcmV0dXJuIHshT2JqZWN0fHN0cmluZ30K
KyAgICAgKiBAcmV0dXJuIHshQ2FudmFzQWdlbnQuVHJhY2VMb2dKU09OfHN0cmluZ30KICAgICAg
Ki8KICAgICB0cmFjZUxvZzogZnVuY3Rpb24oaWQsIHN0YXJ0T2Zmc2V0KQogICAgIHsKQEAgLTI5
MjUsNiArMjkyNSw3IEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdmFyIGFsaXZlID0gdGhpcy5fbWFuYWdlci5jYXB0dXJpbmcoKSAmJiB0aGlzLl9tYW5hZ2Vy
Lmxhc3RUcmFjZUxvZygpID09PSB0cmFjZUxvZzsKICAgICAgICAgdmFyIHJlc3VsdCA9IHsKICAg
ICAgICAgICAgIGlkOiBpZCwKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXkuPENhbnZhc0Fn
ZW50LkNhbGxKU09OPn0gKi8KICAgICAgICAgICAgIGNhbGxzOiBbXSwKICAgICAgICAgICAgIGFs
aXZlOiBhbGl2ZSwKICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiBzdGFydE9mZnNldApAQCAtMjk0
MywxMiArMjk0NCwxMiBAQCBJbmplY3RlZENhbnZhc01vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25OYW1lKCkpIHsKICAgICAg
ICAgICAgICAgICB0cmFjZUxvZ0l0ZW0uZnVuY3Rpb25OYW1lID0gY2FsbC5mdW5jdGlvbk5hbWUo
KTsKLSAgICAgICAgICAgICAgICB0cmFjZUxvZ0l0ZW0uYXJndW1lbnRzID0gY2FsbC5hcmdzKCku
bWFwKHRoaXMuX2NyZWF0ZVJlbW90ZU9iamVjdC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAg
ICB0cmFjZUxvZ0l0ZW0uYXJndW1lbnRzID0gY2FsbC5hcmdzKCkubWFwKHRoaXMuX21ha2VDYWxs
QXJndW1lbnQuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGwucmVzdWx0KCkg
IT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgdHJhY2VMb2dJdGVtLnJlc3VsdCA9
IHRoaXMuX2NyZWF0ZVJlbW90ZU9iamVjdChjYWxsLnJlc3VsdCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgdHJhY2VMb2dJdGVtLnJlc3VsdCA9IHRoaXMuX21ha2VDYWxsQXJndW1lbnQoY2FsbC5y
ZXN1bHQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHRyYWNlTG9n
SXRlbS5wcm9wZXJ0eSA9IGNhbGwuYXJncygpWzBdOwotICAgICAgICAgICAgICAgIHRyYWNlTG9n
SXRlbS52YWx1ZSA9IHRoaXMuX2NyZWF0ZVJlbW90ZU9iamVjdChjYWxsLmFyZ3MoKVsxXSk7Cisg
ICAgICAgICAgICAgICAgdHJhY2VMb2dJdGVtLnZhbHVlID0gdGhpcy5fbWFrZUNhbGxBcmd1bWVu
dChjYWxsLmFyZ3MoKVsxXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuY2Fs
bHMucHVzaCh0cmFjZUxvZ0l0ZW0pOwogICAgICAgICB9CkBAIC0yOTU3LDkgKzI5NTgsOSBAQCBJ
bmplY3RlZENhbnZhc01vZHVsZS5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFy
YW0geyp9IG9iagotICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKiBAcmV0dXJuIHshQ2Fu
dmFzQWdlbnQuQ2FsbEFyZ3VtZW50SlNPTn0KICAgICAgKi8KLSAgICBfY3JlYXRlUmVtb3RlT2Jq
ZWN0OiBmdW5jdGlvbihvYmopCisgICAgX21ha2VDYWxsQXJndW1lbnQ6IGZ1bmN0aW9uKG9iaikK
ICAgICB7CiAgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBSZXBsYXlhYmxlUmVzb3VyY2UpCiAg
ICAgICAgICAgICB2YXIgZGVzY3JpcHRpb24gPSBvYmouZGVzY3JpcHRpb24oKTsKQEAgLTI5Njks
OSArMjk3MCw5IEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAgICB9LAog
CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHRyYWNlTG9nSWQKKyAgICAgKiBAcGFy
YW0ge0NhbnZhc0FnZW50LlRyYWNlTG9nSWR9IHRyYWNlTG9nSWQKICAgICAgKiBAcGFyYW0ge251
bWJlcn0gc3RlcE5vCi0gICAgICogQHJldHVybiB7IU9iamVjdHxzdHJpbmd9CisgICAgICogQHJl
dHVybiB7IUNhbnZhc0FnZW50LlJlc291cmNlU3RhdGVKU09OfHN0cmluZ30KICAgICAgKi8KICAg
ICByZXBsYXlUcmFjZUxvZzogZnVuY3Rpb24odHJhY2VMb2dJZCwgc3RlcE5vKQogICAgIHsKQEAg
LTI5OTAsOCArMjk5MSw4IEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAg
ICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1Jlc291cmNlSWQK
LSAgICAgKiBAcmV0dXJuIHshT2JqZWN0fHN0cmluZ30KKyAgICAgKiBAcGFyYW0ge0NhbnZhc0Fn
ZW50LlJlc291cmNlSWR9IHN0cmluZ1Jlc291cmNlSWQKKyAgICAgKiBAcmV0dXJuIHshQ2FudmFz
QWdlbnQuUmVzb3VyY2VJbmZvSlNPTnxzdHJpbmd9CiAgICAgICovCiAgICAgcmVzb3VyY2VJbmZv
OiBmdW5jdGlvbihzdHJpbmdSZXNvdXJjZUlkKQogICAgIHsKQEAgLTMwMTIsOSArMzAxMyw5IEBA
IEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHRyYWNlTG9nSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30g
c3RyaW5nUmVzb3VyY2VJZAotICAgICAqIEByZXR1cm4geyFPYmplY3R8c3RyaW5nfQorICAgICAq
IEBwYXJhbSB7Q2FudmFzQWdlbnQuVHJhY2VMb2dJZH0gdHJhY2VMb2dJZAorICAgICAqIEBwYXJh
bSB7Q2FudmFzQWdlbnQuUmVzb3VyY2VJZH0gc3RyaW5nUmVzb3VyY2VJZAorICAgICAqIEByZXR1
cm4geyFDYW52YXNBZ2VudC5SZXNvdXJjZVN0YXRlSlNPTnxzdHJpbmd9CiAgICAgICovCiAgICAg
cmVzb3VyY2VTdGF0ZTogZnVuY3Rpb24odHJhY2VMb2dJZCwgc3RyaW5nUmVzb3VyY2VJZCkKICAg
ICB7CkBAIC0zMDQzLDcgKzMwNDQsNyBAQCBJbmplY3RlZENhbnZhc01vZHVsZS5wcm90b3R5cGUg
PSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKiBA
cmV0dXJuIHtDYW52YXNBZ2VudC5UcmFjZUxvZ0lkfQogICAgICAqLwogICAgIF9tYWtlVHJhY2VM
b2dJZDogZnVuY3Rpb24oKQogICAgIHsKQEAgLTMwNTIsNyArMzA1Myw3IEBAIEluamVjdGVkQ2Fu
dmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7bnVtYmVy
fSByZXNvdXJjZUlkCi0gICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqIEByZXR1cm4ge0Nh
bnZhc0FnZW50LlJlc291cmNlSWR9CiAgICAgICovCiAgICAgX21ha2VTdHJpbmdSZXNvdXJjZUlk
OiBmdW5jdGlvbihyZXNvdXJjZUlkKQogICAgIHsKQEAgLTMwNjAsOSArMzA2MSw5IEBAIEluamVj
dGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IHN0cmluZ1Jlc291cmNlSWQKKyAgICAgKiBAcGFyYW0ge0NhbnZhc0Fn
ZW50LlJlc291cmNlSWR9IHN0cmluZ1Jlc291cmNlSWQKICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
ZGVzY3JpcHRpb24KLSAgICAgKiBAcmV0dXJuIHshT2JqZWN0fQorICAgICAqIEByZXR1cm4geyFD
YW52YXNBZ2VudC5SZXNvdXJjZUluZm9KU09OfQogICAgICAqLwogICAgIF9tYWtlUmVzb3VyY2VJ
bmZvOiBmdW5jdGlvbihzdHJpbmdSZXNvdXJjZUlkLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0z
MDczLDEwICszMDc0LDEwIEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAg
ICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1Jlc291cmNlSWQK
LSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHJhY2VMb2dJZAorICAgICAqIEBwYXJhbSB7Q2FudmFz
QWdlbnQuUmVzb3VyY2VJZH0gc3RyaW5nUmVzb3VyY2VJZAorICAgICAqIEBwYXJhbSB7Q2FudmFz
QWdlbnQuVHJhY2VMb2dJZH0gdHJhY2VMb2dJZAogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpbWFn
ZVVSTAotICAgICAqIEByZXR1cm4geyFPYmplY3R9CisgICAgICogQHJldHVybiB7IUNhbnZhc0Fn
ZW50LlJlc291cmNlU3RhdGVKU09OfQogICAgICAqLwogICAgIF9tYWtlUmVzb3VyY2VTdGF0ZTog
ZnVuY3Rpb24oc3RyaW5nUmVzb3VyY2VJZCwgdHJhY2VMb2dJZCwgaW1hZ2VVUkwpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmlu
ZGV4IDEyNmZhNjhhNGQwYzBlM2UyZjQ1MjdjNDZkN2I0MDUxNjNkNDg4N2MuLjQ5NTAxOGFhZDU0
NmU2OWUwZTA3Y2UzOGUwMDY1NDg0MWMwZjllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTExMSw3ICsxMTEsNyBAQCBJbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwTmFt
ZQogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93CiAgICAg
ICogQHBhcmFtIHtib29sZWFufSBnZW5lcmF0ZVByZXZpZXcKLSAgICAgKiBAcmV0dXJuIHtPYmpl
Y3R9CisgICAgICogQHJldHVybiB7IVJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3RKU09OfQogICAg
ICAqLwogICAgIHdyYXBPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCwgZ3JvdXBOYW1lLCBjYW5BY2Nl
c3NJbnNwZWN0ZWRXaW5kb3csIGdlbmVyYXRlUHJldmlldykKICAgICB7CkBAIC0xNjksNyArMTY5
LDggQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7c3RyaW5n
PX0gb2JqZWN0R3JvdXBOYW1lCiAgICAgICogQHBhcmFtIHtib29sZWFuPX0gZm9yY2VWYWx1ZVR5
cGUKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBnZW5lcmF0ZVByZXZpZXcKLSAgICAgKiBAcmV0
dXJuIHtJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3R9CisgICAgICogQHJldHVybiB7IVJ1bnRp
bWVBZ2VudC5SZW1vdGVPYmplY3RKU09OfQorICAgICAqIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30K
ICAgICAgKi8KICAgICBfd3JhcE9iamVjdDogZnVuY3Rpb24ob2JqZWN0LCBvYmplY3RHcm91cE5h
bWUsIGZvcmNlVmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewpAQCAtMjQ4LDcgKzI0
OSw3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gb2JqZWN0SWQKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG93blByb3BlcnRp
ZXMKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48T2JqZWN0Pnxib29sZWFufQorICAgICAqIEByZXR1
cm4ge0FycmF5LjxSdW50aW1lQWdlbnQuUHJvcGVydHlEZXNjcmlwdG9ySlNPTj58Ym9vbGVhbn0K
ICAgICAgKi8KICAgICBnZXRQcm9wZXJ0aWVzOiBmdW5jdGlvbihvYmplY3RJZCwgb3duUHJvcGVy
dGllcykKICAgICB7CkBAIC0zMDUsNyArMzA2LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBl
ID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZ1bmN0aW9uSWQKLSAgICAg
KiBAcmV0dXJuIHtPYmplY3R8c3RyaW5nfQorICAgICAqIEByZXR1cm4geyFEZWJ1Z2dlckFnZW50
LkZ1bmN0aW9uRGV0YWlsc0pTT058c3RyaW5nfQogICAgICAqLwogICAgIGdldEZ1bmN0aW9uRGV0
YWlsczogZnVuY3Rpb24oZnVuY3Rpb25JZCkKICAgICB7CkBAIC05NDAsNyArOTQxLDcgQEAgSW5q
ZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUp
CiBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAg
ICAgICogQHBhcmFtIHtPYmplY3R9IGNhbGxGcmFtZQotICAgICAqIEByZXR1cm4ge0FycmF5LjxP
YmplY3Q+fQorICAgICAqIEByZXR1cm4geyFBcnJheS48RGVidWdnZXJBZ2VudC5TY29wZUpTT04+
fQogICAgICAqLwogICAgIF93cmFwU2NvcGVDaGFpbjogZnVuY3Rpb24oY2FsbEZyYW1lKQogICAg
IHsKQEAgLTk1OCw3ICs5NTksNyBAQCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90
b3R5cGUgPSB7CiAgKiBAcGFyYW0ge251bWJlcn0gc2NvcGVUeXBlQ29kZQogICogQHBhcmFtIHsq
fSBzY29wZU9iamVjdAogICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwSWQKLSAqIEByZXR1cm4ge09i
amVjdH0KKyAqIEByZXR1cm4geyFEZWJ1Z2dlckFnZW50LlNjb3BlSlNPTn0KICAqLwogSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbiA9IGZ1bmN0aW9uKHNjb3Bl
VHlwZUNvZGUsIHNjb3BlT2JqZWN0LCBncm91cElkKSB7CiAgICAgY29uc3QgR0xPQkFMX1NDT1BF
ID0gMDsKQEAgLTk2Nyw2ICs5NjgsNyBAQCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5f
Y3JlYXRlU2NvcGVKc29uID0gZnVuY3Rpb24oc2NvcGVUeXBlQ29kZSwgc2NvcGVPYgogICAgIGNv
bnN0IENMT1NVUkVfU0NPUEUgPSAzOwogICAgIGNvbnN0IENBVENIX1NDT1BFID0gNDsKIAorICAg
IC8qKiBAdHlwZSB7IU9iamVjdC48bnVtYmVyLCBzdHJpbmc+fSAqLwogICAgIHZhciBzY29wZVR5
cGVOYW1lcyA9IHt9OwogICAgIHNjb3BlVHlwZU5hbWVzW0dMT0JBTF9TQ09QRV0gPSAiZ2xvYmFs
IjsKICAgICBzY29wZVR5cGVOYW1lc1tMT0NBTF9TQ09QRV0gPSAibG9jYWwiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDA2ZTI5YjNlOGRl
Y2Y2MTZkOWRiMzFjYWI1NzM0YzhlZTY5ZmJjMzguLjNkZDcyMjk2ZjNlM2YwNmE4YzAyZmZiMzJh
ZmM0OWNkZjY2ODExNmUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21w
aWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1m
cm9udC1lbmQucHkKQEAgLTQyMSw2ICs0MjEsNyBAQCBpZiBub3QgcHJvY2Vzc19yZWN1cnNpdmVs
eToKICAgICBvcy5zeXN0ZW0oImNhdCAgIiArIGluc3BlY3Rvcl9wYXRoICsgIi8iICsgIkluamVj
dGVkU2NyaXB0U291cmNlLmpzIiArICIgPj4gIiArIGluc3BlY3Rvcl9wYXRoICsgIi8iICsgIklu
amVjdGVkU2NyaXB0U291cmNlVG1wLmpzIikKICAgICBjb21tYW5kID0gY29tcGlsZXJfY29tbWFu
ZAogICAgIGNvbW1hbmQgKz0gIiAgICAtLWV4dGVybnMgIiArIGluc3BlY3Rvcl9wYXRoICsgIi8i
ICsgIkluamVjdGVkU2NyaXB0RXh0ZXJucy5qcyIgKyAiIFxcXG4iCisgICAgY29tbWFuZCArPSAi
ICAgIC0tZXh0ZXJucyAiICsgcHJvdG9jb2xfZXh0ZXJuc19wYXRoICsgIiBcXFxuIgogICAgIGNv
bW1hbmQgKz0gIiAgICAtLW1vZHVsZSAiICsganNtb2R1bGVfbmFtZV9wcmVmaXggKyAiaW5qZWN0
ZWRfc2NyaXB0IiArICI6IiArICIxIiArICIgXFxcbiIKICAgICBjb21tYW5kICs9ICIgICAgICAg
IC0tanMgIiArIGluc3BlY3Rvcl9wYXRoICsgIi8iICsgIkluamVjdGVkU2NyaXB0U291cmNlVG1w
LmpzIiArICIgXFxcbiIKICAgICBjb21tYW5kICs9ICJcbiIKQEAgLTQzMiw2ICs0MzMsNyBAQCBp
ZiBub3QgcHJvY2Vzc19yZWN1cnNpdmVseToKICAgICBvcy5zeXN0ZW0oImNhdCAgIiArIGluc3Bl
Y3Rvcl9wYXRoICsgIi8iICsgIkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzIiAr
ICIgPj4gIiArIGluc3BlY3Rvcl9wYXRoICsgIi8iICsgIkluamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlU291cmNlVG1wLmpzIikKICAgICBjb21tYW5kID0gY29tcGlsZXJfY29tbWFuZAogICAgIGNv
bW1hbmQgKz0gIiAgICAtLWV4dGVybnMgIiArIGluc3BlY3Rvcl9wYXRoICsgIi8iICsgIkluamVj
dGVkU2NyaXB0RXh0ZXJucy5qcyIgKyAiIFxcXG4iCisgICAgY29tbWFuZCArPSAiICAgIC0tZXh0
ZXJucyAiICsgcHJvdG9jb2xfZXh0ZXJuc19wYXRoICsgIiBcXFxuIgogICAgIGNvbW1hbmQgKz0g
IiAgICAtLW1vZHVsZSAiICsganNtb2R1bGVfbmFtZV9wcmVmaXggKyAiaW5qZWN0ZWRfc2NyaXB0
IiArICI6IiArICIxIiArICIgXFxcbiIKICAgICBjb21tYW5kICs9ICIgICAgICAgIC0tanMgIiAr
IGluc3BlY3Rvcl9wYXRoICsgIi8iICsgIkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
VG1wLmpzIiArICIgXFxcbiIKICAgICBjb21tYW5kICs9ICJcbiIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9nZW5lcmF0ZV9wcm90b2NvbF9leHRlcm5zLnB5IGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2dlbmVyYXRlX3Byb3RvY29sX2V4dGVybnMucHkKaW5kZXggMDIz
ZmJmZjkyNmI0NzYyY2RlOTVjMTY5MWVkNDYxZWEzMDZkYWRjOC4uYzVjNjk3ZGVkNjhiM2JiOTM3
MWFlYmQ5N2Y4NDhkMzRiMjRjM2FhNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2dlbmVyYXRlX3Byb3RvY29sX2V4dGVybnMucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2dlbmVyYXRlX3Byb3RvY29sX2V4dGVybnMucHkKQEAgLTM4LDYgKzM4LDcgQEAgdHlw
ZV90cmFpdHMgPSB7CiB9CiAKIHJlZl90eXBlcyA9IHt9CityZWZfdHlwZXNfanNvbiA9IHt9CiAK
IAogZGVmIGZ1bGxfcXVhbGlmaWVkX3R5cGVfaWQoZG9tYWluX25hbWUsIHR5cGVfaWQpOgpAQCAt
NDYsMTcgKzQ3LDIwIEBAIGRlZiBmdWxsX3F1YWxpZmllZF90eXBlX2lkKGRvbWFpbl9uYW1lLCB0
eXBlX2lkKToKICAgICByZXR1cm4gdHlwZV9pZAogCiAKLWRlZiBwYXJhbV90eXBlKGRvbWFpbl9u
YW1lLCBwYXJhbSk6CitkZWYgcGFyYW1fdHlwZShkb21haW5fbmFtZSwgcGFyYW0sIGpzb25fdHlw
ZT0wKToKICAgICBpZiAidHlwZSIgaW4gcGFyYW06CiAgICAgICAgIGlmIHBhcmFtWyJ0eXBlIl0g
PT0gImFycmF5IjoKICAgICAgICAgICAgIGl0ZW1zID0gcGFyYW1bIml0ZW1zIl0KLSAgICAgICAg
ICAgIHJldHVybiAiQXJyYXkuPCVzPiIgJSBwYXJhbV90eXBlKGRvbWFpbl9uYW1lLCBpdGVtcykK
KyAgICAgICAgICAgIHJldHVybiAiQXJyYXkuPCVzPiIgJSBwYXJhbV90eXBlKGRvbWFpbl9uYW1l
LCBpdGVtcywganNvbl90eXBlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHR5
cGVfdHJhaXRzW3BhcmFtWyJ0eXBlIl1dCiAgICAgaWYgIiRyZWYiIGluIHBhcmFtOgogICAgICAg
ICB0eXBlX2lkID0gZnVsbF9xdWFsaWZpZWRfdHlwZV9pZChkb21haW5fbmFtZSwgcGFyYW1bIiRy
ZWYiXSkKICAgICAgICAgaWYgdHlwZV9pZCBpbiByZWZfdHlwZXM6Ci0gICAgICAgICAgICByZXR1
cm4gcmVmX3R5cGVzW3R5cGVfaWRdCisgICAgICAgICAgICBpZiBqc29uX3R5cGU6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlZl90eXBlc19qc29uW3R5cGVfaWRdCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHJldHVybiByZWZfdHlwZXNbdHlwZV9pZF0KICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIHByaW50ICJUeXBlIG5vdCBmb3VuZDogIiArIHR5cGVfaWQKICAgICAg
ICAgICAgIHJldHVybiAiISEgVHlwZSBub3QgZm91bmQ6ICIgKyB0eXBlX2lkCkBAIC04NCw2ICs4
OCwxMCBAQCBQcm90b2NvbC5FcnJvcjsKICAgICAgICAgICAgIGZvciB0eXBlIGluIGRvbWFpblsi
dHlwZXMiXToKICAgICAgICAgICAgICAgICB0eXBlX2lkID0gZnVsbF9xdWFsaWZpZWRfdHlwZV9p
ZChkb21haW5fbmFtZSwgdHlwZVsiaWQiXSkKICAgICAgICAgICAgICAgICByZWZfdHlwZXNbdHlw
ZV9pZF0gPSAiJXNBZ2VudC4lcyIgJSAoZG9tYWluX25hbWUsIHR5cGVbImlkIl0pCisgICAgICAg
ICAgICAgICAgaWYgdHlwZVsidHlwZSJdID09ICJvYmplY3QiOgorICAgICAgICAgICAgICAgICAg
ICByZWZfdHlwZXNfanNvblt0eXBlX2lkXSA9ICIlc0pTT04iICUgcmVmX3R5cGVzW3R5cGVfaWRd
CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmVmX3R5cGVzX2pz
b25bdHlwZV9pZF0gPSByZWZfdHlwZXNbdHlwZV9pZF0KIAogICAgIGZvciBkb21haW4gaW4ganNv
bl9hcGk6CiAgICAgICAgIGRvbWFpbl9uYW1lID0gZG9tYWluWyJkb21haW4iXQpAQCAtOTMsMTMg
KzEwMSwxOSBAQCBQcm90b2NvbC5FcnJvcjsKICAgICAgICAgICAgICAgICBpZiB0eXBlWyJ0eXBl
Il0gPT0gIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCJc
bi8qKiBAY29uc3RydWN0b3IgKi9cbiIpCiAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxl
LndyaXRlKCIlc0FnZW50LiVzID0gZnVuY3Rpb24oKVxue1xuIiAlIChkb21haW5fbmFtZSwgdHlw
ZVsiaWQiXSkpCisgICAgICAgICAgICAgICAgICAgIGpzb25fdHlwZWRlZl9hcmdzID0gW10KICAg
ICAgICAgICAgICAgICAgICAgaWYgInByb3BlcnRpZXMiIGluIHR5cGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgcHJvcGVydHkgaW4gdHlwZVsicHJvcGVydGllcyJdOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCJvcHRpb25hbCIgaW4gcHJvcGVydHkpOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWZmaXggPSAifHVuZGVmaW5lZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXRfZmlsZS53cml0ZSgiLyoqIEB0eXBlIHslcyVzfSAqLyB0aGlzLiVzO1xuIiAlIChw
YXJhbV90eXBlKGRvbWFpbl9uYW1lLCBwcm9wZXJ0eSksIHN1ZmZpeCwgcHJvcGVydHlbIm5hbWUi
XSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbl90eXBlZGVmX2FyZ3MuYXBwZW5k
KCIlczooJXMlcykiICUgKHByb3BlcnR5WyJuYW1lIl0sIHBhcmFtX3R5cGUoZG9tYWluX25hbWUs
IHByb3BlcnR5LCAxKSwgc3VmZml4KSkKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUu
d3JpdGUoIn1cbiIpCisgICAgICAgICAgICAgICAgICAgIGlmIChqc29uX3R5cGVkZWZfYXJncyk6
CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgiXG4vKiogQHR5cGVk
ZWYge3slc319ICovXG4lc0FnZW50LiVzSlNPTjtcbiIgJSAoIiwgIi5qb2luKGpzb25fdHlwZWRl
Zl9hcmdzKSwgZG9tYWluX25hbWUsIHR5cGVbImlkIl0pKQorICAgICAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoIlxuLyoqIEB0
eXBlZGVmIHshT2JqZWN0fSAqL1xuJXNBZ2VudC4lc0pTT047XG4iICUgKGRvbWFpbl9uYW1lLCB0
eXBlWyJpZCJdKSkKICAgICAgICAgICAgICAgICBlbGlmIHR5cGVbInR5cGUiXSA9PSAiYXJyYXki
OgogICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSAiIgogICAgICAgICAgICAgICAgICAgICBp
ZiAoIm9wdGlvbmFsIiBpbiBwcm9wZXJ0eSk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183515</attachid>
            <date>2013-01-18 11:24:31 -0800</date>
            <delta_ts>2013-01-18 11:28:27 -0800</delta_ts>
            <desc>Generated protocol externs diff</desc>
            <filename>1.diff</filename>
            <type>text/plain</type>
            <size>29291</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3RtcC9wcm90b2NvbC1leHRlcm5zLmpzIGIvdG1wL3Byb3RvY29sLWV4dGVy
bnMtbmV3LmpzCmluZGV4IDJlYjkwMzIuLjhjMGUyMDMgMTAwNjQ0Ci0tLSBhL3RtcC9wcm90b2Nv
bC1leHRlcm5zLmpzCisrKyBiL3RtcC9wcm90b2NvbC1leHRlcm5zLW5ldy5qcwpAQCAtNTIsNiAr
NTIsOSBAQCBNZW1vcnlBZ2VudC5Ob2RlQ291bnQgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge251
bWJlcn0gKi8gdGhpcy5jb3VudDsKIH0KIAorLyoqIEB0eXBlZGVmIHt7bm9kZU5hbWU6KHN0cmlu
ZyksIGNvdW50OihudW1iZXIpfX0gKi8KK01lbW9yeUFnZW50Lk5vZGVDb3VudEpTT047CisKIC8q
KiBAY29uc3RydWN0b3IgKi8KIE1lbW9yeUFnZW50Lkxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbigp
CiB7CkBAIC01OSw2ICs2Miw5IEBAIE1lbW9yeUFnZW50Lkxpc3RlbmVyQ291bnQgPSBmdW5jdGlv
bigpCiAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5jb3VudDsKIH0KIAorLyoqIEB0eXBlZGVm
IHt7dHlwZTooc3RyaW5nKSwgY291bnQ6KG51bWJlcil9fSAqLworTWVtb3J5QWdlbnQuTGlzdGVu
ZXJDb3VudEpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIE1lbW9yeUFnZW50LlN0cmluZ1N0
YXRpc3RpY3MgPSBmdW5jdGlvbigpCiB7CkBAIC02Nyw2ICs3Myw5IEBAIE1lbW9yeUFnZW50LlN0
cmluZ1N0YXRpc3RpY3MgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5z
aGFyZWQ7CiB9CiAKKy8qKiBAdHlwZWRlZiB7e2RvbToobnVtYmVyKSwganM6KG51bWJlciksIHNo
YXJlZDoobnVtYmVyKX19ICovCitNZW1vcnlBZ2VudC5TdHJpbmdTdGF0aXN0aWNzSlNPTjsKKwog
LyoqIEBjb25zdHJ1Y3RvciAqLwogTWVtb3J5QWdlbnQuRE9NR3JvdXAgPSBmdW5jdGlvbigpCiB7
CkBAIC03Nyw2ICs4Niw5IEBAIE1lbW9yeUFnZW50LkRPTUdyb3VwID0gZnVuY3Rpb24oKQogLyoq
IEB0eXBlIHtBcnJheS48TWVtb3J5QWdlbnQuTGlzdGVuZXJDb3VudD59ICovIHRoaXMubGlzdGVu
ZXJDb3VudDsKIH0KIAorLyoqIEB0eXBlZGVmIHt7c2l6ZToobnVtYmVyKSwgdGl0bGU6KHN0cmlu
ZyksIGRvY3VtZW50VVJJOihzdHJpbmd8dW5kZWZpbmVkKSwgbm9kZUNvdW50OihBcnJheS48TWVt
b3J5QWdlbnQuTm9kZUNvdW50SlNPTj4pLCBsaXN0ZW5lckNvdW50OihBcnJheS48TWVtb3J5QWdl
bnQuTGlzdGVuZXJDb3VudEpTT04+KX19ICovCitNZW1vcnlBZ2VudC5ET01Hcm91cEpTT047CisK
IC8qKiBAY29uc3RydWN0b3IgKi8KIE1lbW9yeUFnZW50Lk1lbW9yeUJsb2NrID0gZnVuY3Rpb24o
KQogewpAQCAtODUsNiArOTcsOSBAQCBNZW1vcnlBZ2VudC5NZW1vcnlCbG9jayA9IGZ1bmN0aW9u
KCkKIC8qKiBAdHlwZSB7QXJyYXkuPE1lbW9yeUFnZW50Lk1lbW9yeUJsb2NrPnx1bmRlZmluZWR9
ICovIHRoaXMuY2hpbGRyZW47CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3NpemU6KG51bWJlcnx1bmRl
ZmluZWQpLCBuYW1lOihzdHJpbmcpLCBjaGlsZHJlbjooQXJyYXkuPE1lbW9yeUFnZW50Lk1lbW9y
eUJsb2NrSlNPTj58dW5kZWZpbmVkKX19ICovCitNZW1vcnlBZ2VudC5NZW1vcnlCbG9ja0pTT047
CisKIC8qKgogICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IsIEFycmF5LjxNZW1v
cnlBZ2VudC5ET01Hcm91cD4sIE1lbW9yeUFnZW50LlN0cmluZ1N0YXRpc3RpY3MpOnZvaWQ9fSBv
cHRfY2FsbGJhY2sKICAqLwpAQCAtMTI1LDYgKzE0MCw5IEBAIFBhZ2VBZ2VudC5GcmFtZSA9IGZ1
bmN0aW9uKCkKIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLm1pbWVUeXBlOwogfQogCisvKiog
QHR5cGVkZWYge3tpZDooc3RyaW5nKSwgcGFyZW50SWQ6KHN0cmluZ3x1bmRlZmluZWQpLCBsb2Fk
ZXJJZDooTmV0d29ya0FnZW50LkxvYWRlcklkKSwgbmFtZTooc3RyaW5nfHVuZGVmaW5lZCksIHVy
bDooc3RyaW5nKSwgc2VjdXJpdHlPcmlnaW46KHN0cmluZ3x1bmRlZmluZWQpLCBtaW1lVHlwZToo
c3RyaW5nKX19ICovCitQYWdlQWdlbnQuRnJhbWVKU09OOworCiAvKiogQGNvbnN0cnVjdG9yICov
CiBQYWdlQWdlbnQuRnJhbWVSZXNvdXJjZVRyZWUgPSBmdW5jdGlvbigpCiB7CkBAIC0xMzMsNiAr
MTUxLDkgQEAgUGFnZUFnZW50LkZyYW1lUmVzb3VyY2VUcmVlID0gZnVuY3Rpb24oKQogLyoqIEB0
eXBlIHtBcnJheS48T2JqZWN0Pn0gKi8gdGhpcy5yZXNvdXJjZXM7CiB9CiAKKy8qKiBAdHlwZWRl
ZiB7e2ZyYW1lOihQYWdlQWdlbnQuRnJhbWVKU09OKSwgY2hpbGRGcmFtZXM6KEFycmF5LjxQYWdl
QWdlbnQuRnJhbWVSZXNvdXJjZVRyZWVKU09OPnx1bmRlZmluZWQpLCByZXNvdXJjZXM6KEFycmF5
LjxPYmplY3Q+KX19ICovCitQYWdlQWdlbnQuRnJhbWVSZXNvdXJjZVRyZWVKU09OOworCiAvKiog
QGNvbnN0cnVjdG9yICovCiBQYWdlQWdlbnQuU2VhcmNoTWF0Y2ggPSBmdW5jdGlvbigpCiB7CkBA
IC0xNDAsNiArMTYxLDkgQEAgUGFnZUFnZW50LlNlYXJjaE1hdGNoID0gZnVuY3Rpb24oKQogLyoq
IEB0eXBlIHtzdHJpbmd9ICovIHRoaXMubGluZUNvbnRlbnQ7CiB9CiAKKy8qKiBAdHlwZWRlZiB7
e2xpbmVOdW1iZXI6KG51bWJlciksIGxpbmVDb250ZW50OihzdHJpbmcpfX0gKi8KK1BhZ2VBZ2Vu
dC5TZWFyY2hNYXRjaEpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIFBhZ2VBZ2VudC5TZWFy
Y2hSZXN1bHQgPSBmdW5jdGlvbigpCiB7CkBAIC0xNDgsNiArMTcyLDkgQEAgUGFnZUFnZW50LlNl
YXJjaFJlc3VsdCA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm1hdGNo
ZXNDb3VudDsKIH0KIAorLyoqIEB0eXBlZGVmIHt7dXJsOihzdHJpbmcpLCBmcmFtZUlkOihOZXR3
b3JrQWdlbnQuRnJhbWVJZCksIG1hdGNoZXNDb3VudDoobnVtYmVyKX19ICovCitQYWdlQWdlbnQu
U2VhcmNoUmVzdWx0SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogUGFnZUFnZW50LkNvb2tp
ZSA9IGZ1bmN0aW9uKCkKIHsKQEAgLTE2Miw2ICsxODksOSBAQCBQYWdlQWdlbnQuQ29va2llID0g
ZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLnNlc3Npb247CiB9CiAKKy8q
KiBAdHlwZWRlZiB7e25hbWU6KHN0cmluZyksIHZhbHVlOihzdHJpbmcpLCBkb21haW46KHN0cmlu
ZyksIHBhdGg6KHN0cmluZyksIGV4cGlyZXM6KG51bWJlciksIHNpemU6KG51bWJlciksIGh0dHBP
bmx5Oihib29sZWFuKSwgc2VjdXJlOihib29sZWFuKSwgc2Vzc2lvbjooYm9vbGVhbil9fSAqLwor
UGFnZUFnZW50LkNvb2tpZUpTT047CisKIC8qKiBAdHlwZWRlZiB7c3RyaW5nfSAqLwogUGFnZUFn
ZW50LlNjcmlwdElkZW50aWZpZXI7CiAKQEAgLTQ1OSw2ICs0ODksOSBAQCBSdW50aW1lQWdlbnQu
UmVtb3RlT2JqZWN0ID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtSdW50aW1lQWdlbnQuT2JqZWN0
UHJldmlld3x1bmRlZmluZWR9ICovIHRoaXMucHJldmlldzsKIH0KIAorLyoqIEB0eXBlZGVmIHt7
dHlwZTooc3RyaW5nKSwgc3VidHlwZTooc3RyaW5nfHVuZGVmaW5lZCksIGNsYXNzTmFtZTooc3Ry
aW5nfHVuZGVmaW5lZCksIHZhbHVlOigqfHVuZGVmaW5lZCksIGRlc2NyaXB0aW9uOihzdHJpbmd8
dW5kZWZpbmVkKSwgb2JqZWN0SWQ6KFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3RJZHx1bmRlZmlu
ZWQpLCBwcmV2aWV3OihSdW50aW1lQWdlbnQuT2JqZWN0UHJldmlld0pTT058dW5kZWZpbmVkKX19
ICovCitSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAq
LwogUnVudGltZUFnZW50Lk9iamVjdFByZXZpZXcgPSBmdW5jdGlvbigpCiB7CkBAIC00NjcsNiAr
NTAwLDkgQEAgUnVudGltZUFnZW50Lk9iamVjdFByZXZpZXcgPSBmdW5jdGlvbigpCiAvKiogQHR5
cGUge0FycmF5LjxSdW50aW1lQWdlbnQuUHJvcGVydHlQcmV2aWV3Pn0gKi8gdGhpcy5wcm9wZXJ0
aWVzOwogfQogCisvKiogQHR5cGVkZWYge3tsb3NzbGVzczooYm9vbGVhbiksIG92ZXJmbG93Oihi
b29sZWFuKSwgcHJvcGVydGllczooQXJyYXkuPFJ1bnRpbWVBZ2VudC5Qcm9wZXJ0eVByZXZpZXdK
U09OPil9fSAqLworUnVudGltZUFnZW50Lk9iamVjdFByZXZpZXdKU09OOworCiAvKiogQGNvbnN0
cnVjdG9yICovCiBSdW50aW1lQWdlbnQuUHJvcGVydHlQcmV2aWV3ID0gZnVuY3Rpb24oKQogewpA
QCAtNDc2LDYgKzUxMiw5IEBAIFJ1bnRpbWVBZ2VudC5Qcm9wZXJ0eVByZXZpZXcgPSBmdW5jdGlv
bigpCiAvKiogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9ICovIHRoaXMuc3VidHlwZTsKIH0KIAor
LyoqIEB0eXBlZGVmIHt7bmFtZTooc3RyaW5nKSwgdHlwZTooc3RyaW5nKSwgdmFsdWU6KHN0cmlu
Z3x1bmRlZmluZWQpLCBzdWJ0eXBlOihzdHJpbmd8dW5kZWZpbmVkKX19ICovCitSdW50aW1lQWdl
bnQuUHJvcGVydHlQcmV2aWV3SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogUnVudGltZUFn
ZW50LlByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uKCkKIHsKQEAgLTQ5MCw2ICs1MjksOSBA
QCBSdW50aW1lQWdlbnQuUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24oKQogLyoqIEB0eXBl
IHtib29sZWFufHVuZGVmaW5lZH0gKi8gdGhpcy5pc093bjsKIH0KIAorLyoqIEB0eXBlZGVmIHt7
bmFtZTooc3RyaW5nKSwgdmFsdWU6KFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3RKU09OfHVuZGVm
aW5lZCksIHdyaXRhYmxlOihib29sZWFufHVuZGVmaW5lZCksIGdldDooUnVudGltZUFnZW50LlJl
bW90ZU9iamVjdEpTT058dW5kZWZpbmVkKSwgc2V0OihSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0
SlNPTnx1bmRlZmluZWQpLCBjb25maWd1cmFibGU6KGJvb2xlYW4pLCBlbnVtZXJhYmxlOihib29s
ZWFuKSwgd2FzVGhyb3duOihib29sZWFufHVuZGVmaW5lZCksIGlzT3duOihib29sZWFufHVuZGVm
aW5lZCl9fSAqLworUnVudGltZUFnZW50LlByb3BlcnR5RGVzY3JpcHRvckpTT047CisKIC8qKiBA
Y29uc3RydWN0b3IgKi8KIFJ1bnRpbWVBZ2VudC5JbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvciA9
IGZ1bmN0aW9uKCkKIHsKQEAgLTQ5Nyw2ICs1MzksOSBAQCBSdW50aW1lQWdlbnQuSW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge1J1bnRpbWVBZ2VudC5S
ZW1vdGVPYmplY3R8dW5kZWZpbmVkfSAqLyB0aGlzLnZhbHVlOwogfQogCisvKiogQHR5cGVkZWYg
e3tuYW1lOihzdHJpbmcpLCB2YWx1ZTooUnVudGltZUFnZW50LlJlbW90ZU9iamVjdEpTT058dW5k
ZWZpbmVkKX19ICovCitSdW50aW1lQWdlbnQuSW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JKU09O
OworCiAvKiogQGNvbnN0cnVjdG9yICovCiBSdW50aW1lQWdlbnQuQ2FsbEFyZ3VtZW50ID0gZnVu
Y3Rpb24oKQogewpAQCAtNTA0LDYgKzU0OSw5IEBAIFJ1bnRpbWVBZ2VudC5DYWxsQXJndW1lbnQg
PSBmdW5jdGlvbigpCiAvKiogQHR5cGUge1J1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3RJZHx1bmRl
ZmluZWR9ICovIHRoaXMub2JqZWN0SWQ7CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3ZhbHVlOigqfHVu
ZGVmaW5lZCksIG9iamVjdElkOihSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0SWR8dW5kZWZpbmVk
KX19ICovCitSdW50aW1lQWdlbnQuQ2FsbEFyZ3VtZW50SlNPTjsKKwogLyoqIEB0eXBlZGVmIHtu
dW1iZXJ9ICovCiBSdW50aW1lQWdlbnQuRXhlY3V0aW9uQ29udGV4dElkOwogCkBAIC01MTYsNiAr
NTY0LDkgQEAgUnVudGltZUFnZW50LkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbiA9IGZ1bmN0
aW9uKCkKIC8qKiBAdHlwZSB7TmV0d29ya0FnZW50LkZyYW1lSWR9ICovIHRoaXMuZnJhbWVJZDsK
IH0KIAorLyoqIEB0eXBlZGVmIHt7aWQ6KFJ1bnRpbWVBZ2VudC5FeGVjdXRpb25Db250ZXh0SWQp
LCBpc1BhZ2VDb250ZXh0Oihib29sZWFuKSwgbmFtZTooc3RyaW5nKSwgZnJhbWVJZDooTmV0d29y
a0FnZW50LkZyYW1lSWQpfX0gKi8KK1J1bnRpbWVBZ2VudC5FeGVjdXRpb25Db250ZXh0RGVzY3Jp
cHRpb25KU09OOworCiAvKioKICAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uCiAgKiBAcGFy
YW0ge3N0cmluZz19IG9wdF9vYmplY3RHcm91cApAQCAtNjE4LDYgKzY2OSw5IEBAIENvbnNvbGVB
Z2VudC5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7TmV0d29ya0FnZW50
LlJlcXVlc3RJZHx1bmRlZmluZWR9ICovIHRoaXMubmV0d29ya1JlcXVlc3RJZDsKIH0KIAorLyoq
IEB0eXBlZGVmIHt7c291cmNlOihzdHJpbmcpLCBsZXZlbDooc3RyaW5nKSwgdGV4dDooc3RyaW5n
KSwgdHlwZTooc3RyaW5nfHVuZGVmaW5lZCksIHVybDooc3RyaW5nfHVuZGVmaW5lZCksIGxpbmU6
KG51bWJlcnx1bmRlZmluZWQpLCByZXBlYXRDb3VudDoobnVtYmVyfHVuZGVmaW5lZCksIHBhcmFt
ZXRlcnM6KEFycmF5LjxSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0SlNPTj58dW5kZWZpbmVkKSwg
c3RhY2tUcmFjZTooQ29uc29sZUFnZW50LlN0YWNrVHJhY2V8dW5kZWZpbmVkKSwgbmV0d29ya1Jl
cXVlc3RJZDooTmV0d29ya0FnZW50LlJlcXVlc3RJZHx1bmRlZmluZWQpfX0gKi8KK0NvbnNvbGVB
Z2VudC5Db25zb2xlTWVzc2FnZUpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIENvbnNvbGVB
Z2VudC5DYWxsRnJhbWUgPSBmdW5jdGlvbigpCiB7CkBAIC02MjcsNiArNjgxLDkgQEAgQ29uc29s
ZUFnZW50LkNhbGxGcmFtZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlz
LmNvbHVtbk51bWJlcjsKIH0KIAorLyoqIEB0eXBlZGVmIHt7ZnVuY3Rpb25OYW1lOihzdHJpbmcp
LCB1cmw6KHN0cmluZyksIGxpbmVOdW1iZXI6KG51bWJlciksIGNvbHVtbk51bWJlcjoobnVtYmVy
KX19ICovCitDb25zb2xlQWdlbnQuQ2FsbEZyYW1lSlNPTjsKKwogLyoqIEB0eXBlZGVmIHtBcnJh
eS48Q29uc29sZUFnZW50LkNhbGxGcmFtZT59ICovCiBDb25zb2xlQWdlbnQuU3RhY2tUcmFjZTsK
IApAQCAtNzExLDYgKzc2OCw5IEBAIE5ldHdvcmtBZ2VudC5IZWFkZXJzID0gZnVuY3Rpb24oKQog
ewogfQogCisvKiogQHR5cGVkZWYgeyFPYmplY3R9ICovCitOZXR3b3JrQWdlbnQuSGVhZGVyc0pT
T047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIE5ldHdvcmtBZ2VudC5SZXNvdXJjZVRpbWluZyA9
IGZ1bmN0aW9uKCkKIHsKQEAgLTcyOCw2ICs3ODgsOSBAQCBOZXR3b3JrQWdlbnQuUmVzb3VyY2VU
aW1pbmcgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5yZWNlaXZlSGVh
ZGVyc0VuZDsKIH0KIAorLyoqIEB0eXBlZGVmIHt7cmVxdWVzdFRpbWU6KG51bWJlciksIHByb3h5
U3RhcnQ6KG51bWJlciksIHByb3h5RW5kOihudW1iZXIpLCBkbnNTdGFydDoobnVtYmVyKSwgZG5z
RW5kOihudW1iZXIpLCBjb25uZWN0U3RhcnQ6KG51bWJlciksIGNvbm5lY3RFbmQ6KG51bWJlciks
IHNzbFN0YXJ0OihudW1iZXIpLCBzc2xFbmQ6KG51bWJlciksIHNlbmRTdGFydDoobnVtYmVyKSwg
c2VuZEVuZDoobnVtYmVyKSwgcmVjZWl2ZUhlYWRlcnNFbmQ6KG51bWJlcil9fSAqLworTmV0d29y
a0FnZW50LlJlc291cmNlVGltaW5nSlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogTmV0d29y
a0FnZW50LlJlcXVlc3QgPSBmdW5jdGlvbigpCiB7CkBAIC03MzcsNiArODAwLDkgQEAgTmV0d29y
a0FnZW50LlJlcXVlc3QgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9
ICovIHRoaXMucG9zdERhdGE7CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3VybDooc3RyaW5nKSwgbWV0
aG9kOihzdHJpbmcpLCBoZWFkZXJzOihOZXR3b3JrQWdlbnQuSGVhZGVyc0pTT04pLCBwb3N0RGF0
YTooc3RyaW5nfHVuZGVmaW5lZCl9fSAqLworTmV0d29ya0FnZW50LlJlcXVlc3RKU09OOworCiAv
KiogQGNvbnN0cnVjdG9yICovCiBOZXR3b3JrQWdlbnQuUmVzcG9uc2UgPSBmdW5jdGlvbigpCiB7
CkBAIC03NTQsMTIgKzgyMCwxOCBAQCBOZXR3b3JrQWdlbnQuUmVzcG9uc2UgPSBmdW5jdGlvbigp
CiAvKiogQHR5cGUge05ldHdvcmtBZ2VudC5SZXNvdXJjZVRpbWluZ3x1bmRlZmluZWR9ICovIHRo
aXMudGltaW5nOwogfQogCisvKiogQHR5cGVkZWYge3t1cmw6KHN0cmluZyksIHN0YXR1czoobnVt
YmVyKSwgc3RhdHVzVGV4dDooc3RyaW5nKSwgaGVhZGVyczooTmV0d29ya0FnZW50LkhlYWRlcnNK
U09OKSwgaGVhZGVyc1RleHQ6KHN0cmluZ3x1bmRlZmluZWQpLCBtaW1lVHlwZTooc3RyaW5nKSwg
cmVxdWVzdEhlYWRlcnM6KE5ldHdvcmtBZ2VudC5IZWFkZXJzSlNPTnx1bmRlZmluZWQpLCByZXF1
ZXN0SGVhZGVyc1RleHQ6KHN0cmluZ3x1bmRlZmluZWQpLCBjb25uZWN0aW9uUmV1c2VkOihib29s
ZWFuKSwgY29ubmVjdGlvbklkOihudW1iZXIpLCBmcm9tRGlza0NhY2hlOihib29sZWFufHVuZGVm
aW5lZCksIHRpbWluZzooTmV0d29ya0FnZW50LlJlc291cmNlVGltaW5nSlNPTnx1bmRlZmluZWQp
fX0gKi8KK05ldHdvcmtBZ2VudC5SZXNwb25zZUpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8K
IE5ldHdvcmtBZ2VudC5XZWJTb2NrZXRSZXF1ZXN0ID0gZnVuY3Rpb24oKQogewogLyoqIEB0eXBl
IHtOZXR3b3JrQWdlbnQuSGVhZGVyc30gKi8gdGhpcy5oZWFkZXJzOwogfQogCisvKiogQHR5cGVk
ZWYge3toZWFkZXJzOihOZXR3b3JrQWdlbnQuSGVhZGVyc0pTT04pfX0gKi8KK05ldHdvcmtBZ2Vu
dC5XZWJTb2NrZXRSZXF1ZXN0SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogTmV0d29ya0Fn
ZW50LldlYlNvY2tldFJlc3BvbnNlID0gZnVuY3Rpb24oKQogewpAQCAtNzY4LDYgKzg0MCw5IEBA
IE5ldHdvcmtBZ2VudC5XZWJTb2NrZXRSZXNwb25zZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7
TmV0d29ya0FnZW50LkhlYWRlcnN9ICovIHRoaXMuaGVhZGVyczsKIH0KIAorLyoqIEB0eXBlZGVm
IHt7c3RhdHVzOihudW1iZXIpLCBzdGF0dXNUZXh0OihzdHJpbmcpLCBoZWFkZXJzOihOZXR3b3Jr
QWdlbnQuSGVhZGVyc0pTT04pfX0gKi8KK05ldHdvcmtBZ2VudC5XZWJTb2NrZXRSZXNwb25zZUpT
T047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIE5ldHdvcmtBZ2VudC5XZWJTb2NrZXRGcmFtZSA9
IGZ1bmN0aW9uKCkKIHsKQEAgLTc3Niw2ICs4NTEsOSBAQCBOZXR3b3JrQWdlbnQuV2ViU29ja2V0
RnJhbWUgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5wYXlsb2FkRGF0
YTsKIH0KIAorLyoqIEB0eXBlZGVmIHt7b3Bjb2RlOihudW1iZXIpLCBtYXNrOihib29sZWFuKSwg
cGF5bG9hZERhdGE6KHN0cmluZyl9fSAqLworTmV0d29ya0FnZW50LldlYlNvY2tldEZyYW1lSlNP
TjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogTmV0d29ya0FnZW50LkNhY2hlZFJlc291cmNlID0g
ZnVuY3Rpb24oKQogewpAQCAtNzg1LDYgKzg2Myw5IEBAIE5ldHdvcmtBZ2VudC5DYWNoZWRSZXNv
dXJjZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmJvZHlTaXplOwog
fQogCisvKiogQHR5cGVkZWYge3t1cmw6KHN0cmluZyksIHR5cGU6KFBhZ2VBZ2VudC5SZXNvdXJj
ZVR5cGUpLCByZXNwb25zZTooTmV0d29ya0FnZW50LlJlc3BvbnNlSlNPTnx1bmRlZmluZWQpLCBi
b2R5U2l6ZToobnVtYmVyKX19ICovCitOZXR3b3JrQWdlbnQuQ2FjaGVkUmVzb3VyY2VKU09OOwor
CiAvKiogQGNvbnN0cnVjdG9yICovCiBOZXR3b3JrQWdlbnQuSW5pdGlhdG9yID0gZnVuY3Rpb24o
KQogewpAQCAtNzk0LDYgKzg3NSw5IEBAIE5ldHdvcmtBZ2VudC5Jbml0aWF0b3IgPSBmdW5jdGlv
bigpCiAvKiogQHR5cGUge251bWJlcnx1bmRlZmluZWR9ICovIHRoaXMubGluZU51bWJlcjsKIH0K
IAorLyoqIEB0eXBlZGVmIHt7dHlwZTooc3RyaW5nKSwgc3RhY2tUcmFjZTooQ29uc29sZUFnZW50
LlN0YWNrVHJhY2V8dW5kZWZpbmVkKSwgdXJsOihzdHJpbmd8dW5kZWZpbmVkKSwgbGluZU51bWJl
cjoobnVtYmVyfHVuZGVmaW5lZCl9fSAqLworTmV0d29ya0FnZW50LkluaXRpYXRvckpTT047CisK
IC8qKgogICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IpOnZvaWQ9fSBvcHRfY2Fs
bGJhY2sKICAqLwpAQCAtOTkxLDYgKzEwNzUsOSBAQCBEYXRhYmFzZUFnZW50LkRhdGFiYXNlID0g
ZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtzdHJpbmd9ICovIHRoaXMudmVyc2lvbjsKIH0KIAorLyoq
IEB0eXBlZGVmIHt7aWQ6KERhdGFiYXNlQWdlbnQuRGF0YWJhc2VJZCksIGRvbWFpbjooc3RyaW5n
KSwgbmFtZTooc3RyaW5nKSwgdmVyc2lvbjooc3RyaW5nKX19ICovCitEYXRhYmFzZUFnZW50LkRh
dGFiYXNlSlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogRGF0YWJhc2VBZ2VudC5FcnJvciA9
IGZ1bmN0aW9uKCkKIHsKQEAgLTk5OCw2ICsxMDg1LDkgQEAgRGF0YWJhc2VBZ2VudC5FcnJvciA9
IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmNvZGU7CiB9CiAKKy8qKiBA
dHlwZWRlZiB7e21lc3NhZ2U6KHN0cmluZyksIGNvZGU6KG51bWJlcil9fSAqLworRGF0YWJhc2VB
Z2VudC5FcnJvckpTT047CisKIC8qKgogICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJy
b3IpOnZvaWQ9fSBvcHRfY2FsbGJhY2sKICAqLwpAQCAtMTA1MCw2ICsxMTQwLDkgQEAgSW5kZXhl
ZERCQWdlbnQuU2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcyA9IGZ1bmN0aW9uKCkKIC8q
KiBAdHlwZSB7QXJyYXkuPHN0cmluZz59ICovIHRoaXMuZGF0YWJhc2VOYW1lczsKIH0KIAorLyoq
IEB0eXBlZGVmIHt7c2VjdXJpdHlPcmlnaW46KHN0cmluZyksIGRhdGFiYXNlTmFtZXM6KEFycmF5
LjxzdHJpbmc+KX19ICovCitJbmRleGVkREJBZ2VudC5TZWN1cml0eU9yaWdpbldpdGhEYXRhYmFz
ZU5hbWVzSlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogSW5kZXhlZERCQWdlbnQuRGF0YWJh
c2VXaXRoT2JqZWN0U3RvcmVzID0gZnVuY3Rpb24oKQogewpAQCAtMTA1OSw2ICsxMTUyLDkgQEAg
SW5kZXhlZERCQWdlbnQuRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzID0gZnVuY3Rpb24oKQogLyoq
IEB0eXBlIHtBcnJheS48SW5kZXhlZERCQWdlbnQuT2JqZWN0U3RvcmU+fSAqLyB0aGlzLm9iamVj
dFN0b3JlczsKIH0KIAorLyoqIEB0eXBlZGVmIHt7bmFtZTooc3RyaW5nKSwgdmVyc2lvbjooc3Ry
aW5nKSwgaW50VmVyc2lvbjoobnVtYmVyKSwgb2JqZWN0U3RvcmVzOihBcnJheS48SW5kZXhlZERC
QWdlbnQuT2JqZWN0U3RvcmVKU09OPil9fSAqLworSW5kZXhlZERCQWdlbnQuRGF0YWJhc2VXaXRo
T2JqZWN0U3RvcmVzSlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogSW5kZXhlZERCQWdlbnQu
T2JqZWN0U3RvcmUgPSBmdW5jdGlvbigpCiB7CkBAIC0xMDY4LDYgKzExNjQsOSBAQCBJbmRleGVk
REJBZ2VudC5PYmplY3RTdG9yZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7QXJyYXkuPEluZGV4
ZWREQkFnZW50Lk9iamVjdFN0b3JlSW5kZXg+fSAqLyB0aGlzLmluZGV4ZXM7CiB9CiAKKy8qKiBA
dHlwZWRlZiB7e25hbWU6KHN0cmluZyksIGtleVBhdGg6KEluZGV4ZWREQkFnZW50LktleVBhdGhK
U09OKSwgYXV0b0luY3JlbWVudDooYm9vbGVhbiksIGluZGV4ZXM6KEFycmF5LjxJbmRleGVkREJB
Z2VudC5PYmplY3RTdG9yZUluZGV4SlNPTj4pfX0gKi8KK0luZGV4ZWREQkFnZW50Lk9iamVjdFN0
b3JlSlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogSW5kZXhlZERCQWdlbnQuT2JqZWN0U3Rv
cmVJbmRleCA9IGZ1bmN0aW9uKCkKIHsKQEAgLTEwNzcsNiArMTE3Niw5IEBAIEluZGV4ZWREQkFn
ZW50Lk9iamVjdFN0b3JlSW5kZXggPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge2Jvb2xlYW59ICov
IHRoaXMubXVsdGlFbnRyeTsKIH0KIAorLyoqIEB0eXBlZGVmIHt7bmFtZTooc3RyaW5nKSwga2V5
UGF0aDooSW5kZXhlZERCQWdlbnQuS2V5UGF0aEpTT04pLCB1bmlxdWU6KGJvb2xlYW4pLCBtdWx0
aUVudHJ5Oihib29sZWFuKX19ICovCitJbmRleGVkREJBZ2VudC5PYmplY3RTdG9yZUluZGV4SlNP
TjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogSW5kZXhlZERCQWdlbnQuS2V5ID0gZnVuY3Rpb24o
KQogewpAQCAtMTA4Nyw2ICsxMTg5LDkgQEAgSW5kZXhlZERCQWdlbnQuS2V5ID0gZnVuY3Rpb24o
KQogLyoqIEB0eXBlIHtBcnJheS48SW5kZXhlZERCQWdlbnQuS2V5Pnx1bmRlZmluZWR9ICovIHRo
aXMuYXJyYXk7CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3R5cGU6KHN0cmluZyksIG51bWJlcjoobnVt
YmVyfHVuZGVmaW5lZCksIHN0cmluZzooc3RyaW5nfHVuZGVmaW5lZCksIGRhdGU6KG51bWJlcnx1
bmRlZmluZWQpLCBhcnJheTooQXJyYXkuPEluZGV4ZWREQkFnZW50LktleUpTT04+fHVuZGVmaW5l
ZCl9fSAqLworSW5kZXhlZERCQWdlbnQuS2V5SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwog
SW5kZXhlZERCQWdlbnQuS2V5UmFuZ2UgPSBmdW5jdGlvbigpCiB7CkBAIC0xMDk2LDYgKzEyMDEs
OSBAQCBJbmRleGVkREJBZ2VudC5LZXlSYW5nZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7Ym9v
bGVhbn0gKi8gdGhpcy51cHBlck9wZW47CiB9CiAKKy8qKiBAdHlwZWRlZiB7e2xvd2VyOihJbmRl
eGVkREJBZ2VudC5LZXlKU09OfHVuZGVmaW5lZCksIHVwcGVyOihJbmRleGVkREJBZ2VudC5LZXlK
U09OfHVuZGVmaW5lZCksIGxvd2VyT3BlbjooYm9vbGVhbiksIHVwcGVyT3BlbjooYm9vbGVhbil9
fSAqLworSW5kZXhlZERCQWdlbnQuS2V5UmFuZ2VKU09OOworCiAvKiogQGNvbnN0cnVjdG9yICov
CiBJbmRleGVkREJBZ2VudC5EYXRhRW50cnkgPSBmdW5jdGlvbigpCiB7CkBAIC0xMTA0LDYgKzEy
MTIsOSBAQCBJbmRleGVkREJBZ2VudC5EYXRhRW50cnkgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUg
e1J1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9ICovIHRoaXMudmFsdWU7CiB9CiAKKy8qKiBAdHlw
ZWRlZiB7e2tleTooUnVudGltZUFnZW50LlJlbW90ZU9iamVjdEpTT04pLCBwcmltYXJ5S2V5OihS
dW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0SlNPTiksIHZhbHVlOihSdW50aW1lQWdlbnQuUmVtb3Rl
T2JqZWN0SlNPTil9fSAqLworSW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5SlNPTjsKKwogLyoqIEBj
b25zdHJ1Y3RvciAqLwogSW5kZXhlZERCQWdlbnQuS2V5UGF0aCA9IGZ1bmN0aW9uKCkKIHsKQEAg
LTExMTIsNiArMTIyMyw5IEBAIEluZGV4ZWREQkFnZW50LktleVBhdGggPSBmdW5jdGlvbigpCiAv
KiogQHR5cGUge0FycmF5LjxzdHJpbmc+fHVuZGVmaW5lZH0gKi8gdGhpcy5hcnJheTsKIH0KIAor
LyoqIEB0eXBlZGVmIHt7dHlwZTooc3RyaW5nKSwgc3RyaW5nOihzdHJpbmd8dW5kZWZpbmVkKSwg
YXJyYXk6KEFycmF5LjxzdHJpbmc+fHVuZGVmaW5lZCl9fSAqLworSW5kZXhlZERCQWdlbnQuS2V5
UGF0aEpTT047CisKIC8qKgogICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IpOnZv
aWQ9fSBvcHRfY2FsbGJhY2sKICAqLwpAQCAtMTE3OCw2ICsxMjkyLDkgQEAgRE9NU3RvcmFnZUFn
ZW50LkVudHJ5ID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtET01TdG9yYWdlQWdlbnQuU3RvcmFn
ZUlkfSAqLyB0aGlzLmlkOwogfQogCisvKiogQHR5cGVkZWYge3tvcmlnaW46KHN0cmluZyksIGlz
TG9jYWxTdG9yYWdlOihib29sZWFuKSwgaWQ6KERPTVN0b3JhZ2VBZ2VudC5TdG9yYWdlSWQpfX0g
Ki8KK0RPTVN0b3JhZ2VBZ2VudC5FbnRyeUpTT047CisKIC8qKiBAdHlwZWRlZiB7QXJyYXkuPHN0
cmluZz59ICovCiBET01TdG9yYWdlQWdlbnQuSXRlbTsKIApAQCAtMTI0OCw2ICsxMzY1LDkgQEAg
QXBwbGljYXRpb25DYWNoZUFnZW50LkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IGZ1bmN0aW9u
KCkKIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLnR5cGU7CiB9CiAKKy8qKiBAdHlwZWRlZiB7
e3VybDooc3RyaW5nKSwgc2l6ZToobnVtYmVyKSwgdHlwZTooc3RyaW5nKX19ICovCitBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuQXBwbGljYXRpb25DYWNoZVJlc291cmNlSlNPTjsKKwogLyoqIEBjb25z
dHJ1Y3RvciAqLwogQXBwbGljYXRpb25DYWNoZUFnZW50LkFwcGxpY2F0aW9uQ2FjaGUgPSBmdW5j
dGlvbigpCiB7CkBAIC0xMjU4LDYgKzEzNzgsOSBAQCBBcHBsaWNhdGlvbkNhY2hlQWdlbnQuQXBw
bGljYXRpb25DYWNoZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7QXJyYXkuPEFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+fSAqLyB0aGlzLnJlc291cmNlczsK
IH0KIAorLyoqIEB0eXBlZGVmIHt7bWFuaWZlc3RVUkw6KHN0cmluZyksIHNpemU6KG51bWJlciks
IGNyZWF0aW9uVGltZToobnVtYmVyKSwgdXBkYXRlVGltZToobnVtYmVyKSwgcmVzb3VyY2VzOihB
cnJheS48QXBwbGljYXRpb25DYWNoZUFnZW50LkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUpTT04+
KX19ICovCitBcHBsaWNhdGlvbkNhY2hlQWdlbnQuQXBwbGljYXRpb25DYWNoZUpTT047CisKIC8q
KiBAY29uc3RydWN0b3IgKi8KIEFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5GcmFtZVdpdGhNYW5pZmVz
dCA9IGZ1bmN0aW9uKCkKIHsKQEAgLTEyNjYsNiArMTM4OSw5IEBAIEFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5GcmFtZVdpdGhNYW5pZmVzdCA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7bnVtYmVyfSAq
LyB0aGlzLnN0YXR1czsKIH0KIAorLyoqIEB0eXBlZGVmIHt7ZnJhbWVJZDooTmV0d29ya0FnZW50
LkZyYW1lSWQpLCBtYW5pZmVzdFVSTDooc3RyaW5nKSwgc3RhdHVzOihudW1iZXIpfX0gKi8KK0Fw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5GcmFtZVdpdGhNYW5pZmVzdEpTT047CisKIC8qKgogICogQHBh
cmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IsIEFycmF5LjxBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuRnJhbWVXaXRoTWFuaWZlc3Q+KTp2b2lkPX0gb3B0X2NhbGxiYWNrCiAgKi8KQEAgLTEzMjcs
NiArMTQ1Myw5IEBAIEZpbGVTeXN0ZW1BZ2VudC5FbnRyeSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlw
ZSB7Ym9vbGVhbnx1bmRlZmluZWR9ICovIHRoaXMuaXNUZXh0RmlsZTsKIH0KIAorLyoqIEB0eXBl
ZGVmIHt7dXJsOihzdHJpbmcpLCBuYW1lOihzdHJpbmcpLCBpc0RpcmVjdG9yeTooYm9vbGVhbiks
IG1pbWVUeXBlOihzdHJpbmd8dW5kZWZpbmVkKSwgcmVzb3VyY2VUeXBlOihQYWdlQWdlbnQuUmVz
b3VyY2VUeXBlfHVuZGVmaW5lZCksIGlzVGV4dEZpbGU6KGJvb2xlYW58dW5kZWZpbmVkKX19ICov
CitGaWxlU3lzdGVtQWdlbnQuRW50cnlKU09OOworCiAvKiogQGNvbnN0cnVjdG9yICovCiBGaWxl
U3lzdGVtQWdlbnQuTWV0YWRhdGEgPSBmdW5jdGlvbigpCiB7CkBAIC0xMzM0LDYgKzE0NjMsOSBA
QCBGaWxlU3lzdGVtQWdlbnQuTWV0YWRhdGEgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge251bWJl
cn0gKi8gdGhpcy5zaXplOwogfQogCisvKiogQHR5cGVkZWYge3ttb2RpZmljYXRpb25UaW1lOihu
dW1iZXIpLCBzaXplOihudW1iZXIpfX0gKi8KK0ZpbGVTeXN0ZW1BZ2VudC5NZXRhZGF0YUpTT047
CisKIC8qKgogICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IpOnZvaWQ9fSBvcHRf
Y2FsbGJhY2sKICAqLwpAQCAtMTQzMSw2ICsxNTYzLDkgQEAgRE9NQWdlbnQuTm9kZSA9IGZ1bmN0
aW9uKCkKIC8qKiBAdHlwZSB7RE9NQWdlbnQuTm9kZXx1bmRlZmluZWR9ICovIHRoaXMudGVtcGxh
dGVDb250ZW50OwogfQogCisvKiogQHR5cGVkZWYge3tub2RlSWQ6KERPTUFnZW50Lk5vZGVJZCks
IG5vZGVUeXBlOihudW1iZXIpLCBub2RlTmFtZTooc3RyaW5nKSwgbG9jYWxOYW1lOihzdHJpbmcp
LCBub2RlVmFsdWU6KHN0cmluZyksIGNoaWxkTm9kZUNvdW50OihudW1iZXJ8dW5kZWZpbmVkKSwg
Y2hpbGRyZW46KEFycmF5LjxET01BZ2VudC5Ob2RlSlNPTj58dW5kZWZpbmVkKSwgYXR0cmlidXRl
czooQXJyYXkuPHN0cmluZz58dW5kZWZpbmVkKSwgZG9jdW1lbnRVUkw6KHN0cmluZ3x1bmRlZmlu
ZWQpLCBiYXNlVVJMOihzdHJpbmd8dW5kZWZpbmVkKSwgcHVibGljSWQ6KHN0cmluZ3x1bmRlZmlu
ZWQpLCBzeXN0ZW1JZDooc3RyaW5nfHVuZGVmaW5lZCksIGludGVybmFsU3Vic2V0OihzdHJpbmd8
dW5kZWZpbmVkKSwgeG1sVmVyc2lvbjooc3RyaW5nfHVuZGVmaW5lZCksIG5hbWU6KHN0cmluZ3x1
bmRlZmluZWQpLCB2YWx1ZTooc3RyaW5nfHVuZGVmaW5lZCksIGZyYW1lSWQ6KE5ldHdvcmtBZ2Vu
dC5GcmFtZUlkfHVuZGVmaW5lZCksIGNvbnRlbnREb2N1bWVudDooRE9NQWdlbnQuTm9kZUpTT058
dW5kZWZpbmVkKSwgc2hhZG93Um9vdHM6KEFycmF5LjxET01BZ2VudC5Ob2RlSlNPTj58dW5kZWZp
bmVkKSwgdGVtcGxhdGVDb250ZW50OihET01BZ2VudC5Ob2RlSlNPTnx1bmRlZmluZWQpfX0gKi8K
K0RPTUFnZW50Lk5vZGVKU09OOworCiAvKiogQGNvbnN0cnVjdG9yICovCiBET01BZ2VudC5FdmVu
dExpc3RlbmVyID0gZnVuY3Rpb24oKQogewpAQCAtMTQ0Myw2ICsxNTc4LDkgQEAgRE9NQWdlbnQu
RXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0g
Ki8gdGhpcy5zb3VyY2VOYW1lOwogfQogCisvKiogQHR5cGVkZWYge3t0eXBlOihzdHJpbmcpLCB1
c2VDYXB0dXJlOihib29sZWFuKSwgaXNBdHRyaWJ1dGU6KGJvb2xlYW4pLCBub2RlSWQ6KERPTUFn
ZW50Lk5vZGVJZCksIGhhbmRsZXJCb2R5OihzdHJpbmcpLCBsb2NhdGlvbjooRGVidWdnZXJBZ2Vu
dC5Mb2NhdGlvbkpTT058dW5kZWZpbmVkKSwgc291cmNlTmFtZTooc3RyaW5nfHVuZGVmaW5lZCl9
fSAqLworRE9NQWdlbnQuRXZlbnRMaXN0ZW5lckpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8K
IERPTUFnZW50LlJHQkEgPSBmdW5jdGlvbigpCiB7CkBAIC0xNDUyLDYgKzE1OTAsOSBAQCBET01B
Z2VudC5SR0JBID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtudW1iZXJ8dW5kZWZpbmVkfSAqLyB0
aGlzLmE7CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3I6KG51bWJlciksIGc6KG51bWJlciksIGI6KG51
bWJlciksIGE6KG51bWJlcnx1bmRlZmluZWQpfX0gKi8KK0RPTUFnZW50LlJHQkFKU09OOworCiAv
KiogQGNvbnN0cnVjdG9yICovCiBET01BZ2VudC5IaWdobGlnaHRDb25maWcgPSBmdW5jdGlvbigp
CiB7CkBAIC0xNDYyLDYgKzE2MDMsOSBAQCBET01BZ2VudC5IaWdobGlnaHRDb25maWcgPSBmdW5j
dGlvbigpCiAvKiogQHR5cGUge0RPTUFnZW50LlJHQkF8dW5kZWZpbmVkfSAqLyB0aGlzLm1hcmdp
bkNvbG9yOwogfQogCisvKiogQHR5cGVkZWYge3tzaG93SW5mbzooYm9vbGVhbnx1bmRlZmluZWQp
LCBjb250ZW50Q29sb3I6KERPTUFnZW50LlJHQkFKU09OfHVuZGVmaW5lZCksIHBhZGRpbmdDb2xv
cjooRE9NQWdlbnQuUkdCQUpTT058dW5kZWZpbmVkKSwgYm9yZGVyQ29sb3I6KERPTUFnZW50LlJH
QkFKU09OfHVuZGVmaW5lZCksIG1hcmdpbkNvbG9yOihET01BZ2VudC5SR0JBSlNPTnx1bmRlZmlu
ZWQpfX0gKi8KK0RPTUFnZW50LkhpZ2hsaWdodENvbmZpZ0pTT047CisKIC8qKgogICogQHBhcmFt
IHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IsIERPTUFnZW50Lk5vZGUpOnZvaWQ9fSBvcHRfY2Fs
bGJhY2sKICAqLwpAQCAtMTc5NSw2ICsxOTM5LDkgQEAgQ1NTQWdlbnQuQ1NTU3R5bGVJZCA9IGZ1
bmN0aW9uKCkKIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLm9yZGluYWw7CiB9CiAKKy8qKiBA
dHlwZWRlZiB7e3N0eWxlU2hlZXRJZDooQ1NTQWdlbnQuU3R5bGVTaGVldElkKSwgb3JkaW5hbDoo
bnVtYmVyKX19ICovCitDU1NBZ2VudC5DU1NTdHlsZUlkSlNPTjsKKwogLyoqIEB0eXBlZGVmIHtz
dHJpbmd9ICovCiBDU1NBZ2VudC5TdHlsZVNoZWV0T3JpZ2luOwogCkBAIC0xODA1LDYgKzE5NTIs
OSBAQCBDU1NBZ2VudC5DU1NSdWxlSWQgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge251bWJlcn0g
Ki8gdGhpcy5vcmRpbmFsOwogfQogCisvKiogQHR5cGVkZWYge3tzdHlsZVNoZWV0SWQ6KENTU0Fn
ZW50LlN0eWxlU2hlZXRJZCksIG9yZGluYWw6KG51bWJlcil9fSAqLworQ1NTQWdlbnQuQ1NTUnVs
ZUlkSlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogQ1NTQWdlbnQuUHNldWRvSWRNYXRjaGVz
ID0gZnVuY3Rpb24oKQogewpAQCAtMTgxMiw2ICsxOTYyLDkgQEAgQ1NTQWdlbnQuUHNldWRvSWRN
YXRjaGVzID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtBcnJheS48Q1NTQWdlbnQuUnVsZU1hdGNo
Pn0gKi8gdGhpcy5tYXRjaGVzOwogfQogCisvKiogQHR5cGVkZWYge3twc2V1ZG9JZDoobnVtYmVy
KSwgbWF0Y2hlczooQXJyYXkuPENTU0FnZW50LlJ1bGVNYXRjaEpTT04+KX19ICovCitDU1NBZ2Vu
dC5Qc2V1ZG9JZE1hdGNoZXNKU09OOworCiAvKiogQGNvbnN0cnVjdG9yICovCiBDU1NBZ2VudC5J
bmhlcml0ZWRTdHlsZUVudHJ5ID0gZnVuY3Rpb24oKQogewpAQCAtMTgxOSw2ICsxOTcyLDkgQEAg
Q1NTQWdlbnQuSW5oZXJpdGVkU3R5bGVFbnRyeSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7QXJy
YXkuPENTU0FnZW50LlJ1bGVNYXRjaD59ICovIHRoaXMubWF0Y2hlZENTU1J1bGVzOwogfQogCisv
KiogQHR5cGVkZWYge3tpbmxpbmVTdHlsZTooQ1NTQWdlbnQuQ1NTU3R5bGVKU09OfHVuZGVmaW5l
ZCksIG1hdGNoZWRDU1NSdWxlczooQXJyYXkuPENTU0FnZW50LlJ1bGVNYXRjaEpTT04+KX19ICov
CitDU1NBZ2VudC5Jbmhlcml0ZWRTdHlsZUVudHJ5SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAq
LwogQ1NTQWdlbnQuUnVsZU1hdGNoID0gZnVuY3Rpb24oKQogewpAQCAtMTgyNiw2ICsxOTgyLDkg
QEAgQ1NTQWdlbnQuUnVsZU1hdGNoID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtBcnJheS48bnVt
YmVyPn0gKi8gdGhpcy5tYXRjaGluZ1NlbGVjdG9yczsKIH0KIAorLyoqIEB0eXBlZGVmIHt7cnVs
ZTooQ1NTQWdlbnQuQ1NTUnVsZUpTT04pLCBtYXRjaGluZ1NlbGVjdG9yczooQXJyYXkuPG51bWJl
cj4pfX0gKi8KK0NTU0FnZW50LlJ1bGVNYXRjaEpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8K
IENTU0FnZW50LlNlbGVjdG9yTGlzdCA9IGZ1bmN0aW9uKCkKIHsKQEAgLTE4MzQsNiArMTk5Myw5
IEBAIENTU0FnZW50LlNlbGVjdG9yTGlzdCA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7Q1NTQWdl
bnQuU291cmNlUmFuZ2V8dW5kZWZpbmVkfSAqLyB0aGlzLnJhbmdlOwogfQogCisvKiogQHR5cGVk
ZWYge3tzZWxlY3RvcnM6KEFycmF5LjxzdHJpbmc+KSwgdGV4dDooc3RyaW5nKSwgcmFuZ2U6KENT
U0FnZW50LlNvdXJjZVJhbmdlSlNPTnx1bmRlZmluZWQpfX0gKi8KK0NTU0FnZW50LlNlbGVjdG9y
TGlzdEpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIENTU0FnZW50LkNTU1N0eWxlQXR0cmli
dXRlID0gZnVuY3Rpb24oKQogewpAQCAtMTg0MSw2ICsyMDAzLDkgQEAgQ1NTQWdlbnQuQ1NTU3R5
bGVBdHRyaWJ1dGUgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge0NTU0FnZW50LkNTU1N0eWxlfSAq
LyB0aGlzLnN0eWxlOwogfQogCisvKiogQHR5cGVkZWYge3tuYW1lOihzdHJpbmcpLCBzdHlsZToo
Q1NTQWdlbnQuQ1NTU3R5bGVKU09OKX19ICovCitDU1NBZ2VudC5DU1NTdHlsZUF0dHJpYnV0ZUpT
T047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIENTU0FnZW50LkNTU1N0eWxlU2hlZXRIZWFkZXIg
PSBmdW5jdGlvbigpCiB7CkBAIC0xODUyLDYgKzIwMTcsOSBAQCBDU1NBZ2VudC5DU1NTdHlsZVNo
ZWV0SGVhZGVyID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtib29sZWFufSAqLyB0aGlzLmRpc2Fi
bGVkOwogfQogCisvKiogQHR5cGVkZWYge3tzdHlsZVNoZWV0SWQ6KENTU0FnZW50LlN0eWxlU2hl
ZXRJZCksIGZyYW1lSWQ6KE5ldHdvcmtBZ2VudC5GcmFtZUlkKSwgc291cmNlVVJMOihzdHJpbmcp
LCBvcmlnaW46KENTU0FnZW50LlN0eWxlU2hlZXRPcmlnaW4pLCB0aXRsZTooc3RyaW5nKSwgZGlz
YWJsZWQ6KGJvb2xlYW4pfX0gKi8KK0NTU0FnZW50LkNTU1N0eWxlU2hlZXRIZWFkZXJKU09OOwor
CiAvKiogQGNvbnN0cnVjdG9yICovCiBDU1NBZ2VudC5DU1NTdHlsZVNoZWV0Qm9keSA9IGZ1bmN0
aW9uKCkKIHsKQEAgLTE4NjAsNiArMjAyOCw5IEBAIENTU0FnZW50LkNTU1N0eWxlU2hlZXRCb2R5
ID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfSAqLyB0aGlzLnRleHQ7
CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3N0eWxlU2hlZXRJZDooQ1NTQWdlbnQuU3R5bGVTaGVldElk
KSwgcnVsZXM6KEFycmF5LjxDU1NBZ2VudC5DU1NSdWxlSlNPTj4pLCB0ZXh0OihzdHJpbmd8dW5k
ZWZpbmVkKX19ICovCitDU1NBZ2VudC5DU1NTdHlsZVNoZWV0Qm9keUpTT047CisKIC8qKiBAY29u
c3RydWN0b3IgKi8KIENTU0FnZW50LkNTU1J1bGUgPSBmdW5jdGlvbigpCiB7CkBAIC0xODcyLDYg
KzIwNDMsOSBAQCBDU1NBZ2VudC5DU1NSdWxlID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtBcnJh
eS48Q1NTQWdlbnQuQ1NTTWVkaWE+fHVuZGVmaW5lZH0gKi8gdGhpcy5tZWRpYTsKIH0KIAorLyoq
IEB0eXBlZGVmIHt7cnVsZUlkOihDU1NBZ2VudC5DU1NSdWxlSWRKU09OfHVuZGVmaW5lZCksIHNl
bGVjdG9yTGlzdDooQ1NTQWdlbnQuU2VsZWN0b3JMaXN0SlNPTiksIHNvdXJjZVVSTDooc3RyaW5n
fHVuZGVmaW5lZCksIHNvdXJjZUxpbmU6KG51bWJlciksIG9yaWdpbjooQ1NTQWdlbnQuU3R5bGVT
aGVldE9yaWdpbiksIHN0eWxlOihDU1NBZ2VudC5DU1NTdHlsZUpTT04pLCBtZWRpYTooQXJyYXku
PENTU0FnZW50LkNTU01lZGlhSlNPTj58dW5kZWZpbmVkKX19ICovCitDU1NBZ2VudC5DU1NSdWxl
SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogQ1NTQWdlbnQuU291cmNlUmFuZ2UgPSBmdW5j
dGlvbigpCiB7CkBAIC0xODc5LDYgKzIwNTMsOSBAQCBDU1NBZ2VudC5Tb3VyY2VSYW5nZSA9IGZ1
bmN0aW9uKCkKIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB0aGlzLmVuZDsKIH0KIAorLyoqIEB0eXBl
ZGVmIHt7c3RhcnQ6KG51bWJlciksIGVuZDoobnVtYmVyKX19ICovCitDU1NBZ2VudC5Tb3VyY2VS
YW5nZUpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIENTU0FnZW50LlNob3J0aGFuZEVudHJ5
ID0gZnVuY3Rpb24oKQogewpAQCAtMTg4Niw2ICsyMDYzLDkgQEAgQ1NTQWdlbnQuU2hvcnRoYW5k
RW50cnkgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy52YWx1ZTsKIH0K
IAorLyoqIEB0eXBlZGVmIHt7bmFtZTooc3RyaW5nKSwgdmFsdWU6KHN0cmluZyl9fSAqLworQ1NT
QWdlbnQuU2hvcnRoYW5kRW50cnlKU09OOworCiAvKiogQGNvbnN0cnVjdG9yICovCiBDU1NBZ2Vu
dC5DU1NQcm9wZXJ0eUluZm8gPSBmdW5jdGlvbigpCiB7CkBAIC0xODkzLDYgKzIwNzMsOSBAQCBD
U1NBZ2VudC5DU1NQcm9wZXJ0eUluZm8gPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge0FycmF5Ljxz
dHJpbmc+fHVuZGVmaW5lZH0gKi8gdGhpcy5sb25naGFuZHM7CiB9CiAKKy8qKiBAdHlwZWRlZiB7
e25hbWU6KHN0cmluZyksIGxvbmdoYW5kczooQXJyYXkuPHN0cmluZz58dW5kZWZpbmVkKX19ICov
CitDU1NBZ2VudC5DU1NQcm9wZXJ0eUluZm9KU09OOworCiAvKiogQGNvbnN0cnVjdG9yICovCiBD
U1NBZ2VudC5DU1NDb21wdXRlZFN0eWxlUHJvcGVydHkgPSBmdW5jdGlvbigpCiB7CkBAIC0xOTAw
LDYgKzIwODMsOSBAQCBDU1NBZ2VudC5DU1NDb21wdXRlZFN0eWxlUHJvcGVydHkgPSBmdW5jdGlv
bigpCiAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy52YWx1ZTsKIH0KIAorLyoqIEB0eXBlZGVm
IHt7bmFtZTooc3RyaW5nKSwgdmFsdWU6KHN0cmluZyl9fSAqLworQ1NTQWdlbnQuQ1NTQ29tcHV0
ZWRTdHlsZVByb3BlcnR5SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogQ1NTQWdlbnQuQ1NT
U3R5bGUgPSBmdW5jdGlvbigpCiB7CkBAIC0xOTEyLDYgKzIwOTgsOSBAQCBDU1NBZ2VudC5DU1NT
dHlsZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0gKi8gdGhpcy5o
ZWlnaHQ7CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3N0eWxlSWQ6KENTU0FnZW50LkNTU1N0eWxlSWRK
U09OfHVuZGVmaW5lZCksIGNzc1Byb3BlcnRpZXM6KEFycmF5LjxDU1NBZ2VudC5DU1NQcm9wZXJ0
eUpTT04+KSwgc2hvcnRoYW5kRW50cmllczooQXJyYXkuPENTU0FnZW50LlNob3J0aGFuZEVudHJ5
SlNPTj4pLCBjc3NUZXh0OihzdHJpbmd8dW5kZWZpbmVkKSwgcmFuZ2U6KENTU0FnZW50LlNvdXJj
ZVJhbmdlSlNPTnx1bmRlZmluZWQpLCB3aWR0aDooc3RyaW5nfHVuZGVmaW5lZCksIGhlaWdodDoo
c3RyaW5nfHVuZGVmaW5lZCl9fSAqLworQ1NTQWdlbnQuQ1NTU3R5bGVKU09OOworCiAvKiogQGNv
bnN0cnVjdG9yICovCiBDU1NBZ2VudC5DU1NQcm9wZXJ0eSA9IGZ1bmN0aW9uKCkKIHsKQEAgLTE5
MjUsNiArMjExNCw5IEBAIENTU0FnZW50LkNTU1Byb3BlcnR5ID0gZnVuY3Rpb24oKQogLyoqIEB0
eXBlIHtDU1NBZ2VudC5Tb3VyY2VSYW5nZXx1bmRlZmluZWR9ICovIHRoaXMucmFuZ2U7CiB9CiAK
Ky8qKiBAdHlwZWRlZiB7e25hbWU6KHN0cmluZyksIHZhbHVlOihzdHJpbmcpLCBwcmlvcml0eToo
c3RyaW5nfHVuZGVmaW5lZCksIGltcGxpY2l0Oihib29sZWFufHVuZGVmaW5lZCksIHRleHQ6KHN0
cmluZ3x1bmRlZmluZWQpLCBwYXJzZWRPazooYm9vbGVhbnx1bmRlZmluZWQpLCBzdGF0dXM6KHN0
cmluZ3x1bmRlZmluZWQpLCByYW5nZTooQ1NTQWdlbnQuU291cmNlUmFuZ2VKU09OfHVuZGVmaW5l
ZCl9fSAqLworQ1NTQWdlbnQuQ1NTUHJvcGVydHlKU09OOworCiAvKiogQGNvbnN0cnVjdG9yICov
CiBDU1NBZ2VudC5DU1NNZWRpYSA9IGZ1bmN0aW9uKCkKIHsKQEAgLTE5MzQsNiArMjEyNiw5IEBA
IENTU0FnZW50LkNTU01lZGlhID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtudW1iZXJ8dW5kZWZp
bmVkfSAqLyB0aGlzLnNvdXJjZUxpbmU7CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3RleHQ6KHN0cmlu
ZyksIHNvdXJjZTooc3RyaW5nKSwgc291cmNlVVJMOihzdHJpbmd8dW5kZWZpbmVkKSwgc291cmNl
TGluZToobnVtYmVyfHVuZGVmaW5lZCl9fSAqLworQ1NTQWdlbnQuQ1NTTWVkaWFKU09OOworCiAv
KiogQGNvbnN0cnVjdG9yICovCiBDU1NBZ2VudC5TZWxlY3RvclByb2ZpbGVFbnRyeSA9IGZ1bmN0
aW9uKCkKIHsKQEAgLTE5NDUsNiArMjE0MCw5IEBAIENTU0FnZW50LlNlbGVjdG9yUHJvZmlsZUVu
dHJ5ID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtudW1iZXJ9ICovIHRoaXMubWF0Y2hDb3VudDsK
IH0KIAorLyoqIEB0eXBlZGVmIHt7c2VsZWN0b3I6KHN0cmluZyksIHVybDooc3RyaW5nKSwgbGlu
ZU51bWJlcjoobnVtYmVyKSwgdGltZToobnVtYmVyKSwgaGl0Q291bnQ6KG51bWJlciksIG1hdGNo
Q291bnQ6KG51bWJlcil9fSAqLworQ1NTQWdlbnQuU2VsZWN0b3JQcm9maWxlRW50cnlKU09OOwor
CiAvKiogQGNvbnN0cnVjdG9yICovCiBDU1NBZ2VudC5TZWxlY3RvclByb2ZpbGUgPSBmdW5jdGlv
bigpCiB7CkBAIC0xOTUyLDYgKzIxNTAsOSBAQCBDU1NBZ2VudC5TZWxlY3RvclByb2ZpbGUgPSBm
dW5jdGlvbigpCiAvKiogQHR5cGUge0FycmF5LjxDU1NBZ2VudC5TZWxlY3RvclByb2ZpbGVFbnRy
eT59ICovIHRoaXMuZGF0YTsKIH0KIAorLyoqIEB0eXBlZGVmIHt7dG90YWxUaW1lOihudW1iZXIp
LCBkYXRhOihBcnJheS48Q1NTQWdlbnQuU2VsZWN0b3JQcm9maWxlRW50cnlKU09OPil9fSAqLwor
Q1NTQWdlbnQuU2VsZWN0b3JQcm9maWxlSlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogQ1NT
QWdlbnQuUmVnaW9uID0gZnVuY3Rpb24oKQogewpAQCAtMTk1OSw2ICsyMTYwLDkgQEAgQ1NTQWdl
bnQuUmVnaW9uID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtET01BZ2VudC5Ob2RlSWR9ICovIHRo
aXMubm9kZUlkOwogfQogCisvKiogQHR5cGVkZWYge3tyZWdpb25PdmVyc2V0OihzdHJpbmcpLCBu
b2RlSWQ6KERPTUFnZW50Lk5vZGVJZCl9fSAqLworQ1NTQWdlbnQuUmVnaW9uSlNPTjsKKwogLyoq
IEBjb25zdHJ1Y3RvciAqLwogQ1NTQWdlbnQuTmFtZWRGbG93ID0gZnVuY3Rpb24oKQogewpAQCAt
MTk2OSw2ICsyMTczLDkgQEAgQ1NTQWdlbnQuTmFtZWRGbG93ID0gZnVuY3Rpb24oKQogLyoqIEB0
eXBlIHtBcnJheS48Q1NTQWdlbnQuUmVnaW9uPn0gKi8gdGhpcy5yZWdpb25zOwogfQogCisvKiog
QHR5cGVkZWYge3tkb2N1bWVudE5vZGVJZDooRE9NQWdlbnQuTm9kZUlkKSwgbmFtZTooc3RyaW5n
KSwgb3ZlcnNldDooYm9vbGVhbiksIGNvbnRlbnQ6KEFycmF5LjxET01BZ2VudC5Ob2RlSWQ+KSwg
cmVnaW9uczooQXJyYXkuPENTU0FnZW50LlJlZ2lvbkpTT04+KX19ICovCitDU1NBZ2VudC5OYW1l
ZEZsb3dKU09OOworCiAvKioKICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKTp2
b2lkPX0gb3B0X2NhbGxiYWNrCiAgKi8KQEAgLTIxNTQsNiArMjM2MSw5IEBAIFRpbWVsaW5lQWdl
bnQuVGltZWxpbmVFdmVudCA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7QXJyYXkuPFRpbWVsaW5l
QWdlbnQuVGltZWxpbmVFdmVudD58dW5kZWZpbmVkfSAqLyB0aGlzLmNoaWxkcmVuOwogfQogCisv
KiogQHR5cGVkZWYge3t0eXBlOihzdHJpbmcpLCBkYXRhOihPYmplY3QpLCBjaGlsZHJlbjooQXJy
YXkuPFRpbWVsaW5lQWdlbnQuVGltZWxpbmVFdmVudEpTT04+fHVuZGVmaW5lZCl9fSAqLworVGlt
ZWxpbmVBZ2VudC5UaW1lbGluZUV2ZW50SlNPTjsKKwogLyoqCiAgKiBAcGFyYW0ge251bWJlcj19
IG9wdF9tYXhDYWxsU3RhY2tEZXB0aAogICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJy
b3IpOnZvaWQ9fSBvcHRfY2FsbGJhY2sKQEAgLTIyMjIsNiArMjQzMiw5IEBAIERlYnVnZ2VyQWdl
bnQuTG9jYXRpb24gPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge251bWJlcnx1bmRlZmluZWR9ICov
IHRoaXMuY29sdW1uTnVtYmVyOwogfQogCisvKiogQHR5cGVkZWYge3tzY3JpcHRJZDooRGVidWdn
ZXJBZ2VudC5TY3JpcHRJZCksIGxpbmVOdW1iZXI6KG51bWJlciksIGNvbHVtbk51bWJlcjoobnVt
YmVyfHVuZGVmaW5lZCl9fSAqLworRGVidWdnZXJBZ2VudC5Mb2NhdGlvbkpTT047CisKIC8qKiBA
Y29uc3RydWN0b3IgKi8KIERlYnVnZ2VyQWdlbnQuRnVuY3Rpb25EZXRhaWxzID0gZnVuY3Rpb24o
KQogewpAQCAtMjIzMiw2ICsyNDQ1LDkgQEAgRGVidWdnZXJBZ2VudC5GdW5jdGlvbkRldGFpbHMg
PSBmdW5jdGlvbigpCiAvKiogQHR5cGUge0FycmF5LjxEZWJ1Z2dlckFnZW50LlNjb3BlPnx1bmRl
ZmluZWR9ICovIHRoaXMuc2NvcGVDaGFpbjsKIH0KIAorLyoqIEB0eXBlZGVmIHt7bG9jYXRpb246
KERlYnVnZ2VyQWdlbnQuTG9jYXRpb25KU09OKSwgbmFtZTooc3RyaW5nfHVuZGVmaW5lZCksIGRp
c3BsYXlOYW1lOihzdHJpbmd8dW5kZWZpbmVkKSwgaW5mZXJyZWROYW1lOihzdHJpbmd8dW5kZWZp
bmVkKSwgc2NvcGVDaGFpbjooQXJyYXkuPERlYnVnZ2VyQWdlbnQuU2NvcGVKU09OPnx1bmRlZmlu
ZWQpfX0gKi8KK0RlYnVnZ2VyQWdlbnQuRnVuY3Rpb25EZXRhaWxzSlNPTjsKKwogLyoqIEBjb25z
dHJ1Y3RvciAqLwogRGVidWdnZXJBZ2VudC5DYWxsRnJhbWUgPSBmdW5jdGlvbigpCiB7CkBAIC0y
MjQyLDYgKzI0NTgsOSBAQCBEZWJ1Z2dlckFnZW50LkNhbGxGcmFtZSA9IGZ1bmN0aW9uKCkKIC8q
KiBAdHlwZSB7UnVudGltZUFnZW50LlJlbW90ZU9iamVjdH0gKi8gdGhpcy50aGlzOwogfQogCisv
KiogQHR5cGVkZWYge3tjYWxsRnJhbWVJZDooRGVidWdnZXJBZ2VudC5DYWxsRnJhbWVJZCksIGZ1
bmN0aW9uTmFtZTooc3RyaW5nKSwgbG9jYXRpb246KERlYnVnZ2VyQWdlbnQuTG9jYXRpb25KU09O
KSwgc2NvcGVDaGFpbjooQXJyYXkuPERlYnVnZ2VyQWdlbnQuU2NvcGVKU09OPiksIHRoaXM6KFJ1
bnRpbWVBZ2VudC5SZW1vdGVPYmplY3RKU09OKX19ICovCitEZWJ1Z2dlckFnZW50LkNhbGxGcmFt
ZUpTT047CisKIC8qKiBAY29uc3RydWN0b3IgKi8KIERlYnVnZ2VyQWdlbnQuU2NvcGUgPSBmdW5j
dGlvbigpCiB7CkBAIC0yMjQ5LDYgKzI0NjgsOSBAQCBEZWJ1Z2dlckFnZW50LlNjb3BlID0gZnVu
Y3Rpb24oKQogLyoqIEB0eXBlIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0fSAqLyB0aGlzLm9i
amVjdDsKIH0KIAorLyoqIEB0eXBlZGVmIHt7dHlwZTooc3RyaW5nKSwgb2JqZWN0OihSdW50aW1l
QWdlbnQuUmVtb3RlT2JqZWN0SlNPTil9fSAqLworRGVidWdnZXJBZ2VudC5TY29wZUpTT047CisK
IC8qKgogICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IsIGJvb2xlYW4pOnZvaWQ9
fSBvcHRfY2FsbGJhY2sKICAqLwpAQCAtMjU5MCw2ICsyODEyLDkgQEAgUHJvZmlsZXJBZ2VudC5Q
cm9maWxlSGVhZGVyID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtudW1iZXJ8dW5kZWZpbmVkfSAq
LyB0aGlzLm1heEpTT2JqZWN0SWQ7CiB9CiAKKy8qKiBAdHlwZWRlZiB7e3R5cGVJZDooc3RyaW5n
KSwgdGl0bGU6KHN0cmluZyksIHVpZDoobnVtYmVyKSwgbWF4SlNPYmplY3RJZDoobnVtYmVyfHVu
ZGVmaW5lZCl9fSAqLworUHJvZmlsZXJBZ2VudC5Qcm9maWxlSGVhZGVySlNPTjsKKwogLyoqIEBj
b25zdHJ1Y3RvciAqLwogUHJvZmlsZXJBZ2VudC5DUFVQcm9maWxlID0gZnVuY3Rpb24oKQogewpA
QCAtMjU5OCw2ICsyODIzLDkgQEAgUHJvZmlsZXJBZ2VudC5DUFVQcm9maWxlID0gZnVuY3Rpb24o
KQogLyoqIEB0eXBlIHtudW1iZXJ8dW5kZWZpbmVkfSAqLyB0aGlzLmlkbGVUaW1lOwogfQogCisv
KiogQHR5cGVkZWYge3toZWFkOihPYmplY3R8dW5kZWZpbmVkKSwgYm90dG9tVXBIZWFkOihPYmpl
Y3R8dW5kZWZpbmVkKSwgaWRsZVRpbWU6KG51bWJlcnx1bmRlZmluZWQpfX0gKi8KK1Byb2ZpbGVy
QWdlbnQuQ1BVUHJvZmlsZUpTT047CisKIC8qKiBAdHlwZWRlZiB7c3RyaW5nfSAqLwogUHJvZmls
ZXJBZ2VudC5IZWFwU25hcHNob3RPYmplY3RJZDsKIApAQCAtMjgzNiw2ICszMDY0LDkgQEAgQ2Fu
dmFzQWdlbnQuUmVzb3VyY2VJbmZvID0gZnVuY3Rpb24oKQogLyoqIEB0eXBlIHtzdHJpbmd9ICov
IHRoaXMuZGVzY3JpcHRpb247CiB9CiAKKy8qKiBAdHlwZWRlZiB7e2lkOihDYW52YXNBZ2VudC5S
ZXNvdXJjZUlkKSwgZGVzY3JpcHRpb246KHN0cmluZyl9fSAqLworQ2FudmFzQWdlbnQuUmVzb3Vy
Y2VJbmZvSlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogQ2FudmFzQWdlbnQuUmVzb3VyY2VT
dGF0ZSA9IGZ1bmN0aW9uKCkKIHsKQEAgLTI4NDQsMTIgKzMwNzUsMTggQEAgQ2FudmFzQWdlbnQu
UmVzb3VyY2VTdGF0ZSA9IGZ1bmN0aW9uKCkKIC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0g
Ki8gdGhpcy5pbWFnZVVSTDsKIH0KIAorLyoqIEB0eXBlZGVmIHt7aWQ6KENhbnZhc0FnZW50LlJl
c291cmNlSWQpLCB0cmFjZUxvZ0lkOihDYW52YXNBZ2VudC5UcmFjZUxvZ0lkKSwgaW1hZ2VVUkw6
KHN0cmluZ3x1bmRlZmluZWQpfX0gKi8KK0NhbnZhc0FnZW50LlJlc291cmNlU3RhdGVKU09OOwor
CiAvKiogQGNvbnN0cnVjdG9yICovCiBDYW52YXNBZ2VudC5DYWxsQXJndW1lbnQgPSBmdW5jdGlv
bigpCiB7CiAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5kZXNjcmlwdGlvbjsKIH0KIAorLyoq
IEB0eXBlZGVmIHt7ZGVzY3JpcHRpb246KHN0cmluZyl9fSAqLworQ2FudmFzQWdlbnQuQ2FsbEFy
Z3VtZW50SlNPTjsKKwogLyoqIEBjb25zdHJ1Y3RvciAqLwogQ2FudmFzQWdlbnQuQ2FsbCA9IGZ1
bmN0aW9uKCkKIHsKQEAgLTI4NjQsNiArMzEwMSw5IEBAIENhbnZhc0FnZW50LkNhbGwgPSBmdW5j
dGlvbigpCiAvKiogQHR5cGUge251bWJlcnx1bmRlZmluZWR9ICovIHRoaXMuY29sdW1uTnVtYmVy
OwogfQogCisvKiogQHR5cGVkZWYge3tjb250ZXh0SWQ6KENhbnZhc0FnZW50LlJlc291cmNlSWQp
LCBmdW5jdGlvbk5hbWU6KHN0cmluZ3x1bmRlZmluZWQpLCBhcmd1bWVudHM6KEFycmF5LjxDYW52
YXNBZ2VudC5DYWxsQXJndW1lbnRKU09OPnx1bmRlZmluZWQpLCByZXN1bHQ6KENhbnZhc0FnZW50
LkNhbGxBcmd1bWVudEpTT058dW5kZWZpbmVkKSwgcHJvcGVydHk6KHN0cmluZ3x1bmRlZmluZWQp
LCB2YWx1ZTooQ2FudmFzQWdlbnQuQ2FsbEFyZ3VtZW50SlNPTnx1bmRlZmluZWQpLCBzb3VyY2VV
Ukw6KHN0cmluZ3x1bmRlZmluZWQpLCBsaW5lTnVtYmVyOihudW1iZXJ8dW5kZWZpbmVkKSwgY29s
dW1uTnVtYmVyOihudW1iZXJ8dW5kZWZpbmVkKX19ICovCitDYW52YXNBZ2VudC5DYWxsSlNPTjsK
KwogLyoqIEB0eXBlZGVmIHtzdHJpbmd9ICovCiBDYW52YXNBZ2VudC5UcmFjZUxvZ0lkOwogCkBA
IC0yODc2LDYgKzMxMTYsOSBAQCBDYW52YXNBZ2VudC5UcmFjZUxvZyA9IGZ1bmN0aW9uKCkKIC8q
KiBAdHlwZSB7Ym9vbGVhbnx1bmRlZmluZWR9ICovIHRoaXMuYWxpdmU7CiB9CiAKKy8qKiBAdHlw
ZWRlZiB7e2lkOihDYW52YXNBZ2VudC5UcmFjZUxvZ0lkKSwgY2FsbHM6KEFycmF5LjxDYW52YXNB
Z2VudC5DYWxsSlNPTj4pLCBzdGFydE9mZnNldDoobnVtYmVyfHVuZGVmaW5lZCksIGFsaXZlOihi
b29sZWFufHVuZGVmaW5lZCl9fSAqLworQ2FudmFzQWdlbnQuVHJhY2VMb2dKU09OOworCiAvKioK
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKTp2b2lkPX0gb3B0X2NhbGxiYWNr
CiAgKi8KQEAgLTMwMjcsNiArMzI3MCw5IEBAIExheWVyVHJlZUFnZW50LkludFJlY3QgPSBmdW5j
dGlvbigpCiAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5oZWlnaHQ7CiB9CiAKKy8qKiBAdHlw
ZWRlZiB7e3g6KG51bWJlciksIHk6KG51bWJlciksIHdpZHRoOihudW1iZXIpLCBoZWlnaHQ6KG51
bWJlcil9fSAqLworTGF5ZXJUcmVlQWdlbnQuSW50UmVjdEpTT047CisKIC8qKiBAY29uc3RydWN0
b3IgKi8KIExheWVyVHJlZUFnZW50LkxheWVyID0gZnVuY3Rpb24oKQogewpAQCAtMzAzOSw2ICsz
Mjg1LDkgQEAgTGF5ZXJUcmVlQWdlbnQuTGF5ZXIgPSBmdW5jdGlvbigpCiAvKiogQHR5cGUge0Fy
cmF5LjxMYXllclRyZWVBZ2VudC5MYXllcj58dW5kZWZpbmVkfSAqLyB0aGlzLmNoaWxkTGF5ZXJz
OwogfQogCisvKiogQHR5cGVkZWYge3tsYXllcklkOihMYXllclRyZWVBZ2VudC5MYXllcklkKSwg
Ym91bmRzOihMYXllclRyZWVBZ2VudC5JbnRSZWN0SlNPTiksIGlzQ29tcG9zaXRlZDooYm9vbGVh
biksIHBhaW50Q291bnQ6KG51bWJlcnx1bmRlZmluZWQpLCBtZW1vcnk6KG51bWJlcnx1bmRlZmlu
ZWQpLCBjb21wb3NpdGVkQm91bmRzOihMYXllclRyZWVBZ2VudC5JbnRSZWN0SlNPTnx1bmRlZmlu
ZWQpLCBjaGlsZExheWVyczooQXJyYXkuPExheWVyVHJlZUFnZW50LkxheWVySlNPTj58dW5kZWZp
bmVkKX19ICovCitMYXllclRyZWVBZ2VudC5MYXllckpTT047CisKIC8qKgogICogQHBhcmFtIHtm
dW5jdGlvbig/UHJvdG9jb2wuRXJyb3IpOnZvaWQ9fSBvcHRfY2FsbGJhY2sKICAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183759</attachid>
            <date>2013-01-21 04:50:01 -0800</date>
            <delta_ts>2013-01-21 06:16:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107287-20130121164656.patch</filename>
            <type>text/plain</type>
            <size>13239</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmUxOGI5M2NjMjhlZWNm
NTRlYWM5YmFiNGI2MTlkMDg5ZTcxY2JmNy4uZTkyZDJiZTRlZTI2ODU2NDAwZjg1ZjIxZjJkNGRl
NTg1ZTEzYzVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTE4ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1vZGlmeSBnZW5lcmF0ZV9wcm90b2NvbF9leHRlcm5zLnB5IHRvIGdlbmVyYXRlIEpTT04g
dHlwZWRlZidzIGZvciBAY29uc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcyODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb2RpZnkgZ2VuZXJhdGVfcHJvdG9jb2xfZXh0ZXJucy5weSB0
byBnZW5lcmF0ZSBAdHlwZWRlZnMgaW5zdGVhZCBvZiBAY29uc3RydWN0b3JzLAorCisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzOgorICAgICAg
ICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAg
ICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZ2VuZXJhdGVfcHJvdG9jb2xfZXh0ZXJucy5weToKKyAgICAgICAgKHBhcmFtX3R5cGUpOgor
CiAyMDEzLTAxLTIxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQwMzExLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
U291cmNlLmpzCmluZGV4IDhkNDQ3ODEwYTc4MTE2MDNmN2JjN2NmNjg5MDg0ZjA1ZWQyOWRjM2Uu
LmIzNTQ4MmY1OTViOWQ3MzhlMzVlNWFhMWQ3NjFhZjBkYzVmMTk5YzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGVTb3VyY2UuanMKQEAgLTI4NTYsNyArMjg1Niw3IEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnBy
b3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7c3RyaW5nfQor
ICAgICAqIEByZXR1cm4ge0NhbnZhc0FnZW50LlRyYWNlTG9nSWR9CiAgICAgICovCiAgICAgY2Fw
dHVyZUZyYW1lOiBmdW5jdGlvbigpCiAgICAgewpAQCAtMjg2NCw3ICsyODY0LDcgQEAgSW5qZWN0
ZWRDYW52YXNNb2R1bGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBA
cmV0dXJuIHtzdHJpbmd9CisgICAgICogQHJldHVybiB7Q2FudmFzQWdlbnQuVHJhY2VMb2dJZH0K
ICAgICAgKi8KICAgICBzdGFydENhcHR1cmluZzogZnVuY3Rpb24oKQogICAgIHsKQEAgLTI4NzMs
NyArMjg3Myw3IEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKIAogICAgIC8q
KgogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24odGhpczpSZXNvdXJjZVRyYWNraW5nTWFuYWdlcil9
IGZ1bmMKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICogQHJldHVybiB7Q2FudmFzQWdl
bnQuVHJhY2VMb2dJZH0KICAgICAgKi8KICAgICBfY2FsbFN0YXJ0Q2FwdHVyaW5nRnVuY3Rpb246
IGZ1bmN0aW9uKGZ1bmMpCiAgICAgewpAQCAtMjg5Miw3ICsyODkyLDcgQEAgSW5qZWN0ZWRDYW52
YXNNb2R1bGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0g
e3N0cmluZ30gaWQKKyAgICAgKiBAcGFyYW0ge0NhbnZhc0FnZW50LlRyYWNlTG9nSWR9IGlkCiAg
ICAgICovCiAgICAgc3RvcENhcHR1cmluZzogZnVuY3Rpb24oaWQpCiAgICAgewpAQCAtMjkwMiw3
ICsyOTAyLDcgQEAgSW5qZWN0ZWRDYW52YXNNb2R1bGUucHJvdG90eXBlID0gewogICAgIH0sCiAK
ICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQKKyAgICAgKiBAcGFyYW0ge0NhbnZh
c0FnZW50LlRyYWNlTG9nSWR9IGlkCiAgICAgICovCiAgICAgZHJvcFRyYWNlTG9nOiBmdW5jdGlv
bihpZCkKICAgICB7CkBAIC0yOTEyLDkgKzI5MTIsOSBAQCBJbmplY3RlZENhbnZhc01vZHVsZS5w
cm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBp
ZAorICAgICAqIEBwYXJhbSB7Q2FudmFzQWdlbnQuVHJhY2VMb2dJZH0gaWQKICAgICAgKiBAcGFy
YW0ge251bWJlcj19IHN0YXJ0T2Zmc2V0Ci0gICAgICogQHJldHVybiB7IU9iamVjdHxzdHJpbmd9
CisgICAgICogQHJldHVybiB7IUNhbnZhc0FnZW50LlRyYWNlTG9nfHN0cmluZ30KICAgICAgKi8K
ICAgICB0cmFjZUxvZzogZnVuY3Rpb24oaWQsIHN0YXJ0T2Zmc2V0KQogICAgIHsKQEAgLTI5MjUs
NiArMjkyNSw3IEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dmFyIGFsaXZlID0gdGhpcy5fbWFuYWdlci5jYXB0dXJpbmcoKSAmJiB0aGlzLl9tYW5hZ2VyLmxh
c3RUcmFjZUxvZygpID09PSB0cmFjZUxvZzsKICAgICAgICAgdmFyIHJlc3VsdCA9IHsKICAgICAg
ICAgICAgIGlkOiBpZCwKKyAgICAgICAgICAgIC8qKiBAdHlwZSB7QXJyYXkuPENhbnZhc0FnZW50
LkNhbGw+fSAqLwogICAgICAgICAgICAgY2FsbHM6IFtdLAogICAgICAgICAgICAgYWxpdmU6IGFs
aXZlLAogICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IHN0YXJ0T2Zmc2V0CkBAIC0yOTQzLDEyICsy
OTQ0LDEyIEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICBpZiAoY2FsbC5mdW5jdGlvbk5hbWUoKSkgewogICAgICAgICAgICAg
ICAgIHRyYWNlTG9nSXRlbS5mdW5jdGlvbk5hbWUgPSBjYWxsLmZ1bmN0aW9uTmFtZSgpOwotICAg
ICAgICAgICAgICAgIHRyYWNlTG9nSXRlbS5hcmd1bWVudHMgPSBjYWxsLmFyZ3MoKS5tYXAodGhp
cy5fY3JlYXRlUmVtb3RlT2JqZWN0LmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIHRyYWNl
TG9nSXRlbS5hcmd1bWVudHMgPSBjYWxsLmFyZ3MoKS5tYXAodGhpcy5fbWFrZUNhbGxBcmd1bWVu
dC5iaW5kKHRoaXMpKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbC5yZXN1bHQoKSAhPT0gdW5k
ZWZpbmVkKQotICAgICAgICAgICAgICAgICAgICB0cmFjZUxvZ0l0ZW0ucmVzdWx0ID0gdGhpcy5f
Y3JlYXRlUmVtb3RlT2JqZWN0KGNhbGwucmVzdWx0KCkpOworICAgICAgICAgICAgICAgICAgICB0
cmFjZUxvZ0l0ZW0ucmVzdWx0ID0gdGhpcy5fbWFrZUNhbGxBcmd1bWVudChjYWxsLnJlc3VsdCgp
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdHJhY2VMb2dJdGVtLnBy
b3BlcnR5ID0gY2FsbC5hcmdzKClbMF07Ci0gICAgICAgICAgICAgICAgdHJhY2VMb2dJdGVtLnZh
bHVlID0gdGhpcy5fY3JlYXRlUmVtb3RlT2JqZWN0KGNhbGwuYXJncygpWzFdKTsKKyAgICAgICAg
ICAgICAgICB0cmFjZUxvZ0l0ZW0udmFsdWUgPSB0aGlzLl9tYWtlQ2FsbEFyZ3VtZW50KGNhbGwu
YXJncygpWzFdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdC5jYWxscy5wdXNo
KHRyYWNlTG9nSXRlbSk7CiAgICAgICAgIH0KQEAgLTI5NTcsOSArMjk1OCw5IEBAIEluamVjdGVk
Q2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7Kn0g
b2JqCi0gICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAqIEByZXR1cm4geyFDYW52YXNBZ2Vu
dC5DYWxsQXJndW1lbnR9CiAgICAgICovCi0gICAgX2NyZWF0ZVJlbW90ZU9iamVjdDogZnVuY3Rp
b24ob2JqKQorICAgIF9tYWtlQ2FsbEFyZ3VtZW50OiBmdW5jdGlvbihvYmopCiAgICAgewogICAg
ICAgICBpZiAob2JqIGluc3RhbmNlb2YgUmVwbGF5YWJsZVJlc291cmNlKQogICAgICAgICAgICAg
dmFyIGRlc2NyaXB0aW9uID0gb2JqLmRlc2NyaXB0aW9uKCk7CkBAIC0yOTY5LDkgKzI5NzAsOSBA
QCBJbmplY3RlZENhbnZhc01vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0cmFjZUxvZ0lkCisgICAgICogQHBhcmFtIHtDYW52YXNB
Z2VudC5UcmFjZUxvZ0lkfSB0cmFjZUxvZ0lkCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXBO
bwotICAgICAqIEByZXR1cm4geyFPYmplY3R8c3RyaW5nfQorICAgICAqIEByZXR1cm4geyFDYW52
YXNBZ2VudC5SZXNvdXJjZVN0YXRlfHN0cmluZ30KICAgICAgKi8KICAgICByZXBsYXlUcmFjZUxv
ZzogZnVuY3Rpb24odHJhY2VMb2dJZCwgc3RlcE5vKQogICAgIHsKQEAgLTI5OTAsOCArMjk5MSw4
IEBAIEluamVjdGVkQ2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoq
Ci0gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1Jlc291cmNlSWQKLSAgICAgKiBAcmV0dXJu
IHshT2JqZWN0fHN0cmluZ30KKyAgICAgKiBAcGFyYW0ge0NhbnZhc0FnZW50LlJlc291cmNlSWR9
IHN0cmluZ1Jlc291cmNlSWQKKyAgICAgKiBAcmV0dXJuIHshQ2FudmFzQWdlbnQuUmVzb3VyY2VJ
bmZvfHN0cmluZ30KICAgICAgKi8KICAgICByZXNvdXJjZUluZm86IGZ1bmN0aW9uKHN0cmluZ1Jl
c291cmNlSWQpCiAgICAgewpAQCAtMzAxMiw5ICszMDEzLDkgQEAgSW5qZWN0ZWRDYW52YXNNb2R1
bGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gdHJhY2VMb2dJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdSZXNvdXJjZUlkCi0g
ICAgICogQHJldHVybiB7IU9iamVjdHxzdHJpbmd9CisgICAgICogQHBhcmFtIHtDYW52YXNBZ2Vu
dC5UcmFjZUxvZ0lkfSB0cmFjZUxvZ0lkCisgICAgICogQHBhcmFtIHtDYW52YXNBZ2VudC5SZXNv
dXJjZUlkfSBzdHJpbmdSZXNvdXJjZUlkCisgICAgICogQHJldHVybiB7IUNhbnZhc0FnZW50LlJl
c291cmNlU3RhdGV8c3RyaW5nfQogICAgICAqLwogICAgIHJlc291cmNlU3RhdGU6IGZ1bmN0aW9u
KHRyYWNlTG9nSWQsIHN0cmluZ1Jlc291cmNlSWQpCiAgICAgewpAQCAtMzA0Myw3ICszMDQ0LDcg
QEAgSW5qZWN0ZWRDYW52YXNNb2R1bGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICogQHJldHVybiB7Q2FudmFzQWdlbnQuVHJh
Y2VMb2dJZH0KICAgICAgKi8KICAgICBfbWFrZVRyYWNlTG9nSWQ6IGZ1bmN0aW9uKCkKICAgICB7
CkBAIC0zMDUyLDcgKzMwNTMsNyBAQCBJbmplY3RlZENhbnZhc01vZHVsZS5wcm90b3R5cGUgPSB7
CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVzb3VyY2VJZAotICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKiBAcmV0dXJuIHtDYW52YXNBZ2VudC5SZXNvdXJjZUlkfQog
ICAgICAqLwogICAgIF9tYWtlU3RyaW5nUmVzb3VyY2VJZDogZnVuY3Rpb24ocmVzb3VyY2VJZCkK
ICAgICB7CkBAIC0zMDYwLDkgKzMwNjEsOSBAQCBJbmplY3RlZENhbnZhc01vZHVsZS5wcm90b3R5
cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdS
ZXNvdXJjZUlkCisgICAgICogQHBhcmFtIHtDYW52YXNBZ2VudC5SZXNvdXJjZUlkfSBzdHJpbmdS
ZXNvdXJjZUlkCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uCi0gICAgICogQHJl
dHVybiB7IU9iamVjdH0KKyAgICAgKiBAcmV0dXJuIHshQ2FudmFzQWdlbnQuUmVzb3VyY2VJbmZv
fQogICAgICAqLwogICAgIF9tYWtlUmVzb3VyY2VJbmZvOiBmdW5jdGlvbihzdHJpbmdSZXNvdXJj
ZUlkLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0zMDczLDEwICszMDc0LDEwIEBAIEluamVjdGVk
Q2FudmFzTW9kdWxlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IHN0cmluZ1Jlc291cmNlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHJh
Y2VMb2dJZAorICAgICAqIEBwYXJhbSB7Q2FudmFzQWdlbnQuUmVzb3VyY2VJZH0gc3RyaW5nUmVz
b3VyY2VJZAorICAgICAqIEBwYXJhbSB7Q2FudmFzQWdlbnQuVHJhY2VMb2dJZH0gdHJhY2VMb2dJ
ZAogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpbWFnZVVSTAotICAgICAqIEByZXR1cm4geyFPYmpl
Y3R9CisgICAgICogQHJldHVybiB7IUNhbnZhc0FnZW50LlJlc291cmNlU3RhdGV9CiAgICAgICov
CiAgICAgX21ha2VSZXNvdXJjZVN0YXRlOiBmdW5jdGlvbihzdHJpbmdSZXNvdXJjZUlkLCB0cmFj
ZUxvZ0lkLCBpbWFnZVVSTCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggMTI2ZmE2OGE0ZDBjMGUzZTJmNDUyN2M0NmQ3
YjQwNTE2M2Q0ODg3Yy4uMTgxMjAxODRiZmU3NDg2M2I0N2I0NDRhZGUyYTMwNWEzNWUzMzdmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5q
cwpAQCAtMTExLDcgKzExMSw3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBOYW1lCiAgICAgICogQHBhcmFtIHtib29sZWFufSBjYW5B
Y2Nlc3NJbnNwZWN0ZWRXaW5kb3cKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGdlbmVyYXRlUHJl
dmlldwotICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKiBAcmV0dXJuIHshUnVudGltZUFn
ZW50LlJlbW90ZU9iamVjdH0KICAgICAgKi8KICAgICB3cmFwT2JqZWN0OiBmdW5jdGlvbihvYmpl
Y3QsIGdyb3VwTmFtZSwgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93LCBnZW5lcmF0ZVByZXZpZXcp
CiAgICAgewpAQCAtMTY5LDcgKzE2OSw4IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsK
ICAgICAgKiBAcGFyYW0ge3N0cmluZz19IG9iamVjdEdyb3VwTmFtZQogICAgICAqIEBwYXJhbSB7
Ym9vbGVhbj19IGZvcmNlVmFsdWVUeXBlCiAgICAgICogQHBhcmFtIHtib29sZWFuPX0gZ2VuZXJh
dGVQcmV2aWV3Ci0gICAgICogQHJldHVybiB7SW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0fQor
ICAgICAqIEByZXR1cm4geyFSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0fQorICAgICAqIEBzdXBw
cmVzcyB7Y2hlY2tUeXBlc30KICAgICAgKi8KICAgICBfd3JhcE9iamVjdDogZnVuY3Rpb24ob2Jq
ZWN0LCBvYmplY3RHcm91cE5hbWUsIGZvcmNlVmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcpCiAg
ICAgewpAQCAtMjQ4LDcgKzI0OSw3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAg
ICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0SWQKICAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IG93blByb3BlcnRpZXMKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48T2JqZWN0Pnxib29s
ZWFufQorICAgICAqIEByZXR1cm4ge0FycmF5LjxSdW50aW1lQWdlbnQuUHJvcGVydHlEZXNjcmlw
dG9yPnxib29sZWFufQogICAgICAqLwogICAgIGdldFByb3BlcnRpZXM6IGZ1bmN0aW9uKG9iamVj
dElkLCBvd25Qcm9wZXJ0aWVzKQogICAgIHsKQEAgLTMwNSw3ICszMDYsNyBAQCBJbmplY3RlZFNj
cmlwdC5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVu
Y3Rpb25JZAotICAgICAqIEByZXR1cm4ge09iamVjdHxzdHJpbmd9CisgICAgICogQHJldHVybiB7
IURlYnVnZ2VyQWdlbnQuRnVuY3Rpb25EZXRhaWxzfHN0cmluZ30KICAgICAgKi8KICAgICBnZXRG
dW5jdGlvbkRldGFpbHM6IGZ1bmN0aW9uKGZ1bmN0aW9uSWQpCiAgICAgewpAQCAtNjc1LDcgKzY3
Niw2IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKG9iaiA9PT0g
bnVsbCkKICAgICAgICAgICAgIHJldHVybiAibnVsbCI7CiAKLSAgICAgICAgdmFyIHR5cGUgPSB0
eXBlb2Ygb2JqOwogICAgICAgICBpZiAodGhpcy5pc1ByaW1pdGl2ZVZhbHVlKG9iaikpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKIApAQCAtOTQwLDcgKzk0MCw3IEBAIEluamVjdGVkU2NyaXB0
LkNhbGxGcmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQogSW5qZWN0ZWRT
Y3JpcHQuQ2FsbEZyYW1lUHJveHkucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJh
bSB7T2JqZWN0fSBjYWxsRnJhbWUKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48T2JqZWN0Pn0KKyAg
ICAgKiBAcmV0dXJuIHshQXJyYXkuPERlYnVnZ2VyQWdlbnQuU2NvcGU+fQogICAgICAqLwogICAg
IF93cmFwU2NvcGVDaGFpbjogZnVuY3Rpb24oY2FsbEZyYW1lKQogICAgIHsKQEAgLTk1OCw3ICs5
NTgsNyBAQCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAgKiBA
cGFyYW0ge251bWJlcn0gc2NvcGVUeXBlQ29kZQogICogQHBhcmFtIHsqfSBzY29wZU9iamVjdAog
ICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwSWQKLSAqIEByZXR1cm4ge09iamVjdH0KKyAqIEByZXR1
cm4geyFEZWJ1Z2dlckFnZW50LlNjb3BlfQogICovCiBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eS5fY3JlYXRlU2NvcGVKc29uID0gZnVuY3Rpb24oc2NvcGVUeXBlQ29kZSwgc2NvcGVPYmpl
Y3QsIGdyb3VwSWQpIHsKICAgICBjb25zdCBHTE9CQUxfU0NPUEUgPSAwOwpAQCAtOTY3LDYgKzk2
Nyw3IEBAIEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24gPSBm
dW5jdGlvbihzY29wZVR5cGVDb2RlLCBzY29wZU9iCiAgICAgY29uc3QgQ0xPU1VSRV9TQ09QRSA9
IDM7CiAgICAgY29uc3QgQ0FUQ0hfU0NPUEUgPSA0OwogCisgICAgLyoqIEB0eXBlIHshT2JqZWN0
LjxudW1iZXIsIHN0cmluZz59ICovCiAgICAgdmFyIHNjb3BlVHlwZU5hbWVzID0ge307CiAgICAg
c2NvcGVUeXBlTmFtZXNbR0xPQkFMX1NDT1BFXSA9ICJnbG9iYWwiOwogICAgIHNjb3BlVHlwZU5h
bWVzW0xPQ0FMX1NDT1BFXSA9ICJsb2NhbCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Y29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggMDZlMjliM2U4ZGVjZjYxNmQ5ZGIzMWNhYjU3MzRj
OGVlNjlmYmMzOC4uM2RkNzIyOTZmM2UzZjA2YThjMDJmZmIzMmFmYzQ5Y2RmNjY4MTE2ZSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtNDIx
LDYgKzQyMSw3IEBAIGlmIG5vdCBwcm9jZXNzX3JlY3Vyc2l2ZWx5OgogICAgIG9zLnN5c3RlbSgi
Y2F0ICAiICsgaW5zcGVjdG9yX3BhdGggKyAiLyIgKyAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMi
ICsgIiA+PiAiICsgaW5zcGVjdG9yX3BhdGggKyAiLyIgKyAiSW5qZWN0ZWRTY3JpcHRTb3VyY2VU
bXAuanMiKQogICAgIGNvbW1hbmQgPSBjb21waWxlcl9jb21tYW5kCiAgICAgY29tbWFuZCArPSAi
ICAgIC0tZXh0ZXJucyAiICsgaW5zcGVjdG9yX3BhdGggKyAiLyIgKyAiSW5qZWN0ZWRTY3JpcHRF
eHRlcm5zLmpzIiArICIgXFxcbiIKKyAgICBjb21tYW5kICs9ICIgICAgLS1leHRlcm5zICIgKyBw
cm90b2NvbF9leHRlcm5zX3BhdGggKyAiIFxcXG4iCiAgICAgY29tbWFuZCArPSAiICAgIC0tbW9k
dWxlICIgKyBqc21vZHVsZV9uYW1lX3ByZWZpeCArICJpbmplY3RlZF9zY3JpcHQiICsgIjoiICsg
IjEiICsgIiBcXFxuIgogICAgIGNvbW1hbmQgKz0gIiAgICAgICAgLS1qcyAiICsgaW5zcGVjdG9y
X3BhdGggKyAiLyIgKyAiSW5qZWN0ZWRTY3JpcHRTb3VyY2VUbXAuanMiICsgIiBcXFxuIgogICAg
IGNvbW1hbmQgKz0gIlxuIgpAQCAtNDMyLDYgKzQzMyw3IEBAIGlmIG5vdCBwcm9jZXNzX3JlY3Vy
c2l2ZWx5OgogICAgIG9zLnN5c3RlbSgiY2F0ICAiICsgaW5zcGVjdG9yX3BhdGggKyAiLyIgKyAi
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMiICsgIiA+PiAiICsgaW5zcGVjdG9y
X3BhdGggKyAiLyIgKyAiSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2VUbXAuanMiKQog
ICAgIGNvbW1hbmQgPSBjb21waWxlcl9jb21tYW5kCiAgICAgY29tbWFuZCArPSAiICAgIC0tZXh0
ZXJucyAiICsgaW5zcGVjdG9yX3BhdGggKyAiLyIgKyAiSW5qZWN0ZWRTY3JpcHRFeHRlcm5zLmpz
IiArICIgXFxcbiIKKyAgICBjb21tYW5kICs9ICIgICAgLS1leHRlcm5zICIgKyBwcm90b2NvbF9l
eHRlcm5zX3BhdGggKyAiIFxcXG4iCiAgICAgY29tbWFuZCArPSAiICAgIC0tbW9kdWxlICIgKyBq
c21vZHVsZV9uYW1lX3ByZWZpeCArICJpbmplY3RlZF9zY3JpcHQiICsgIjoiICsgIjEiICsgIiBc
XFxuIgogICAgIGNvbW1hbmQgKz0gIiAgICAgICAgLS1qcyAiICsgaW5zcGVjdG9yX3BhdGggKyAi
LyIgKyAiSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2VUbXAuanMiICsgIiBcXFxuIgog
ICAgIGNvbW1hbmQgKz0gIlxuIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCmluZGV4IDY3MjQyNWFjNjA5OWVhZWQ0MDZlMTcyNmU4
NWQ2OGFkNDZlMDAxZDkuLmRiMTRjNjVkNTg0MDNiOWUxY2JhMWI5NTE0NjZmZThiYzU1M2E2YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJN
b2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2Vy
TW9kZWwuanMKQEAgLTYzLDcgKzYzLDYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAaW1wbGVt
ZW50cyB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufQotICogQGV4dGVuZHMge0RlYnVnZ2VyQWdl
bnQuTG9jYXRpb259CiAgKiBAcGFyYW0ge3N0cmluZ30gc2NyaXB0SWQKICAqIEBwYXJhbSB7bnVt
YmVyfSBsaW5lTnVtYmVyCiAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZ2VuZXJhdGVfcHJvdG9jb2xfZXh0ZXJucy5w
eSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9nZW5lcmF0ZV9wcm90b2NvbF9leHRlcm5zLnB5
CmluZGV4IDAyM2ZiZmY5MjZiNDc2MmNkZTk1YzE2OTFlZDQ2MWVhMzA2ZGFkYzguLjg2MDBkMTZi
MTgxNWFiNThiZTMwN2ViN2YwM2ZiYTAyNjhjYTc4ODkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9nZW5lcmF0ZV9wcm90b2NvbF9leHRlcm5zLnB5CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9nZW5lcmF0ZV9wcm90b2NvbF9leHRlcm5zLnB5CkBAIC05MSwxNSAr
OTEsMTcgQEAgUHJvdG9jb2wuRXJyb3I7CiAgICAgICAgIGlmICJ0eXBlcyIgaW4gZG9tYWluOgog
ICAgICAgICAgICAgZm9yIHR5cGUgaW4gZG9tYWluWyJ0eXBlcyJdOgogICAgICAgICAgICAgICAg
IGlmIHR5cGVbInR5cGUiXSA9PSAib2JqZWN0IjoKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0
X2ZpbGUud3JpdGUoIlxuLyoqIEBjb25zdHJ1Y3RvciAqL1xuIikKLSAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0X2ZpbGUud3JpdGUoIiVzQWdlbnQuJXMgPSBmdW5jdGlvbigpXG57XG4iICUgKGRv
bWFpbl9uYW1lLCB0eXBlWyJpZCJdKSkKKyAgICAgICAgICAgICAgICAgICAgdHlwZWRlZl9hcmdz
ID0gW10KICAgICAgICAgICAgICAgICAgICAgaWYgInByb3BlcnRpZXMiIGluIHR5cGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgcHJvcGVydHkgaW4gdHlwZVsicHJvcGVydGllcyJdOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICIiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCJvcHRpb25hbCIgaW4gcHJvcGVydHkpOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWZmaXggPSAifHVuZGVmaW5lZCIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgiLyoqIEB0eXBlIHslcyVzfSAqLyB0aGlzLiVz
O1xuIiAlIChwYXJhbV90eXBlKGRvbWFpbl9uYW1lLCBwcm9wZXJ0eSksIHN1ZmZpeCwgcHJvcGVy
dHlbIm5hbWUiXSkpCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCJ9XG4i
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVkZWZfYXJncy5hcHBlbmQoIiVzOigl
cyVzKSIgJSAocHJvcGVydHlbIm5hbWUiXSwgcGFyYW1fdHlwZShkb21haW5fbmFtZSwgcHJvcGVy
dHkpLCBzdWZmaXgpKQorICAgICAgICAgICAgICAgICAgICBpZiAodHlwZWRlZl9hcmdzKToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCJcbi8qKiBAdHlwZWRlZiB7
eyVzfXxudWxsfSAqL1xuJXNBZ2VudC4lcztcbiIgJSAoIiwgIi5qb2luKHR5cGVkZWZfYXJncyks
IGRvbWFpbl9uYW1lLCB0eXBlWyJpZCJdKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCJcbi8qKiBAdHlwZWRlZiB7
T2JqZWN0fSAqL1xuJXNBZ2VudC4lcztcbiIgJSAoZG9tYWluX25hbWUsIHR5cGVbImlkIl0pKQog
ICAgICAgICAgICAgICAgIGVsaWYgdHlwZVsidHlwZSJdID09ICJhcnJheSI6CiAgICAgICAgICAg
ICAgICAgICAgIHN1ZmZpeCA9ICIiCiAgICAgICAgICAgICAgICAgICAgIGlmICgib3B0aW9uYWwi
IGluIHByb3BlcnR5KToK
</data>
<flag name="review"
          id="202253"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="202257"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>