-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This fixes the outstanding spillage tests which were written, but not actually being used.
- Loading branch information
1 parent
87af9ac
commit f6cddd8
Showing
14 changed files
with
285 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
package util | ||
|
||
// EMPTY_BOUND is the bound which overlaps exactly with the original range. It | ||
// represents the maximum possible bound. | ||
var EMPTY_BOUND Bounds = Bounds{0, 0} | ||
|
||
// Bounds captures the subrange of rows for which a computation is well-defined. | ||
type Bounds struct { | ||
// Number of rows from first row where computation starts being defined. | ||
Start uint | ||
// Number of rows before last row where computation is no longer defined. | ||
End uint | ||
} | ||
|
||
// NewBounds constructs a new set of bounds. | ||
func NewBounds(start uint, end uint) Bounds { | ||
return Bounds{start, end} | ||
} | ||
|
||
// Union merges one set of bounds into another. | ||
func (p *Bounds) Union(q *Bounds) { | ||
p.Start = max(p.Start, q.Start) | ||
p.End = max(p.End, q.End) | ||
} | ||
|
||
// Boundable captures computations which are well-defined only for a specific | ||
// subrange of rows (the bounds). | ||
type Boundable interface { | ||
// Determine the well-definedness bounds for this expression for both the | ||
// negative (left) or positive (right) directions. For example, consider an | ||
// expression such as "(shift X -1)". This is technically undefined for the | ||
// first row of any trace and, by association, any constraint evaluating | ||
// this expression on that first row is also undefined (and hence must pass). | ||
Bounds() Bounds | ||
} | ||
|
||
// BoundsForArray determines the bounds for an array of expressions. | ||
func BoundsForArray[E Boundable](args []E) Bounds { | ||
bounds := Bounds{0, 0} | ||
|
||
for _, e := range args { | ||
ith := e.Bounds() | ||
bounds.Union(&ith) | ||
} | ||
// Done | ||
return bounds | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ "ST": [], "A": [] } | ||
{ "ST": [1], "A": [0] } | ||
{ "ST": [1,1], "A": [0,0] } | ||
{ "ST": [1,1], "A": [0,1] } | ||
{ "ST": [1,1], "A": [1,0] } | ||
{ "ST": [1,1,1], "A": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [0,0,1] } | ||
{ "ST": [1,1,1], "A": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1] } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
(column ST) | ||
(column A) | ||
(vanish spills (~ (shift A 2))) | ||
(vanish spills (* ST (* A (~ (shift A 2))))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ "ST": [1,1,1], "A": [1,0,1] } | ||
{ "ST": [1,1,1], "A": [1,1,1] } | ||
{ "ST": [1,1,1], "A": [1,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,1] } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{ "ST": [], "A": [] } | ||
{ "ST": [1], "A": [0] } | ||
{ "ST": [1,1], "A": [0,0] } | ||
{ "ST": [1,1], "A": [0,1] } | ||
{ "ST": [1,1], "A": [1,0] } | ||
{ "ST": [1,1,1], "A": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [0,0,1] } | ||
{ "ST": [1,1,1], "A": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [1,0,0] } | ||
{ "ST": [1,1,1], "A": [1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,1] } | ||
{ "ST": [1,1,1,1,1], "A": [1,0,1,0,1] } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
(column ST) | ||
(column A) | ||
(vanish spills (~ (shift A 3))) | ||
(vanish spills (* ST A (~ (shift A 3)))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,1,1] } | ||
{ "ST": [1,1,0,1], "A": [1,0,0,1] } | ||
{ "ST": [1,0,1,1], "A": [1,0,0,1] } | ||
{ "ST": [1,0,0,1], "A": [1,0,0,1] } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
{ "ST": [], "A": [], "B": [] } | ||
{ "ST": [1], "A": [1], "B": [1] } | ||
{ "ST": [1], "A": [0], "B": [1] } | ||
{ "ST": [1], "A": [1], "B": [0] } | ||
{ "ST": [1], "A": [0], "B": [0] } | ||
;; | ||
{ "ST": [1,1], "A": [0,0], "B": [0,0] } | ||
{ "ST": [1,1], "A": [0,1], "B": [0,0] } | ||
{ "ST": [1,1], "A": [1,0], "B": [0,0] } | ||
{ "ST": [1,1], "A": [1,1], "B": [0,0] } | ||
{ "ST": [1,1], "A": [0,0], "B": [1,0] } | ||
{ "ST": [1,1], "A": [0,1], "B": [1,0] } | ||
{ "ST": [1,1], "A": [1,0], "B": [1,0] } | ||
{ "ST": [1,1], "A": [1,1], "B": [1,0] } | ||
{ "ST": [1,1], "A": [0,0], "B": [0,1] } | ||
{ "ST": [1,1], "A": [0,1], "B": [0,1] } | ||
{ "ST": [1,1], "A": [1,0], "B": [0,1] } | ||
{ "ST": [1,1], "A": [1,1], "B": [0,1] } | ||
;; | ||
{ "ST": [1,1,1], "A": [0,0,0], "B": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [1,0,0], "B": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [0,1,0], "B": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [0,0,1], "B": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [1,1,0], "B": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [0,1,1], "B": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [1,1,1], "B": [0,0,0] } | ||
{ "ST": [1,1,1], "A": [0,0,0], "B": [1,0,0] } | ||
{ "ST": [1,1,1], "A": [1,0,0], "B": [1,0,0] } | ||
{ "ST": [1,1,1], "A": [0,1,0], "B": [1,0,0] } | ||
{ "ST": [1,1,1], "A": [0,0,1], "B": [1,0,0] } | ||
{ "ST": [1,1,1], "A": [1,1,0], "B": [1,0,0] } | ||
{ "ST": [1,1,1], "A": [0,1,1], "B": [1,0,0] } | ||
{ "ST": [1,1,1], "A": [1,1,1], "B": [1,0,0] } | ||
{ "ST": [1,1,1], "A": [0,0,0], "B": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [1,0,0], "B": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [0,1,0], "B": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [0,0,1], "B": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [1,1,0], "B": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [0,1,1], "B": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [1,1,1], "B": [0,1,0] } | ||
{ "ST": [1,1,1], "A": [0,0,0], "B": [0,0,1] } | ||
{ "ST": [1,1,1], "A": [1,0,0], "B": [0,0,1] } | ||
{ "ST": [1,1,1], "A": [0,1,0], "B": [0,0,1] } | ||
{ "ST": [1,1,1], "A": [0,0,1], "B": [0,0,1] } | ||
{ "ST": [1,1,1], "A": [1,1,0], "B": [0,0,1] } | ||
{ "ST": [1,1,1], "A": [0,1,1], "B": [0,0,1] } | ||
{ "ST": [1,1,1], "A": [1,1,1], "B": [0,0,1] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [0,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [0,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [0,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [0,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [0,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [0,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [0,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [0,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [0,0,0,0] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [1,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [1,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [1,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [1,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [1,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [1,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [1,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [1,0,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [1,0,0,0] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [0,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [0,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [0,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [0,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [0,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [0,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [0,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [0,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [0,1,0,0] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [0,0,1,0] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [0,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [0,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [0,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [0,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [0,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [0,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [0,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [0,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [0,0,0,1] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [1,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [1,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [1,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [1,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [1,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [1,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [1,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [1,1,0,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [1,1,0,0] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [1,0,1,0] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [1,0,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [1,0,0,1] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [0,1,1,0] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [0,0,0,0], "B": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,0], "B": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,1,0,0], "B": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,0], "B": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,0,1], "B": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,0], "B": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,1,1,0], "B": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [0,0,1,1], "B": [0,1,0,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [0,1,0,1] } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
(column ST) | ||
(column A) | ||
(column B) | ||
(vanish spills (~ (* (shift A 3) (shift B 2)))) | ||
(vanish spills (* ST A (~ (* (shift A 3) (shift B 2))))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [0,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [1,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [0,1,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,0,1], "B": [1,1,1,1] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [1,1,0,1], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,1], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,1], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,1], "B": [0,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,1], "B": [1,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,1], "B": [0,1,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,0,1], "B": [1,1,1,1] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [1,0,1,1], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,1], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,1], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,1], "B": [0,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,1], "B": [1,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,1], "B": [0,1,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,0,1,1], "B": [1,1,1,1] } | ||
;; | ||
{ "ST": [1,1,1,1], "A": [1,1,1,1], "B": [0,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,1,1], "B": [1,0,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,1,1], "B": [0,1,1,0] } | ||
{ "ST": [1,1,1,1], "A": [1,1,1,1], "B": [0,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,1,1], "B": [1,0,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,1,1], "B": [0,1,1,1] } | ||
{ "ST": [1,1,1,1], "A": [1,1,1,1], "B": [1,1,1,1] } |
This file was deleted.
Oops, something went wrong.