<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/121076>121076</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Error: convert-arith-to-emitc
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          pyl3000
      </td>
    </tr>
</table>

<pre>
    When I drop the arith dialect to the emitc dialect using `mlir-opt --convert-arith-to-emitc`, I get the following error:

![Image](https://github.com/user-attachments/assets/891c22ed-c319-4ef9-8ed9-077822a1d8ee)

The input` 7-conv-emitc.mlir` as follow:

```
#map = affine_map<(d0, d1) -> (d0 + d1)>
module {
  memref.global "private" @global_seed : memref<i64> = dense<0>
  func.func @torch.aten.convolution$nobias(%arg0: tensor<1x24x16x128x128xf16>, %arg1: tensor<54x24x1x1x1xf16>) -> tensor<1x54x16x128x128xf16> {
    %c24 = arith.constant 24 : index
    %c128 = arith.constant 128 : index
    %c16 = arith.constant 16 : index
    %c54 = arith.constant 54 : index
    %c1 = arith.constant 1 : index
    %c0 = arith.constant 0 : index
    %cst = arith.constant 0.000000e+00 : f32
    %0 = bufferization.to_memref %arg1 : memref<54x24x1x1x1xf16, strided<[?, ?, ?, ?, ?], offset: ?>>
    %1 = bufferization.to_memref %arg0 : memref<1x24x16x128x128xf16, strided<[?, ?, ?, ?, ?], offset: ?>>
    %alloc = memref.alloc() {alignment = 64 : i64} : memref<1x54x16x128x128xf32>
    emitc.for %arg2 = %c0 to %c1 step %c1 {
      emitc.for %arg3 = %c0 to %c54 step %c1 {
        emitc.for %arg4 = %c0 to %c16 step %c1 {
          emitc.for %arg5 = %c0 to %c128 step %c1 {
            emitc.for %arg6 = %c0 to %c128 step %c1 {
              memref.store %cst, %alloc[%arg2, %arg3, %arg4, %arg5, %arg6] : memref<1x54x16x128x128xf32>
            }
          }
        }
      }
    }
    emitc.for %arg2 = %c0 to %c1 step %c1 {
      emitc.for %arg3 = %c0 to %c16 step %c1 {
        emitc.for %arg4 = %c0 to %c128 step %c1 {
          emitc.for %arg5 = %c0 to %c128 step %c1 {
            emitc.for %arg6 = %c0 to %c54 step %c1 {
              emitc.for %arg7 = %c0 to %c1 step %c1 {
                emitc.for %arg8 = %c0 to %c1 step %c1 {
                  emitc.for %arg9 = %c0 to %c1 step %c1 {
                    emitc.for %arg10 = %c0 to %c24 step %c1 {
                      %3 = affine.apply #map(%arg3, %arg7)
                      %4 = affine.apply #map(%arg4, %arg8)
                      %5 = affine.apply #map(%arg5, %arg9)
                      %6 = memref.load %1[%arg2, %arg10, %3, %4, %5] : memref<1x24x16x128x128xf16, strided<[?, ?, ?, ?, ?], offset: ?>>
                      %7 = memref.load %0[%arg6, %arg10, %arg7, %arg8, %arg9] : memref<54x24x1x1x1xf16, strided<[?, ?, ?, ?, ?], offset: ?>>
                      %8 = memref.load %alloc[%arg2, %arg6, %arg3, %arg4, %arg5] : memref<1x54x16x128x128xf32>
                      %9 = arith.extf %6 : f16 to f32
                      %10 = arith.extf %7 : f16 to f32
                      %11 = arith.mulf %9, %10 : f32
                      %12 = arith.addf %8, %11 : f32
                      memref.store %12, %alloc[%arg2, %arg6, %arg3, %arg4, %arg5] : memref<1x54x16x128x128xf32>
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    %alloc_0 = memref.alloc() {alignment = 64 : i64} : memref<1x54x16x128x128xf16>
    emitc.for %arg2 = %c0 to %c1 step %c1 {
      emitc.for %arg3 = %c0 to %c54 step %c1 {
        emitc.for %arg4 = %c0 to %c16 step %c1 {
          emitc.for %arg5 = %c0 to %c128 step %c1 {
            emitc.for %arg6 = %c0 to %c128 step %c1 {
              %3 = memref.load %alloc[%c0, %arg3, %arg4, %arg5, %arg6] : memref<1x54x16x128x128xf32>
              %4 = arith.truncf %3 : f32 to f16
              memref.store %4, %alloc_0[%arg2, %arg3, %arg4, %arg5, %arg6] : memref<1x54x16x128x128xf16>
            }
          }
        }
      }
    }
    %2 = bufferization.to_tensor %alloc_0 : memref<1x54x16x128x128xf16>
    return %2 : tensor<1x54x16x128x128xf16>
  }
  func.func @q_conv_test(%arg0: tensor<?x?x?x?xi8>, %arg1: tensor<?x?x?x?xi8>, %arg2: tensor<?xf32>) -> tensor<?x?x?x?xf32> {
    %c1 = arith.constant 1 : index
    %c3_i32 = arith.constant 3 : i32
    %c7_i32 = arith.constant 7 : i32
    %cst = arith.constant 1.000000e-04 : f64
    %cst_0 = arith.constant 0.000000e+00 : f32
    %c3 = arith.constant 3 : index
    %c2 = arith.constant 2 : index
    %cst_1 = arith.constant 2.14748365E+9 : f32
    %cst_2 = arith.constant -2.14748365E+9 : f32
    %c0 = arith.constant 0 : index
    %c1_i64 = arith.constant 1 : i64
    %0 = bufferization.to_memref %arg1 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %1 = bufferization.to_memref %arg0 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %2 = bufferization.to_memref %arg1 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %3 = bufferization.to_memref %arg1 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %4 = bufferization.to_memref %arg1 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %5 = bufferization.to_memref %arg0 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %6 = bufferization.to_memref %arg0 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %7 = bufferization.to_memref %arg0 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %8 = bufferization.to_memref %arg2 : memref<?xf32, strided<[?], offset: ?>>
    %9 = bufferization.to_memref %arg2 : memref<?xf32, strided<[?], offset: ?>>
    %dim = memref.dim %9, %c0 : memref<?xf32, strided<[?], offset: ?>>
    %alloc = memref.alloc(%dim) {alignment = 64 : i64} : memref<?xi32>
    %dim_3 = memref.dim %8, %c0 : memref<?xf32, strided<[?], offset: ?>>
    emitc.for %arg3 = %c0 to %dim_3 step %c1 {
      %21 = memref.load %8[%arg3] : memref<?xf32, strided<[?], offset: ?>>
      %22 = arith.truncf %cst : f64 to f32
      %23 = arith.divf %21, %22 : f32
      %24 = math.roundeven %23 : f32
      %25 = arith.addf %24, %cst_0 : f32
      %26 = arith.maximumf %25, %cst_2 : f32
      %27 = arith.minimumf %26, %cst_1 : f32
      %28 = arith.fptosi %27 : f32 to i32
      memref.store %28, %alloc[%arg3] : memref<?xi32>
    }
    %alloc_4 = memref.alloc(%dim) {alignment = 64 : i64} : memref<?xf32>
    emitc.for %arg3 = %c0 to %dim step %c1 {
      %21 = memref.load %alloc[%arg3] : memref<?xi32>
      %22 = arith.sitofp %21 : i32 to f32
      %23 = arith.truncf %cst : f64 to f32
      %24 = arith.mulf %22, %23 : f32
      memref.store %24, %alloc_4[%arg3] : memref<?xf32>
    }
    emitc.for %arg3 = %c0 to %dim step %c1 {
      %21 = memref.load %alloc_4[%arg3] : memref<?xf32>
      %22 = arith.truncf %cst : f64 to f32
      %23 = arith.divf %21, %22 : f32
      %24 = math.roundeven %23 : f32
      %25 = arith.addf %24, %cst_0 : f32
      %26 = arith.maximumf %25, %cst_2 : f32
      %27 = arith.minimumf %26, %cst_1 : f32
      %28 = arith.fptosi %27 : f32 to i32
      memref.store %28, %alloc[%arg3] : memref<?xi32>
    }
    %dim_5 = memref.dim %7, %c0 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_6 = memref.dim %6, %c2 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_7 = memref.dim %5, %c3 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_8 = memref.dim %4, %c0 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_9 = memref.dim %3, %c2 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_10 = memref.dim %2, %c3 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %10 = arith.index_cast %dim_9 : index to i64
    %11 = arith.index_cast %dim_6 : index to i64
    %12 = arith.subi %10, %c1_i64 : i64
    %13 = arith.subi %11, %12 : i64
    %14 = arith.index_cast %13 : i64 to index
    %15 = arith.index_cast %dim_10 : index to i64
    %16 = arith.index_cast %dim_7 : index to i64
    %17 = arith.subi %15, %c1_i64 : i64
    %18 = arith.subi %16, %17 : i64
    %19 = arith.index_cast %18 : i64 to index
    %alloc_11 = memref.alloc(%dim_5, %dim_8, %14, %19) {alignment = 64 : i64} : memref<?x?x?x?xi32>
    emitc.for %arg3 = %c0 to %dim_5 step %c1 {
      emitc.for %arg4 = %c0 to %dim step %c1 {
        emitc.for %arg5 = %c0 to %14 step %c1 {
          emitc.for %arg6 = %c0 to %19 step %c1 {
            %21 = memref.load %alloc[%arg4] : memref<?xi32>
            memref.store %21, %alloc_11[%arg3, %arg4, %arg5, %arg6] : memref<?x?x?x?xi32>
          }
        }
      }
    }
    %dim_12 = memref.dim %1, %c0 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_13 = memref.dim %1, %c1 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_14 = memref.dim %0, %c0 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_15 = memref.dim %0, %c2 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    %dim_16 = memref.dim %0, %c3 : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
    emitc.for %arg3 = %c0 to %dim_12 step %c1 {
      emitc.for %arg4 = %c0 to %dim_14 step %c1 {
        emitc.for %arg5 = %c0 to %14 step %c1 {
          emitc.for %arg6 = %c0 to %19 step %c1 {
            emitc.for %arg7 = %c0 to %dim_13 step %c1 {
              emitc.for %arg8 = %c0 to %dim_15 step %c1 {
                emitc.for %arg9 = %c0 to %dim_16 step %c1 {
                  %21 = affine.apply #map(%arg5, %arg8)
                  %22 = affine.apply #map(%arg6, %arg9)
                  %23 = memref.load %1[%arg3, %arg7, %21, %22] : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
                  %24 = memref.load %0[%arg4, %arg7, %arg8, %arg9] : memref<?x?x?x?xi8, strided<[?, ?, ?, ?], offset: ?>>
                  %25 = memref.load %alloc_11[%arg3, %arg4, %arg5, %arg6] : memref<?x?x?x?xi32>
                  %26 = arith.extsi %23 : i8 to i32
                  %27 = arith.subi %26, %c7_i32 : i32
                  %28 = arith.extsi %24 : i8 to i32
                  %29 = arith.subi %28, %c3_i32 : i32
                  %30 = arith.muli %27, %29 : i32
                  %31 = arith.addi %25, %30 : i32
                  memref.store %31, %alloc_11[%arg3, %arg4, %arg5, %arg6] : memref<?x?x?x?xi32>
                }
              }
            }
          }
        }
      }
    }
    %alloc_17 = memref.alloc(%dim_5, %dim_8, %14, %19) {alignment = 64 : i64} : memref<?x?x?x?xf32>
    emitc.for %arg3 = %c0 to %dim_5 step %c1 {
      emitc.for %arg4 = %c0 to %dim_8 step %c1 {
        emitc.for %arg5 = %c0 to %14 step %c1 {
          emitc.for %arg6 = %c0 to %19 step %c1 {
            %21 = memref.load %alloc_11[%arg3, %arg4, %arg5, %arg6] : memref<?x?x?x?xi32>
            %22 = arith.sitofp %21 : i32 to f32
            %23 = arith.truncf %cst : f64 to f32
            %24 = arith.mulf %22, %23 : f32
            memref.store %24, %alloc_17[%arg3, %arg4, %arg5, %arg6] : memref<?x?x?x?xf32>
          }
        }
      }
    }
    %20 = bufferization.to_tensor %alloc_17 : memref<?x?x?x?xf32>
    return %20 : tensor<?x?x?x?xf32>
  }
  func.func @conv_broadcast(%arg0: tensor<1x80x3000xf32>, %arg1: tensor<1024x80x3xf32>, %arg2: tensor<1024xf32>) -> tensor<1x1024x3000xf32> {
    %c3 = arith.constant 3 : index
    %c3000 = arith.constant 3000 : index
    %c1024 = arith.constant 1024 : index
    %c3002 = arith.constant 3002 : index
    %c80 = arith.constant 80 : index
    %c1 = arith.constant 1 : index
    %c0 = arith.constant 0 : index
    %cst = arith.constant 0.000000e+00 : f32
    %0 = bufferization.to_memref %arg0 : memref<1x80x3000xf32, strided<[?, ?, ?], offset: ?>>
    %1 = bufferization.to_memref %arg1 : memref<1024x80x3xf32, strided<[?, ?, ?], offset: ?>>
    %2 = bufferization.to_memref %arg2 : memref<1024xf32, strided<[?], offset: ?>>
    %alloc = memref.alloc() {alignment = 64 : i64} : memref<1x80x3002xf32>
    emitc.for %arg3 = %c0 to %c1 step %c1 {
      emitc.for %arg4 = %c0 to %c80 step %c1 {
        emitc.for %arg5 = %c0 to %c3002 step %c1 {
          memref.store %cst, %alloc[%arg3, %arg4, %arg5] : memref<1x80x3002xf32>
        }
      }
    }
    %reinterpret_cast = memref.reinterpret_cast %alloc to offset: [1], sizes: [1, 80, 3000], strides: [240160, 3002, 1] : memref<1x80x3002xf32> to memref<1x80x3000xf32, strided<[240160, 3002, 1], offset: 1>>
    memref.copy %0, %reinterpret_cast : memref<1x80x3000xf32, strided<[?, ?, ?], offset: ?>> to memref<1x80x3000xf32, strided<[240160, 3002, 1], offset: 1>>
    %alloc_0 = memref.alloc() {alignment = 64 : i64} : memref<1x1024x3000xf32>
    emitc.for %arg3 = %c0 to %c1 step %c1 {
      emitc.for %arg4 = %c0 to %c1024 step %c1 {
        emitc.for %arg5 = %c0 to %c3000 step %c1 {
          %4 = memref.load %2[%arg4] : memref<1024xf32, strided<[?], offset: ?>>
          memref.store %4, %alloc_0[%arg3, %arg4, %arg5] : memref<1x1024x3000xf32>
        }
      }
    }
    emitc.for %arg3 = %c0 to %c1 step %c1 {
      emitc.for %arg4 = %c0 to %c1024 step %c1 {
        emitc.for %arg5 = %c0 to %c3000 step %c1 {
          emitc.for %arg6 = %c0 to %c80 step %c1 {
            emitc.for %arg7 = %c0 to %c3 step %c1 {
              %4 = affine.apply #map(%arg5, %arg7)
              %5 = memref.load %alloc[%arg3, %arg6, %4] : memref<1x80x3002xf32>
              %6 = memref.load %1[%arg4, %arg6, %arg7] : memref<1024x80x3xf32, strided<[?, ?, ?], offset: ?>>
              %7 = memref.load %alloc_0[%arg3, %arg4, %arg5] : memref<1x1024x3000xf32>
              %8 = arith.mulf %5, %6 : f32
              %9 = arith.addf %7, %8 : f32
              memref.store %9, %alloc_0[%arg3, %arg4, %arg5] : memref<1x1024x3000xf32>
            }
          }
        }
      }
    }
    %3 = bufferization.to_tensor %alloc_0 : memref<1x1024x3000xf32>
    return %3 : tensor<1x1024x3000xf32>
  }
}

```

How to fix it?
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsXElv6z4O_zTqRUigxeshhzZtMe8-wBwDx5YbDxw7Yyt9ef9PP7C82_TW1k1n8H9Lmygk9ZNEUhRNxUnT4C0SYof0J6Q_PzhXeYqT3eVPyAkhD8fY-7P710lE-Bf2kviC5UlgJwnkCXuBEwpXYhmrRnEOpFs1XtMgesPIIOcwSDbxReLNxo2jd5HIjWLfyHijWJBBENvjX_hNSCXIj8Mw_p2xiySJE8QfEVH_GEX606-z8yaQ_oyYdZLykmYfs1fEXt8Ceboet258Ruz1mopk40jpuKeziGSK2KuTpkK9sGzqMia8jcupvdGEb28s4dkbYpoWYw71LCEQs_NO_3kSOIguV4kMgk01hBz2NhtY1uikBWL08oqe9sgu4Rqk-JdB52fnghF_xo7vB5E4nJ0L4nvELE-N3qOI2XiD-AtWbRixp7wR8RdEHs-xdw0FRuYTIo8Yn8U5Ef72LYyPTogRY5ckeHekQIxhpJG8_ZAK4WHEHwtyxPeBoaku-DP2RJQKxPck7wBj_xq52-xHJkHGiXvaOlJE22zIcXiVQRwhpkXxMXBSxCzEdCd5I5l4KaI0W6c9vTHtRo0bZZb671Mjk872OKemLWpdU-Tqb0lZzEFDog5IrOYBZ4JdpuUzm6lVBjeVTiSxan3EQeSJW4OYMguizpsBcgOkNkBiHQSiDwABBYOkBCIlIGkqQdotUX8EYk8kZ_Q5q9nyDo5X3xdJ8JeTrfVWxodcb8rFa6tSd_XYHqcyCTzhZXqtPyH-qhZ-6FdmwXsc-34qZCY4a-MvpTIqVHQGKtJGBWngCsicMIxdha6wRNWgrMLOlNMJg7coczyKxigUwNCQ-dzF29FvzuqOcj_jx0kxVqak5Qoh40KJUikupT5VVtHn5X1eXRti7rNrQNfGMHtfgA4IYNaYhL4M4wMyKl-ZyjgRhYmUHkktmv5UzG7tp3j9Uqtf6vVLA-lLFrL8g8znVkv7ffNd_bp-tbI6jK3nHHUYX4lv0ocxnYaFmAtmcViK9SEpfTn2B-X0JVHSF8UmZ6fSRabzRriydS6X8A_Ow5hq82-YiZkHTIPCtElhDUOzJoTpk8IapmpPCDOabjyMHU_tPJBXoKR4XY67hKwD3mD9bQgcjQmNhlSjMYDR5KvXmPt65rrDWnvPB4dkQUMadN3GtBf_kOtuQbIbMZa4Sb_Uo0fsUyMztjq4AvkpAQSYSwQ0g8fzNVQC7GKQtBvgwSJYQ4TjeUpEufqUTorobquUTe2qay9Nd3cdb4da-22f27HL2TiQVWLF_Mz0d6wIyfhYrFhte8PuxiXrx4nNLVPZp0yukeuX8JRhKi9BjclwV2ua5YGsFe42dfHLjIfBB8A8O9C2rrnYEiGvSVQKf5zKNCiuElMrQ_KfgxtH7wcpsuMEmA1B_PXW_B9YI8mQCWLWIy4Up5cx6QrK6ToZkwW5B34IOIPIc00MmmkE1xwiNgFiOFVBy1TFhuSu0De0FtMBzoZMZDhcPjKGzpDBEbCBdMsBnEu2pZqpWdzQXxB7sgE8qTyA_WymWRekg-ghMMCkFK22mc8kgQCtnR0TrpMAWhnRgEe64xzxH4dI-3GI9B-nR8aPQ2T-OETWDESsjyjzlRCMGT3a396jF5yb8aZ6W5_kXGDCP9HZSNY6A7L0PKKWvBm-5mIOHBiRtcKIpo8tOZqBmD_z5hQK9q0qRua9uPczePMuGRjW58GQCna6x_-MqRm8eMG7n4Mv5pSx3mE9a83d8NmRp20SXyNPvIuoEtYn14F0ACuPA2XY1WdrPh47O7fgfD3nrHqDFQZoNlmDqGY1Gqz9RERG0XyE519knAaVxOpwFDR4uociZoHJCni92zreP9xrX2tSo4-AQB1frOGLR91X3TSQsX-pulCx_ZTmzlZ3DchusfLACuhvb3nbh15thkEDC7zi3C-D9Lfj-H9zHNnGpAPbpDmyTa4YaWVwDABONZ9A0LMyHBOAU2kG_3Y4FgBHu99i2QAcfr_FogTAw-6zWq1nKyodcnCdzEnWM1ekSZStNxMgracqfVZjjLW1N16PQQ6lnIIyDdPJuFAOcZXumTKAQxuESHlJrtC1E0FUHx0aJWNjM0Z5zTFWExqgPjUtFsRVOiNqAhz28LRYI9OSb8aUDkdwhxKs8gIlhNL0qf2RCK-l_YujvYM-9zlO_0HMSMAy5zEMHa0fmH4EQ-3xBzAzA1ZtTsA6sH_TVmRIaWMLX_wQZHQtixEtfeShrJEB7pTeb7eh0Im-wvO9qTyFRwPwkDvODxTKkTtux1AsR-6wHc_zZ5R9yqEdxrzS_X3adL1ZYWIL69b6FWeFKi6uXevXnBVKNKNWrPbYM8uxBmu7GkfcEUmNGpLBwq763DtY1dWuXNvj9ql42tF_oY30sWvjNVxaH_tU3db34teH0x6r77dNHEa7yKo46hdRstU96Xe5oci1TjCUD7ofR2VYIAJtJgIbQlAl0vkcBJy0M2lFtqPUdHuSn7aTOzl_uUicjPJ3Yy_-zbFXMYrvrPOi5v1OEsvzxp88SRxGyqnuv-9OJGC_Qfs-kjKvORcnzmvWpelz2Fw7SXRqfuWEAWVvy6vDBgpWuuVhRcJgHpZGfRjBoxVaDTawQEyVhx2T2PFcZ7BGjN4scuOEkKqeCy4Po4RpirRHx_p0Q6Vh9KY-bnTXKQtbUCOVCQGpCRmoRCLwNb2iHewBrjvL2_sMFgjIGoAzvwLuR9y-69U4NvVmOpj7omKrzlm_rZVfgmJOgRUDUKxTFrG0QDtfFLZ0L55fmg3UVlvkM9twbmYjO-nc63PzS_rBSZrp8xMRRFIkl0TIIsNbL1v_s3JtZdzUAP2JFmqRBn-JtGpje2ypLElmVyWF0qeShmmEGiWJ0jc6Ob6s85lmC4tv6y9taW8xcje-_MGNHA8wS2v4jlWH9tV3J7pb3_cYp9rdPmmeI_bdqLfsRLlsJFv-KYcJe4WhWwbzvcLA-szxC__razjj7sqYk4dEALdaJzOMs65p6q3sUz8BV1XbTpQcse6tMEBNh3eKqq-J25tavx8FHLSILwxkWhjBO5mrGErVpQWcAMuVMwav9nVuNpbFPGW6yBpk7HoDe01v0PUI_fcz4oiBqvnJm0UDuOpTI-_eKgI5cizFz85XxZDHf8S_1eE-uOFAlt8q8_rg7bhnc9t5EDtqcp1Ylm6yh9PuaPu2Q3T3aPlC2L6h6dx3fP94NHTDFdx_CHaMMI0yphNKmM62zHAdanHhCWHTo-cjjYizE4TbMHw_b-Pk7SFI06vYUUaJaTyEzlGEqfqCIMYi8RurT5FKlD8ku4xpc7y-pUgjYZDKtBYjAxmK3UvxNT4Y_gKgh2sS7ka-yyeTVvzaXJL438KViL0qDClirwXI9x37bwAAAP__HTfzxQ">