Repository: unexpectedjs/unexpected
Pull request #624 (2019-04-23 17:35:50)

Truncate large consecutive blocks of unchanged text in the string diff
Truncate large consecutive blocks of unchanged text in the string diff.   


Patch:
diff --git a/documentation/assertions/string/to-be.md b/documentation/assertions/string/to-be.md
index 3837cb56..a02359b6 100644
--- a/documentation/assertions/string/to-be.md
+++ b/documentation/assertions/string/to-be.md
@@ -33,3 +33,67 @@ expect('Hello world!', 'not to be', 'Hello world!');
 ```output
 expected 'Hello world!' not to be 'Hello world!'
 ```
+
+If you compare large strings, we truncate the similar parts:
+
+```js
+var text = `\
+Bacon ipsum amet tri-tip kielbasa kevin spare RIBS. Sirloin chuck jerky
+venison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket
+pastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami
+shoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,
+strip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.
+Strip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage
+bresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto
+short ribs, biltong boudin sausage turkey.
+
+Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+beef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,
+frankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.
+Pig ground round turducken, pastrami prosciutto ribeye pork ham hock beef
+meatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip
+steak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage
+boudin meatball chuck.`;
+
+var expectedText = `\
+Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky
+venison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket
+pastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami
+shoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,
+strip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.
+Strip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage
+bresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto
+short ribs, biltong boudin sausage turkey.
+
+Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+beef ribs. Prosciutto boudin pancetta ribs beef short loin porchetta pastrami,
+frankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.
+Pig ground round turducken, pastrami prosciutto ribeye pork ham hock beef
+meatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip
+steak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage
+boudin meatball chuck.`;
+
+expect(text, 'to be', expectedText);
+```
+
+<!-- prettier-ignore -->
+```output
+expected 'Bacon ipsum amet tri-tip kielbasa kevin spare RIBS. Sirloin chuck jerky\nvenison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket\npastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami\nshoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,\nstrip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.\nStrip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage\nbresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto\nshort ribs, biltong boudin sausage turkey.\n\nPork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine\nbeef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,\nfrankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.\nPig ground round turducken, pastrami prosciutto ribeye pork ham hock beef\nmeatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip\nsteak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage\nboudin meatball chuck.'
+to be 'Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky\nvenison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket\npastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami\nshoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,\nstrip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.\nStrip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage\nbresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto\nshort ribs, biltong boudin sausage turkey.\n\nPork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine\nbeef ribs. Prosciutto boudin pancetta ribs beef short loin porchetta pastrami,\nfrankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.\nPig ground round turducken, pastrami prosciutto ribeye pork ham hock beef\nmeatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip\nsteak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage\nboudin meatball chuck.'
+
+-Bacon ipsum amet tri-tip kielbasa kevin spare RIBS. Sirloin chuck jerky
++Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky
+ venison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket
+ pastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami
+ shoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,
+... 3 lines omitted ...
+ short ribs, biltong boudin sausage turkey.
+ 
+ Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+-beef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,
++beef ribs. Prosciutto boudin pancetta ribs beef short loin porchetta pastrami,
+ frankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.
+ Pig ground round turducken, pastrami prosciutto ribeye pork ham hock beef
+ meatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip
+... 2 lines omitted ...
+```
diff --git a/lib/styles.js b/lib/styles.js
index dbe9cf51..2368c883 100644
--- a/lib/styles.js
+++ b/lib/styles.js
@@ -202,6 +202,12 @@ module.exports = expect => {
     this.sp().block(pen);
   });
 
