Intersect curve curve, preserve data structure

Hello all,
I am having some trouble with the following problem.
I have two sets of closed curves, set P (in red) and set Z (in purple).

I want to create a table that shows the areas of each curve in Z that intersects with each curve in P. Ideally, the data tree would look like this (sq ft numbers are examples):

{0} P1:
{0;0} Z1 intersection: 9999 sq ft
{0;1} Z2 intersection: 99 sq ft
{0;2} Z3 intersection: 0 sq ft
{0;3} Z4 intersection: 0 sq ft
{0;4} Z5 intersection: 123 sq ft
{1} P2:
{1;0} Z1 intersection: 0 sq ft
{1;1} Z2 intersection: 99999 sq ft
{1;2} Z3 intersection: 99 sq ft
{1;3} Z4 intersection: 99 sq ft
{1;4} Z5 intersection: 999 sq ft
{2} P3:
{2;0} Z1 intersection: 0 sq ft
{2;1} Z2 intersection: 0 sq ft
{2;2} Z3 intersection: 0 sq ft
{2;3} Z4 intersection: 0 sq ft
{2;4} Z5 intersection: 9 sq ft
etc…

I tried using a simple Region Intersection, but the problem is it doesn’t preserve the data tree structure. I want to preserve the spots for each Z even though it might not intersect with a given P. Using a Collision check creates a boolean pattern which does preserve the data structure, but I don’t know how to merge that with the intersected regions.

In other words, I want the “False” values in the left panel to be preserved in their correct place in the right panel as 0’s, and the “True” values in the left panel below to be preserved in their correct place in the right panel as the areas of the intersections.

Are there masks or filters that use a boolean pattern? Any help is greatly appreciated!

Thanks!

Have a look at the attached.

RInt_re.gh (14.2 KB)

Check this as well.

RInt_reV2.gh (18.3 KB)