+  expect.addStyle('diffLinesOmitted', function(lineCount) {
+    this.jsComment(
+      `... ${lineCount} line${lineCount === 1 ? '' : 's'} omitted ...`
+    );
+  });
+
   expect.addStyle('removedHighlight', function(content) {
     this.alt({
       text() {
@@ -440,7 +446,52 @@ module.exports = expect => {
             options.markUpSpecialCharacters
           );
         } else {
-          this.stringDiffFragment(' ', value, 'text');
+          const horizon = 3;
+          if (index === diffLines.length - 1 && part.count > horizon) {
+            this.stringDiffFragment(
+              ' ',
+              value
+                .split('\n')
+                .slice(0, horizon)
+                .join('\n'),
+              'text'
+            )
+              .nl()
+              .diffLinesOmitted(part.count - horizon);
+          } else if (index === 0 && part.count > horizon) {
+            this.diffLinesOmitted(part.count - horizon)
+              .nl()
+              .stringDiffFragment(
+                ' ',
+                value
+                  .split('\n')
+                  .slice(-horizon)
+                  .join('\n'),
+                'text'
+              );
+          } else if (part.count > 2 * horizon) {
+            this.stringDiffFragment(
+              ' ',
+              value
+                .split('\n')
+                .slice(0, horizon)
+                .join('\n'),
+              'text'
+            )
+              .nl()
+              .diffLinesOmitted(part.count - 2 * horizon)
+              .nl()
+              .stringDiffFragment(
+                ' ',
+                value
+                  .split('\n')
+                  .slice(-horizon)
+                  .join('\n'),
+                'text'
+              );
+          } else {
+            this.stringDiffFragment(' ', value, 'text');
+          }
         }
         if (endsWithNewline) {
           this.nl();
diff --git a/lib/types.js b/lib/types.js
index 9f473938..e2fa9736 100644
--- a/lib/types.js
+++ b/lib/types.js
@@ -1285,7 +1285,7 @@ module.exports = function(expect) {
     inspect(value, depth, output) {
       return output.singleQuotedString(value);
     },
-    diffLimit: 4096,
+    diffLimit: 65536,
     diff(actual, expected, output, diff, inspect) {
       if (Math.max(actual.length, expected.length) > this.diffLimit) {
         output.jsComment(`Diff suppressed due to size > ${this.diffLimit}`);


Test patch:
diff --git a/test/assertions/to-be.spec.js b/test/assertions/to-be.spec.js
index 11a2b01b..8f9ae12d 100644
--- a/test/assertions/to-be.spec.js
+++ b/test/assertions/to-be.spec.js
@@ -78,6 +78,135 @@ describe('to be assertion', () => {
       );
     });
 
+    it('truncates lines in large diffs', () => {
+      const paragraphs = `\
+        Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky
+        venison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket
+        pastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami
+        shoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,
+        strip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.
+        Strip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage
+        bresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto
+        short ribs, biltong boudin sausage turkey.
+
+        Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+        beef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,
+        frankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.
+        Pig ground round turducken, prosciutto pastrami ribeye pork ham hock beef
+        meatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip
+        steak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage
+        boudin meatball chuck.`.replace(/^ {8}/gm, '');
+
+      const modifiedParagraphs = `\
+        Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky
+        venison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket
+        pastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami
+        shoulder buffalo boudin salami spare ribs. Bresaola picanha tri-tip,
+        strip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.
+        Strip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage
+        bresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto
+        short ribs, biltong boudin sausage turkey.
+
+        Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+        beef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,
+        frankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.
+        Pig ground round turducken, pastrami prosciutto ribeye pork ham hock beef
+        meatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip
+        steak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage
+        boudin meatball chuck.`.replace(/^ {8}/gm, '');
+
+      const expectedOutput = `\
+        expected 'Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky\\nvenison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket\\npastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami\\nshoulder buffalo boudin salami spare ribs. Bresaola picanha tri-tip,\\nstrip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.\\nStrip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage\\nbresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto\\nshort ribs, biltong boudin sausage turkey.\\n\\nPork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine\\nbeef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,\\nfrankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.\\nPig ground round turducken, pastrami prosciutto ribeye pork ham hock beef\\nmeatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip\\nsteak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage\\nboudin meatball chuck.'
+        to equal 'Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky\\nvenison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket\\npastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami\\nshoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,\\nstrip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.\\nStrip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage\\nbresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto\\nshort ribs, biltong boudin sausage turkey.\\n\\nPork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine\\nbeef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,\\nfrankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.\\nPig ground round turducken, prosciutto pastrami ribeye pork ham hock beef\\nmeatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip\\nsteak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage\\nboudin meatball chuck.'
+
+         Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky
+         venison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket
+         pastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami
+        -shoulder buffalo boudin salami spare ribs. Bresaola picanha tri-tip,
+        +shoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,
+         strip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.
+         Strip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage
+         bresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto
+        ... 2 lines omitted ...
+         Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+         beef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,
+         frankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.
+        -Pig ground round turducken, pastrami prosciutto ribeye pork ham hock beef
+        +Pig ground round turducken, prosciutto pastrami ribeye pork ham hock beef
+         meatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip
+         steak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage
+         boudin meatball chuck.`.replace(/^ {8}/gm, '');
+
+      expect(
+        () => {
+          expect(modifiedParagraphs, 'to equal', paragraphs);
+        },
+        'to throw',
+        expectedOutput
+      );
+    });
+
+    it('truncates lines in large in the start and end', () => {
+      const paragraphs = `\
+        Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky
+        venison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket
+        pastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami
+        shoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,
+        strip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.
+        Strip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage
+        bresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto
+        short ribs, biltong boudin sausage turkey.
+
+        Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+        beef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,
+        frankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.
+        Pig ground round turducken, prosciutto pastrami ribeye pork ham hock beef
+        meatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip
+        steak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage
+        boudin meatball chuck.`.replace(/^ {8}/gm, '');
+
+      const modifiedParagraphs = `\
+        Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky
+        venison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket
+        pastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami
+        shoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,
+        strip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.
+        Strip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage
+        bresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto
+        short ribs, biltong sausage boudin turkey.
+
+        Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+        beef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,
+        frankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.
+        Pig ground round turducken, prosciutto pastrami ribeye pork ham hock beef
+        meatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip
+        steak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage
+        boudin meatball chuck.`.replace(/^ {8}/gm, '');
+
+      const expectedOutput = `\
+        expected 'Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky\\nvenison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket\\npastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami\\nshoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,\\nstrip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.\\nStrip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage\\nbresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto\\nshort ribs, biltong sausage boudin turkey.\\n\\nPork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine\\nbeef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,\\nfrankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.\\nPig ground round turducken, prosciutto pastrami ribeye pork ham hock beef\\nmeatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip\\nsteak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage\\nboudin meatball chuck.'
+        to equal 'Bacon ipsum dolor amet tri-tip kielbasa kevin spare ribs. Sirloin chuck jerky\\nvenison leberkas. T-bone alcatra short loin short ribs spare ribs rump, brisket\\npastrami frankfurter corned beef kielbasa fatback cupim andouille. Pastrami\\nshoulder buffalo boudin pork belly salami spare ribs. Bresaola picanha tri-tip,\\nstrip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.\\nStrip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage\\nbresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto\\nshort ribs, biltong boudin sausage turkey.\\n\\nPork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine\\nbeef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,\\nfrankfurter corned beef. Leberkas buffalo alcatra, chuck pancetta sirloin pig.\\nPig ground round turducken, prosciutto pastrami ribeye pork ham hock beef\\nmeatloaf turkey kielbasa. Tenderloin porchetta biltong burgdoggen sirloin, strip\\nsteak pastrami ham hock beef spare ribs shank kevin bacon. Pork loin sausage\\nboudin meatball chuck.'
+
+        ... 4 lines omitted ...
+         strip steak swine short loin rump corned beef doner chuck sirloin burgdoggen.
+         Strip steak fatback frankfurter salami pastrami short ribs spare ribs, sausage
+         bresaola porchetta turducken shoulder brisket. Tri-tip beef ribs prosciutto
+        -short ribs, biltong sausage boudin turkey.
+        +short ribs, biltong boudin sausage turkey.
+         
+         Pork chop venison beef ribs leberkas pork filet mignon. Boudin leberkas swine
+         beef ribs. Prosciutto boudin pancetta beef ribs short loin porchetta pastrami,
+        ... 5 lines omitted ...`.replace(/^ {8}/gm, '');
+
+      expect(
+        () => {
+          expect(modifiedParagraphs, 'to equal', paragraphs);
+        },
+        'to throw',
+        expectedOutput
+      );
+    });
+
     it('does not provide a diff when comparing against undefined', () => {
       expect(
         function() {
diff --git a/test/types/string-type.spec.js b/test/types/string-type.spec.js
index 4331806c..02c7dd09 100644
--- a/test/types/string-type.spec.js
+++ b/test/types/string-type.spec.js
@@ -1,24 +1,24 @@
 /* global expect */
 describe('string type', () => {
-  it('should suppress a diff when the actual value has a length greater than 1 KB', () => {
-    var longString = new Array(4098).join('A');
+  it('should suppress a diff when the actual value has a length greater than 64 KB', () => {
+    var longString = new Array(65538).join('A');
     expect(
       function() {
         expect(longString, 'to equal', 'foo');
       },
       'to throw',
-      `expected '${longString}'\nto equal 'foo'\n\nDiff suppressed due to size > 4096`
+      `expected '${longString}'\nto equal 'foo'\n\nDiff suppressed due to size > 65536`
     );
   });
 
-  it('should suppress a diff when the expected value has a length greater than 4 KB', () => {
-    var longString = new Array(4098).join('A');
+  it('should suppress a diff when the expected value has a length greater than 64 KB', () => {
+    var longString = new Array(65538).join('A');
     expect(
       function() {
         expect('foo', 'to equal', longString);
       },
       'to throw',
-      `expected 'foo'\nto equal '${longString}'\n\nDiff suppressed due to size > 4096`
+      `expected 'foo'\nto equal '${longString}'\n\nDiff suppressed due to size > 65536`
     );
   });
 });