Coverage for cuda / core / _layout.pxd: 80.30%

396 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-08 01:07 +0000

1# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 

2# 

3# SPDX-License-Identifier: Apache-2.0 

4  

5cimport cython 

6from cython.operator cimport dereference as deref 

7  

8from libc.stdint cimport int64_t, int32_t, uint32_t, uint64_t, intptr_t 

9from libcpp cimport vector 

10  

11ctypedef int64_t extent_t 

12ctypedef int64_t stride_t 

13ctypedef int32_t axis_t 

14  

15ctypedef uint64_t axes_mask_t # MUST be exactly STRIDED_LAYOUT_MAX_NDIM bits wide 

16ctypedef uint32_t property_mask_t 

17  

18ctypedef vector.vector[stride_t] extents_strides_t 

19ctypedef vector.vector[axis_t] axis_vec_t 

20  

21from cuda.core._utils cimport cuda_utils 

22  

23  

24ctypedef fused integer_t: 

25 int64_t 

26 int32_t 

27  

28  

29cdef extern from "_include/layout.hpp": 

30  

31 cdef int STRIDED_LAYOUT_MAX_NDIM 

32 cdef axes_mask_t AXES_MASK_ALL 

33 int64_t _c_abs(int64_t x) nogil 

34 void _order_from_strides(axis_vec_t& indices, extent_t* extent_t, stride_t* stride_t, int ndim) except + nogil 

35 void _swap(extents_strides_t &a, extents_strides_t &b) noexcept nogil 

36 void _swap(int64_t* a, int64_t* b) noexcept nogil 

37 void _swap(int a, int b) noexcept nogil 

38 void _swap(axis_vec_t &a, axis_vec_t &b) noexcept nogil 

39  

40  

41cdef enum OrderFlag: 

42 ORDER_NONE = 0 

43 ORDER_C = 1 

44 ORDER_F = 2 

45 ORDER_PERM = 3 

46  

47  

48cdef enum Property: 

49 PROP_IS_UNIQUE = 1 << 0 

50 PROP_IS_CONTIGUOUS_C = 1 << 1 

51 PROP_IS_CONTIGUOUS_F = 1 << 2 

52 PROP_IS_CONTIGUOUS_ANY = 1 << 3 

53 PROP_IS_DENSE = 1 << 4 

54 PROP_OFFSET_BOUNDS = 1 << 5 

55 PROP_REQUIRED_SIZE_IN_BYTES = 1 << 6 

56 PROP_SHAPE = 1 << 7 

57 PROP_STRIDES = 1 << 8 

58 PROP_STRIDES_IN_BYTES = 1 << 9 

59 PROP_STRIDE_ORDER = 1 << 10 

60 PROP_VOLUME = 1 << 11 

61  

62  

63cdef struct BaseLayout: 

64 # A struct holding the shape and strides for the layout. 

65 # Use ``init_base_layout`` to initialize the layout, it will 

66 # set the ``shape`` and ``strides`` pointers to point to 

67 # ndim contigious integer arrays. 

68 # The ``shape`` pointer must not be NULL, the ``strides`` can be 

69 # set to NULL by the user to indicate C-contiguous layout. 

70 # Uses single _mem allocation to reduce overhead 

71 # (allocation and exceptions checks). 

72  

73 extents_strides_t _mem 

74 extent_t* shape 

75 stride_t* strides 

76 int ndim 

77  

78  

79@cython.final 

80cdef class _StridedLayout: 

81  

82 # Definition 

83 cdef: 

84 BaseLayout base 

85  

86 readonly: 

87 int itemsize 

88 stride_t slice_offset 

89  

90 # Lazy properties computed from the defining values. 

91 cdef: 

92 # Set to 0 to invalidate all properties, 

93 # whenever a defining value is changed 

94 property_mask_t _prop_mask 

95  

96 # C and Python properties 

97 property_mask_t _boolean_props 

98 int64_t _required_size_in_bytes 

99 stride_t _min_offset 

100 stride_t _max_offset 

101 int64_t _volume 

102  

103 # Python properties 

104 tuple _py_shape 

105 tuple _py_strides 

106 tuple _py_strides_in_bytes 

107 tuple _py_stride_order 

108  

109 # ============================== 

110 # Initialization 

111 # ============================== 

112  

113 cdef inline int _init(_StridedLayout self, BaseLayout& base, int itemsize, bint divide_strides=False) except -1 nogil: 

114 if itemsize <= 0: 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe5i4iqioipimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+h}hli7iti2idiOhPhQhRh^h_h

115 raise ValueError("itemsize must be positive") 

116  

117 if base.strides != NULL and divide_strides: 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe5i4iqioipimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+h}hli7iti2idiOhPhQhRh^h_h

118 _divide_strides(base, itemsize) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijiki6ili7iti

119  

120 self.itemsize = itemsize 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe5i4iqioipimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+h}hliti2idiOhPhQhRh^h_h

121 self.slice_offset = 0 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe5i4iqioipimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+h}hliti2idiOhPhQhRh^h_h

122  

123 _swap_layout(self.base, base) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe5i4iqioipimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+h}hliti2idiOhPhQhRh^h_h

124 return 0 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe5i4iqioipimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+h}hliti2idiOhPhQhRh^h_h

125  

126 cdef inline stride_t _init_dense(_StridedLayout self, BaseLayout& base, int itemsize, OrderFlag order_flag, axis_vec_t* stride_order=NULL) except -1 nogil: 

127 if itemsize <= 0: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

128 raise ValueError("itemsize must be positive") 

129  

130 cdef stride_t volume 

131 if order_flag == ORDER_C: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

132 volume = _dense_strides_c(base) 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniei~haimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

133 elif order_flag == ORDER_F: 

134 volume = _dense_strides_f(base) 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhPgBhGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

135 elif order_flag == ORDER_PERM: 

136 if stride_order == NULL: 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

137 raise ValueError("stride_order is required for ORDER_PERM") 

138 volume = _dense_strides_in_order(base, deref(stride_order)) 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

139 else: 

140 raise ValueError("The stride_order must be 'C', 'F', or a permutation.") 

141  

142 self.itemsize = itemsize 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

143 self.slice_offset = 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

144 _swap_layout(self.base, base) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

145 self._volume = volume 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

146 _mark_property_valid(self, PROP_VOLUME) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

147 return 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

148  

149 cdef inline int init_from_ptr(_StridedLayout self, int ndim, extent_t* shape, stride_t* strides, int itemsize, bint divide_strides=False) except -1 nogil: 

150 cdef BaseLayout base 

151 _init_base_layout_from_ptr(base, ndim, shape, strides) 23iuiviwiZixiyiziAi0iBiCiDiEi1iFi2iOhPhQhRh^h_h

152 return self._init(base, itemsize, divide_strides) 23iuiviwiZixiyiziAi0iBiCiDiEi1iFi2iOhPhQhRh^h_h

153  

154 cdef inline int init_dense_from_ptr(_StridedLayout self, int ndim, extent_t* shape, int itemsize, OrderFlag order_flag, axis_vec_t* stride_order=NULL) except -1 nogil: 

155 cdef BaseLayout base 

156 _init_base_layout_from_ptr(base, ndim, shape, NULL) 2OgugPgbb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cib

157 return self._init_dense(base, itemsize, order_flag, stride_order) 2OgugPgbb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cib

158  

159 cdef inline int init_from_tuple(_StridedLayout self, tuple shape, tuple strides, int itemsize, bint divide_strides=False) except -1: 

160 cdef BaseLayout base 

161 _init_base_layout_from_tuple(base, shape, strides) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe5i4iqioipimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+h}hli7itidi

162 return self._init(base, itemsize, divide_strides) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe5i4iqioipimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+h}hli7itidi

163  

164 cdef inline int init_dense_from_tuple(_StridedLayout self, tuple shape, int itemsize, object stride_order) except -1: 

165 cdef axis_vec_t stride_order_vec 

166 cdef OrderFlag order_flag = _stride_order2vec(stride_order_vec, stride_order) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

167  

168 if order_flag == ORDER_NONE: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

169 raise ValueError(f"The stride_order must be 'C', 'F', or a permutation tuple. Got: {stride_order}") 

170  

171 cdef BaseLayout base 

172 _init_base_layout_from_tuple(base, shape, None) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

173 return self._init_dense(base, itemsize, order_flag, &stride_order_vec) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

174  

175 # ============================== 

176 # Properties 

177 # ============================== 

178  

179 cdef inline tuple get_shape_tuple(_StridedLayout self): 

180 if not _has_valid_property(self, PROP_SHAPE): 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+hlitiOhPhQhRh^h_h

181 self._py_shape = cuda_utils.carray_integer_t_to_tuple(self.base.shape, self.base.ndim) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+hlitiOhPhQhRh^h_h

182 _mark_property_valid(self, PROP_SHAPE) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+hlitiOhPhQhRh^h_h

183 return self._py_shape 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h)h*h+hlitiOhPhQhRh^h_h

184  

185 cdef inline tuple get_strides_tuple(_StridedLayout self): 

186 if not _has_valid_property(self, PROP_STRIDES): 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,h-hHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: NhIh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h+h}hliti^h_h

187 if self.base.strides == NULL: 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,h-hHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: NhIh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h+h}hliti^h_h

188 self._py_strides = None 2Ld%gPfScTc.cccDcmcEcMbFcGcncXgdccb+ ' dbGhObAbebBbCbDbPbhfjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bSfTf(gUfMh,h-hHhqfVdZfQg0fZcYgecfcgchcMcZgEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: NhIh.h0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gcd)g1f(dUg#gNcTgOc)c*cPc_c,g)d:cmb+c*d;c,c-chhugahih4 ygzgrg%fO d Wf~ acq Qc- s 'fv t l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ib-e.e-gyczcAcBcCckfGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_bZi0i1iGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiXiYiViWi}h

189 else: 

190 self._py_strides = cuda_utils.carray_integer_t_to_tuple(self.base.strides, self.base.ndim) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwixiyiziAiBiCiDiEiFigihiiijikiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h+hliti^h_h

191 _mark_property_valid(self, PROP_STRIDES) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,h-hHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: NhIh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h+h}hliti^h_h

192 return self._py_strides 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,h-hHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: NhIh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h+h}hliti^h_h

193  

194 cdef inline int get_strides_in_bytes(_StridedLayout self, extents_strides_t& strides) except -1 nogil: 

195 if self.base.strides != NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

196 strides.resize(self.base.ndim) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

197 for i in range(self.base.ndim): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

198 strides[i] = _overflow_checked_mul(self.base.strides[i], self.itemsize) 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

199 return 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

200  

201 cdef inline tuple get_strides_in_bytes_tuple(_StridedLayout self): 

202 if _has_valid_property(self, PROP_STRIDES_IN_BYTES): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

203 return self._py_strides_in_bytes 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gkglgifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(cch9fdhpgcdqgjhkh!f]e.f(d/fvfeh*g^eNc=gOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

204 cdef extents_strides_t strides 

205 if self.base.strides == NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

206 self._py_strides_in_bytes = None 2Ld%gPfScTc.cccDcmcEcMbFcGcncXgdccb+ ' dbGhObAbebBbCbDbPbhfjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bSfTf(gUfMh,h-hHhqfVdZfQg0fZcYgecfcgchcMcZgEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: NhIh.h0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gcd)g1f(dUg#gNcTgOc)c*cPc_c,g)d:cmb+c*d;c,c-chhugahih4 ygzgrg%fO d Wf~ acq Qc- s 'fv t l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ib-e.e-gyczcAcBcCckfGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

207 else: 

208 self.get_strides_in_bytes(strides) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

209 self._py_strides_in_bytes = cuda_utils.carray_integer_t_to_tuple(strides.data(), strides.size()) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

210 _mark_property_valid(self, PROP_STRIDES_IN_BYTES) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

211 return self._py_strides_in_bytes 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

212  

213 cdef inline int64_t get_volume(_StridedLayout self) except -1 nogil: 

214 if not _has_valid_property(self, PROP_VOLUME): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi)h*h}hli2idiOhPhQhRh^h_h

215 self._volume = _volume(self.base) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi)h*h}hli2idiOhPhQhRh^h_h

216 _mark_property_valid(self, PROP_VOLUME) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi)h*h}hli2idiOhPhQhRh^h_h

217 return self._volume 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi)h*h}hli2idiOhPhQhRh^h_h

218  

219 cdef inline int get_stride_order(_StridedLayout self, axis_vec_t& stride_order) except -1 nogil: 

220 _order_from_strides(stride_order, self.base.shape, self.base.strides, self.base.ndim) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

221 return 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

222  

223 cdef inline tuple get_stride_order_tuple(_StridedLayout self): 

224 if _has_valid_property(self, PROP_STRIDE_ORDER): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

225 return self._py_stride_order 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdqereYgecfcgcse/ghcte:gZgWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!blb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbAfBf/crfCfsftf[c'cDfEf]cFfufGf^cHf(c9fcd!f]e^eNc`e*e{ePc|e}e2f3f_c,gshth#f$f)d`cmb{cJfVf+cKfLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrgwd# |fxd%fd }f, Wfsb[fA ac5 ~f:fw ag- . tbs 'fv $ K (bfg] t l b C ggub^ vbD ydTeE _ ) P wbx R ( *bhgF G xbX (fvcc * igy ` T VeH Y We)fh I j wcXeYeZ { / ybzb| 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

226 cdef axis_vec_t stride_order 

227 self.get_stride_order(stride_order) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

228 self._py_stride_order = cuda_utils.carray_integer_t_to_tuple(stride_order.data(), stride_order.size()) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

229 _mark_property_valid(self, PROP_STRIDE_ORDER) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

230 return self._py_stride_order 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

231  

232 cdef inline bint get_is_unique(_StridedLayout self) except -1 nogil: 

233 if _has_valid_property(self, PROP_IS_UNIQUE): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

234 return _boolean_property(self, PROP_IS_UNIQUE) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eXg.gnhGh9cOb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYczfQf$c@eLcRfmgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVdqereYgecfcgcse/ghcte:gZgWbWdXbYbXdYdZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!blb#d#b$d@c$bFhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gvdrb,gshth#f$f)dJfVf+cLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg# |f%f}fWf[f5 ~f:fags 'f$ K (bfgt l gg_ R ( *bhg(fig)fxcZe0ebgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfbfcfRc

235 if self.base.strides == NULL or self.get_volume() == 0: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

236 return _set_boolean_property(self, PROP_IS_UNIQUE, True) 2Ld%gPfScTc.cccDcmcEcMbFcGcncXgdccb+ ' dbnhGhObAbebBbCbDbPbhfjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bSfTf(gUfMh,hEhCh-hJhKhHhqfVd$gZfQgkglg0fZcYgecfcgchcMcZgEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: FhNhIhDhLh.h0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gpgcdqg)g1f(dUg#gNcTgOc)c*cPc_c,g)d~e:cafmb+c*d;c,c-chhugahih4 ygzgrg%fO d Wf~ acq Qc- s 'fv t l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ib-e.e-gyczcAcBcCckfGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

237 cdef axis_vec_t stride_order 

238 self.get_stride_order(stride_order) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

239 return _set_boolean_property(self, PROP_IS_UNIQUE, _is_unique(self.base, stride_order)) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

240  

241 cdef inline bint get_is_contiguous_c(_StridedLayout self) except -1 nogil: 

242 if _has_valid_property(self, PROP_IS_CONTIGUOUS_C): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

243 return _boolean_property(self, PROP_IS_CONTIGUOUS_C) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

244 return _set_boolean_property(self, PROP_IS_CONTIGUOUS_C, _is_contiguous_c(self.get_volume(), self.base)) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

245  

246 cdef inline bint get_is_contiguous_f(_StridedLayout self) except -1 nogil: 

247 if _has_valid_property(self, PROP_IS_CONTIGUOUS_F): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

248 return _boolean_property(self, PROP_IS_CONTIGUOUS_F) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

249 return _set_boolean_property(self, PROP_IS_CONTIGUOUS_F, _is_contiguous_f(self.get_volume(), self.base)) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

250  

251 cdef inline bint get_is_contiguous_any(_StridedLayout self) except -1 nogil: 

252 if _has_valid_property(self, PROP_IS_CONTIGUOUS_ANY): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

253 return _boolean_property(self, PROP_IS_CONTIGUOUS_ANY) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

254 cdef axis_vec_t stride_order 

255 self.get_stride_order(stride_order) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

256 return _set_boolean_property(self, PROP_IS_CONTIGUOUS_ANY, _is_contiguous_any(self.get_volume(), self.base, stride_order)) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

257  

258 cdef inline bint get_is_dense(_StridedLayout self) except -1 nogil: 

259 if _has_valid_property(self, PROP_IS_DENSE): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

260 return _boolean_property(self, PROP_IS_DENSE) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVdifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9g~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

261 return _set_boolean_property(self, PROP_IS_DENSE, self.slice_offset == 0 and self.get_is_contiguous_any()) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

262  

263 cdef inline int get_offset_bounds(_StridedLayout self, stride_t& min_offset, stride_t& max_offset) except -1 nogil: 

264 if _has_valid_property(self, PROP_OFFSET_BOUNDS): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

265 min_offset = self._min_offset 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

266 max_offset = self._max_offset 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

267 return 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

268 cdef int ndim = self.base.ndim 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

269 cdef stride_t stride 

270 cdef extent_t extent 

271 min_offset = self.slice_offset 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

272 max_offset = self.slice_offset 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

273 if self.base.strides == NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

274 max_offset = _overflow_checked_sum(max_offset, self.get_volume() - 1) 2XgGhObPbkehhahihygzgrg%fWf'f(f)f-gkf)h*h}hdi

275 else: 

276 for i in range(ndim): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8c.gdcjeVccbNbnb+ ' Wcdbnh9cddAbedfdgdXcebBbCbDb!cjghf|cjbu a kbnfwfofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cyhxhzhOguguhAhPgBhGgbb4 HgIgJgCgfbDg} wd# |fxdO d }fV , ~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs v $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX vcc * igy ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erhegXfveycwexeyezcAczeAeBcCcBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+hOhPhQhRh

277 stride = self.base.strides[i] # can be negative 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdbnh9cddAbedfdgdXcebBbCbDb!cjghf|cjbu a kbnfwfofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMhEhChHh;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]evf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{cJfVf+c;cKf4fLf,cMfNfOf-cGgbb4 HgIgJgCgfbDg} wd# |fxdO d }fV , ~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs v $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX vcc * igy ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCcBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h|h`h{h)h*h+hOhPhQhRh

278 extent = self.base.shape[i] # must be non-negative 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdbnh9cddAbedfdgdXcebBbCbDb!cjghf|cjbu a kbnfwfofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMhEhChHh;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]evf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{cJfVf+c;cKf4fLf,cMfNfOf-cGgbb4 HgIgJgCgfbDg} wd# |fxdO d }fV , ~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs v $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX vcc * igy ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCcBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h|h`h{h)h*h+hOhPhQhRh

279 if extent == 0: 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdbnh9cddAbedfdgdXcebBbCbDb!cjghf|cjbu a kbnfwfofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMhEhChHh;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]evf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{cJfVf+c;cKf4fLf,cMfNfOf-cGgbb4 HgIgJgCgfbDg} wd# |fxdO d }fV , ~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs v $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX vcc * igy ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCcBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h|h`h{h)h*h+hOhPhQhRh

280 min_offset = 0 2nhMhEhChHhZfkglg0fFhNhIhDhpgqg1f~e:caf

281 max_offset = -1 # empty range 2nhMhEhChHhZfkglg0fFhNhIhDhpgqg1f~e:caf

282 return 0 2nhMhEhChHhZfkglg0fFhNhIhDhpgqg1f~e:caf

283 if stride <= 0: 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdbnh9cddAbedfdgdXcebBbCbDb!cjghf|cjbu a kbnfwfofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfChHh;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: IhDh%d%b'd'b~cadobpbbdqbudFbvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]evf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c#f$f)d`cmb{cJfVf+c;cKf4fLf,cMfNfOf-cGgbb4 HgIgJgCgfbDg} wd# |fxdO d }fV , ~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs v $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX vcc * igy ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCcBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h|h`h{h)h*h+hOhPhQhRh

284 min_offset = _overflow_checked_sum(min_offset, _overflow_checked_mul(stride, (extent - 1))) 2vg5fwgLd6fPfdfefffScgfTcccMdNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eVccbWcdbnhddAbedfdgdXcebBbCbDbPd}cChHhIhDh~cadobpbbdqbudFbAfBf/crfsftf[c'cEf]cFfufGfHf(c2f3f_c`cmb{czdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b|hQhRh

285 else: 

286 max_offset = _overflow_checked_sum(max_offset, _overflow_checked_mul(stride, (extent - 1))) 2.clfccMdmfNdmc;eMb2eOd=e3eFc5enc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cddAbedfdgdXcebBbCbDb!cjghf|cjbu a kbnfwfofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbvdrb?fSe@fuerfCf,fsftf'cDf-fuf^c(c9fcd!f]evf^eNcOc)c_e`e*e{e*cPcIf|e}e#f$f)d`cmb{cJfVf+c;cKf4fLf,cMfNfOf-cGgbb4 HgIgJgCgfbDg} wd# |fxdO d }fV , ~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs v $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX vcc * igy ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCcBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h|h`h{h)h*h+hOhPhQhRh

287 self._min_offset = min_offset 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

288 self._max_offset = max_offset 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

289 _mark_property_valid(self, PROP_OFFSET_BOUNDS) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

290 return 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

291  

292 cdef inline int64_t get_required_size_in_bytes(_StridedLayout self) except? -1 nogil: 

293 if _has_valid_property(self, PROP_REQUIRED_SIZE_IN_BYTES): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

294 return self._required_size_in_bytes 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b+h

295 cdef stride_t min_offset = 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

296 cdef stride_t max_offset = 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

297 self.get_offset_bounds(min_offset, max_offset) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

298 if min_offset < 0: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh

299 raise ValueError( 2|h

300 f"Allocation size for a layout that maps elements " 2|h

301 f"to negative memory offsets is ambiguous. " 

302 f"The layout's min_offset is {min_offset}." 2|h

303 ) 

304 if max_offset < min_offset: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMhEhChHhxgqf;fVdZfkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: FhNhIhDh%d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fpgcdqg1f!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h}hdiOhPhQhRh

305 return 0 2nhGhMhEhChHhZfkglg0fFhNhIhDhpgqg1f~e:caf

306 cdef int64_t required_size_in_bytes = _overflow_checked_sum(max_offset, 1) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h}hdiOhPhQhRh

307 self._required_size_in_bytes = _overflow_checked_mul(required_size_in_bytes, self.itemsize) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h}hdiOhPhQhRh

308 _mark_property_valid(self, PROP_REQUIRED_SIZE_IN_BYTES) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h}hdiOhPhQhRh

309 return self._required_size_in_bytes 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdicQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb#d%c#b$d@c$bhb~b: %d%b'd'b~cadobpbbdqbudFbvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c9fcd!f]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d`cmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h}hdiOhPhQhRh

310  

311 cdef inline int64_t get_slice_offset_in_bytes(_StridedLayout self) except? -1 nogil: 

312 return _overflow_checked_mul(self.slice_offset, self.itemsize) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h)h*h}hdiOhPhQhRh^h_h

313  

314 cdef axes_mask_t get_flattened_axis_mask(_StridedLayout self) except? -1 nogil 

315 cdef int get_max_compatible_itemsize(_StridedLayout self, int max_itemsize, intptr_t data_ptr, int axis=*) except -1 nogil 

316  

317 # ============================== 

318 # Layout manipulation 

319 # ============================== 

320  

321  

322 cdef int reshape_into(_StridedLayout self, _StridedLayout out_layout, BaseLayout& new_shape) except -1 nogil 

323 cdef int permute_into(_StridedLayout self, _StridedLayout out_layout, axis_vec_t& axis_order) except -1 nogil 

324  

325 cdef int flatten_into(_StridedLayout self, _StridedLayout out_layout, axes_mask_t axis_mask) except -1 nogil 

326 cdef int squeeze_into(_StridedLayout self, _StridedLayout out_layout) except -1 nogil 

327 cdef int unsqueeze_into(_StridedLayout self, _StridedLayout out_layout, axis_vec_t& axis_vec) except -1 nogil 

328 cdef int broadcast_into(_StridedLayout self, _StridedLayout out_layout, BaseLayout& broadcast) except -1 nogil 

329 cdef int pack_into(_StridedLayout self, _StridedLayout out_layout, int itemsize, intptr_t data_ptr, bint keep_dim, int axis=*) except -1 nogil 

330 cdef int unpack_into(_StridedLayout self, _StridedLayout out_layout, int itemsize, int axis=*) except -1 nogil 

331 cdef int slice_into(_StridedLayout self, _StridedLayout out_layout, tuple slices) except -1 

332  

333# ============================== 

334# Base layout helpers 

335# ============================== 

336  

337  

338cdef inline int init_base_layout(BaseLayout& layout, int ndim) except -1 nogil: 

339 if ndim > STRIDED_LAYOUT_MAX_NDIM: 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

340 raise ValueError(f"Unsupported number of dimensions: {ndim}. Max supported ndim is {STRIDED_LAYOUT_MAX_NDIM}") 

341 # resize(0) is no op, that results in _mem.data() being NULL, 

342 # which would make it tricky to distinguish between strides == NULL 

343 # and strides == tuple() 

344 layout._mem.resize(2 * max(ndim, 1)) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

345 layout.shape = layout._mem.data() 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

346 layout.strides = layout._mem.data() + ndim 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

347 layout.ndim = ndim 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

348 return 0 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

349  

350  

351cdef inline int trim_base_layout(BaseLayout& layout, int ndim) except -1 nogil: 

352 if ndim > layout.ndim: 2VccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbEbtdWbWdXbYbXdYdZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb7f8f#d#b$d@cEg$bFg~b: %d%b'd'b~cadobpbsgbdRgqbudSgFbtgvdrb]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cOhPh

353 raise AssertionError(f"Cannot trim layout to {ndim} dimensions, it has {layout.ndim} dimensions") 

354 layout.ndim = ndim 2VccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbEbtdWbWdXbYbXdYdZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb7f8f#d#b$d@cEg$bFg~b: %d%b'd'b~cadobpbsgbdRgqbudSgFbtgvdrb]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cOhPh

355 return 0 2VccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbEbtdWbWdXbYbXdYdZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb7f8f#d#b$d@cEg$bFg~b: %d%b'd'b~cadobpbsgbdRgqbudSgFbtgvdrb]e.f(d/fvf^eNcOc)c_e`e*e{e*cPcIf|e}e~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cOhPh

356  

357  

358cdef inline void _swap_layout(BaseLayout& a, BaseLayout& b) noexcept nogil: 

359 _swap(a._mem, b._mem) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hliti2idiOhPhQhRh^h_h

360 _swap(a.shape, b.shape) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hliti2idiOhPhQhRh^h_h

361 _swap(a.strides, b.strides) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hliti2idiOhPhQhRh^h_h

362 _swap(a.ndim, b.ndim) 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hliti2idiOhPhQhRh^h_h

363  

364  

365cdef inline void _assure_strides_ptr(BaseLayout& base) noexcept nogil: 

366 if base.strides == NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

367 base.strides = base._mem.data() + base._mem.size() // 2 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

368  

369  

370cdef inline stride_t *get_strides_ptr(BaseLayout& base) except? NULL nogil: 

371 if base.strides != NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8edcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepeqieifi~hoipiaibicimgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: %d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqg1f!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-c} wdxdO d V , ~ sbkc+eA aclcw 6 q Qc- ,e. abtbv [ ] b ucB C f ub^ )bgbvbD ydTeE ) r ; W P wbQ Uebcx F G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegveycwexeyezcAczeAeBcCcBeCeDeEezdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b)h*h2iOhPhQhRh^h_h

372 return base.strides 2vglh5fwgmh6fdfefffgflfMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8edcjeVccbNbnb+ ' Wcdbnh9cddAbedfdgdXcebBbCbDb!c|cu a kbnfwfofxf#cpfyfYcPd}czfQf$c@eLcRfohph*f+fhdid9e!ejd#ekdld$e%emdndFeodGe'eHeRdIeJeSdpdKeLe(eMeqd)erdNeOesdPeTdUdlemeneoepeeifi~haibicimgngghogSfTf(gUfxgqf;fVd$gkglgifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: %d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh?f@fAfBf/crfCf,fsftf'cDfEf-fFfufGfHf(cch9fdhpgcdqg!f]e.f/fvfeh*g^e=gfh+g_e?g`e*e{e*cIf|e}e2f3fshth#f$f~e:c`cafmb{c`fJfVf{f*d;cKf4fLfMfNfOf} wdxdV , sbkc+eA lcw 6 ,e. abtb[ ] ub^ )bgbvbD ydTeE P wbQ Uebcx F G xbX y ` S T L jfVeH Y WeXeYe% Z { / ybzb| 0 1 J 2 1c7 ? M ZeU 8 0e3 9 @ N ! 2cbgcgdgegvewexeyezeAeBeCeDeEezdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bHdIdcedeeefeJdgeheieKd_b)h*h2iOhPhQhRh^h_h

373 cdef stride_t* tmp_strides = base._mem.data() + base._mem.size() // 2 2Ld%gPfScTc.cccDcmcEcMbFcGcncdccb+ ' dbGhObAbebBbCbDbPbjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bqioipiqfVdZfQg0fZcecfcgchcMcEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: %b'bobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gcd1f(dUg#gNcTgOc)c*cPc_c,g)d:cmb+c*d;c,c-cO d ~ acq Qc- v b ucB C f ) r ; W vcc * h I i j wck = 0cm n e xco p z g ib-e.eyczcAcBcCcGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

374 _dense_strides_c_ptrs(base.ndim, base.shape, tmp_strides) 2Ld%gPfScTc.cccDcmcEcMbFcGcncdccb+ ' dbGhObAbebBbCbDbPbjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bqioipiqfVdZfQg0fZcecfcgchcMcEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: %b'bobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gcd1f(dUg#gNcTgOc)c*cPc_c,g)d:cmb+c*d;c,c-cO d ~ acq Qc- v b ucB C f ) r ; W vcc * h I i j wck = 0cm n e xco p z g ib-e.eyczcAcBcCcGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

375 return tmp_strides 2Ld%gPfScTc.cccDcmcEcMbFcGcncdccb+ ' dbGhObAbebBbCbDbPbjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bqioipiqfVdZfQg0fZcecfcgchcMcEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: %b'bobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gcd1f(dUg#gNcTgOc)c*cPc_c,g)d:cmb+c*d;c,c-cO d ~ acq Qc- v b ucB C f ) r ; W vcc * h I i j wck = 0cm n e xco p z g ib-e.eyczcAcBcCcGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

376  

377  

378cdef inline bint _base_layout_equal(BaseLayout& a, BaseLayout& b) noexcept nogil: 

379 if a.ndim != b.ndim: 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObXceb!cPbjghf|cjbu a kbShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h

380 return False 

381 for i in range(a.ndim): 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObXceb!cPbjghf|cjbu a kbShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h

382 if a.shape[i] != b.shape[i]: 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObXceb!cPbjghf|cjbu a kbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h

383 return False 

384 if a.strides != NULL or b.strides != NULL: 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObXceb!cPbjghf|cjbu a kbShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h

385 if a.strides == NULL or b.strides == NULL: 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObXceb!cPbjghf|cjbu a kbShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h

386 return False 

387 for i in range(a.ndim): 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObXceb!cPbjghf|cjbu a kbShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h

388 if a.strides[i] != b.strides[i]: 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObXceb!cPbjghf|cjbu a kbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h

389 return False 

390 return True 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObXceb!cPbjghf|cjbu a kbShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h

391  

392  

393@cython.overflowcheck(True) 

394cdef inline int64_t _volume(BaseLayout& base) except? -1 nogil: 

395 cdef int64_t vol = 1 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi)h*h}hli2idiOhPhQhRh^h_h

396 for i in range(base.ndim): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi)h*h}hli2idiOhPhQhRh^h_h

397 vol *= base.shape[i] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiViWi)h*h}hli2idiOhPhQhRh^h_h

398 return vol 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi)h*h}hli2idiOhPhQhRh^h_h

399  

400  

401cdef inline int _divide_strides(BaseLayout& base, int itemsize) except -1 nogil: 

402 cdef stride_t stride 

403 if base.strides == NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijiki6ili7iti

404 raise ValueError("cannot divide strides, layout has no strides") 

405 for i in range(base.ndim): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijiki6ili7iti

406 stride = base.strides[i] // itemsize 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijiki6ili7iti

407 if stride * itemsize != base.strides[i]: 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijiki6ili7iti

408 raise ValueError("strides must be divisible by itemsize") 26i7i

409 base.strides[i] = stride 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijikiliti

410 return 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijikiliti

411  

412  

413cdef inline void _zero_strides_ptr(int ndim, stride_t* strides) noexcept nogil: 

414 for i in range(ndim): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8enhGhmgngghogSfTf(gUfMhEhChJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh%d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbpgqg1f~e:caf

415 strides[i] = 0 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8enhGhmgngogSfTfUfMhEhChJhKhHh;fVd$gZfQgkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh%d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbpgqg1f~e:caf

416  

417  

418cdef inline void _zero_strides(BaseLayout& base) noexcept nogil: 

419 _assure_strides_ptr(base) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8emgngghogSfTf(gUfMhEhChHhxgqf;fVd$gZfQgkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDh%d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbpgqg1f~e:caf

420 _zero_strides_ptr(base.ndim, base.strides) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8emgngghogSfTf(gUfMhEhChHhxgqf;fVd$gZfQgkglg0fifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDh%d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbpgqg1f~e:caf

421  

422  

423cdef inline stride_t _dense_strides_c_ptrs(int ndim, extent_t* shape, stride_t* strides) except? -1 nogil: 

424 cdef stride_t stride = 1 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniqiei~hoipiaimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

425 cdef int i = ndim - 1 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniqiei~hoipiaimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

426 while i >= 0: 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniqiei~hoipiaimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

427 strides[i] = stride 2dfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7edcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLc+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boepeniqiei~hoipiaiEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-cbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUhVhWhXh4h5h6h7h8h9h`h{h)h+h

428 stride = _overflow_checked_mul(stride, shape[i]) 2dfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7edcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLc+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boepeniqiei~hoipiaiEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-cbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUhVhWhXh4h5h6h7h8h9h`h{h)h+h

429 i -= 1 2dfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7edcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLc+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boepeniqiei~hoipiaiEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-cbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUhVhWhXh4h5h6h7h8h9h`h{h)h+h

430 if stride == 0: 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniqiei~hoipiaimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

431 _zero_strides_ptr(ndim, strides) 2nhGhEhChJhKhFhDhLh

432 return stride 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniqiei~hoipiaimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

433  

434  

435cdef inline stride_t _dense_strides_c(BaseLayout& base) except? -1 nogil: 

436 cdef int ndim = base.ndim 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniei~haimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

437 _assure_strides_ptr(base) 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniei~haimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

438 return _dense_strides_c_ptrs(ndim, base.shape, base.strides) 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniei~haimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhOgugahuhAhihbb4 ygHgJgCgzgrg} wd%fO d }fV Wf~ sbkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

439  

440  

441cdef inline stride_t _dense_strides_f(BaseLayout& base) except? -1 nogil: 

442 cdef int ndim = base.ndim 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhPgBhGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

443 _assure_strides_ptr(base) 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhPgBhGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

444 cdef stride_t stride = 1 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhPgBhGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

445 cdef int i = 0 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhPgBhGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

446 while i < ndim: 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhPgBhGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

447 base.strides[i] = stride 2ffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRf*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenemifibici?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3f#f`cafVf{fKfMfNfGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2cvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h1h2h3h!h#h$h%h'h(h*h

448 stride = _overflow_checked_mul(stride, base.shape[i]) 2ffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRf*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenemifibici?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3f#f`cafVf{fKfMfNfGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2cvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h1h2h3h!h#h$h%h'h(h*h

449 i += 1 2ffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRf*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenemifibici?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3f#f`cafVf{fKfMfNfGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2cvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h1h2h3h!h#h$h%h'h(h*h

450 if stride == 0: 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhPgBhGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

451 _zero_strides(base) 

452 return stride 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhPgBhGgIgfbDg# |fxd, ~ sb[fkc+eA lcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

453  

454  

455cdef inline stride_t _dense_strides_in_order(BaseLayout& base, axis_vec_t& stride_order) except? -1 nogil: 

456 cdef int ndim = base.ndim 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

457 if <size_t>ndim != stride_order.size(): 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

458 raise ValueError(f"stride_order must have the same length as shape. Shape has {ndim} dimensions, but stride_order has {stride_order.size()} elements.") 

459 _assure_strides_ptr(base) 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

460 cdef stride_t stride = 1 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

461 cdef int i = ndim - 1 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

462 cdef axes_mask_t axis_order_mask = 0 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

463 cdef axes_mask_t axis_mask 

464 cdef axis_t axis 

465 while i >= 0: 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

466 axis = stride_order[i] 2Uc3c4c5c=c6c?c7c8cu a kbbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

467 if not _normalize_axis(axis, ndim): 2Uc3c4c5c=c6c?c7c8cu a kbbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

468 raise ValueError(f"Invalid stride order: axis {axis} out of range for {ndim}D tensor") 

469 axis_mask = _axis2mask(axis) 2Uc3c4c5c=c6c?c7c8cu a kbbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

470 if axis_order_mask & axis_mask: 2Uc3c4c5c=c6c?c7c8cu a kbbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

471 raise ValueError(f"The stride order must be a permutation. Axis {axis} appears multiple times.") 

472 axis_order_mask |= axis_mask 2Uc3c4c5c=c6c?c7c8cu a kbbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

473 base.strides[axis] = stride 2Uc3c4c5c=c6c?c7c8cu a kbbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

474 stride = _overflow_checked_mul(stride, base.shape[axis]) 2Uc3c4c5c=c6c?c7c8cu a kbbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

475 i -= 1 2Uc3c4c5c=c6c?c7c8cu a kbbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

476 if stride == 0: 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

477 _zero_strides(base) 

478 return stride 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

479  

480  

481cdef inline bint _is_contiguous_c(int64_t volume, BaseLayout& base) except -1 nogil: 

482 if volume == 0 or base.strides == NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

483 return True 2Ld%gPfScTc.cccDcmcEcMbFcGcncXgdccb+ ' dbnhGhObAbebBbCbDbPbhfjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bSfTf(gUfMh,hEhCh-hJhKhHhqfVd$gZfQgkglg0fZcYgecfcgchcMcZgEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: FhNhIhDhLh.h0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gpgcdqg)g1f(dUg#gNcTgOc)c*cPc_c,g)d~e:cafmb+c*d;c,c-chhugahih4 ygzgrg%fO d Wf~ acq Qc- s 'fv t l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ib-e.e-gyczcAcBcCckfGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

484 cdef int64_t stride = 1 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

485 cdef int64_t j = base.ndim - 1 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

486 cdef extent_t extent 

487 while j >= 0: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

488 extent = base.shape[j] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

489 if extent != 1: 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

490 if base.strides[j] != stride: 25fLd6fdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

491 return False 25fLd6fdfefffScgfTcccMdNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8e3c5c=c?c7c8cVccbNbnb+ ' WcdbddAbedfdgdXcebBbCbDbu a kbpfyfYcPd}cQfRfhdQbid!ejdkdRbld$emdndSbodGe'eTbHeRdpcIeJeSdpdKeLeqcrcMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepeVgicAgQe]f^f7f8f%c_fLgMgNgEghbFg~b: Kg~cadobpbBgsg=fbdWgRgqbudSgFbtgAfBf/crfCfsftf[c'cDfEf]cFfufGf^cHf(c9fdhpgcdjh!f]e.feh*g^eNc=g`e*e{ePc|e}e2f3f_c`cafmb{cVf{fKfMfwdxdd , sbA acw - . tbv K (bfg] l b C f ub^ )bvbD ydTeE _ ) ; P wbx R ( *bhgF G xbX vcc * y ` T L VeH Y Weh I j wcXeYeZ { / ybzb| 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

492 stride *= extent 2.clfccMdmfNdDc/e:emcEc;eMb2eOdFc?eGcnc7eUc4c5c6cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a nfwfkeofxf#cpfYcPd}czf$c@eLchdHcQbid9ejd#ekdIcJcRbldoc%emdndSbFeodTbRdpcIeJeSdpdKcqcrc(eMeqdUb`brdOesdscPeTdtcVbUd{b|ble}boepe$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c#f$f)d~e:cmb{c`fJf+c*d;c4fLf,cNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvbD ydE _ ) r ; W P wbQ Uebcx R *bF G xb(fvcc * igy ` S T L jfH )fh I i j wcXeYe% / ybzbk = 0c0 1 J m 2 1c? n e xcM ZeU o p z 3 g @ N ibXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_b

493 j -= 1 2vgwgPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd4eFc?e6eGcnc7eUc4c5c6cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfwfkeofxf#cpfyfYcPd}czf$c@eLc*f+fQdhdHcQbid9ejd#ekdIcJcRbldoc%emdndSbFeodGeTbRdpcIeJeSdpdKcqcrc(eMeqdUb`brdOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f3f_c#f$f)d~e:cmb{c`fJf+c{f*d;c4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvbD ydE _ ) r ; W P wbQ Uebcx R *bF G xb(fvcc * igy ` S T L jfH )fh I i j wcXeYe% / ybzbk = 0c0 1 J m 2 1c? n e xcM ZeU o p z 3 g @ N ibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbfGb+b,b-bBd;d=dCdHb[d]d^d_dDdEdIbJbKb.b/b:b;bFd{d|dGdLb=b?b@b[b]b^bRcHdIdcedeeefeJdKd_b

494 return True 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;eMb2eOdFc?eGcnc7ebhUc4c6cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfwfkeofxf#cpfYcPdzf$c@eLcohph'g*f+fQdhdHcQbid9ejd#ekdIcJcRbldoc%emdndSbFeodTbpcIeJeSdpdKcqcrc(eMeqdUb`brdOesdscPetcVb{b|ble}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fcdqg)g1fkh]e.f(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gshth#f$f)d~e:cmb{c`fJf+c{f*d;c4fLf,cNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvbD ydE _ ) r ; W P wbQ Uebcx R *bF G xb(fvcc * igy ` S T L jfH )fh I i j wcXeYe% / ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ N ibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_b

495  

496  

497cdef inline bint _is_contiguous_f(int64_t volume, BaseLayout& base) except -1 nogil: 

498 if volume == 0: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

499 return True 2nhGhMh,hEhCh-hJhKhHh$gZfQgkglg0fFhNhIhDhLh.hpgqg1f~e:caf

500 cdef int ndim = base.ndim 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

501 cdef int64_t j = 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

502 if base.strides == NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

503 # find first non-singleton dimension 

504 while j < ndim and base.shape[j] == 1: 2Ld%gPfScTc.cccDcmcEcMbFcGcncXgdccb+ ' dbObAbebBbCbDbPbhfjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bSfTf(gUfqfVdZfQg0fZcYgecfcgchcMcZgEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: 0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gcd)g1f(dUg#gNcTgOc)c*cPc_c,g)d:cmb+c*d;c,c-chhugahih4 ygzgrg%fO d Wf~ acq Qc- s 'fv t l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ib-e.e-gyczcAcBcCckfGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

505 j += 1 2ScTcObPbLcQd{b|b}bqfVdrb_c+c*d;c,c-c4 ygzgrg

506 # if any subsequent dimension is not a singleton, return False 

507 for i in range(j + 1, ndim): 2Ld%gPfScTc.cccDcmcEcMbFcGcncXgdccb+ ' dbObAbebBbCbDbPbhfjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bSfTf(gUfqfVdZfQg0fZcYgecfcgchcMcZgEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: 0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gcd)g1f(dUg#gNcTgOc)c*cPc_c,g)d:cmb+c*d;c,c-chhugahih4 ygzgrg%fO d Wf~ acq Qc- s 'fv t l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ib-e.e-gyczcAcBcCckfGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

508 if base.shape[i] != 1: 2DcmcEcMbFcGcnccb+ ' dbObAbebBbCbDbPbjba Yc$cLcHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: 0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb!gcd)g1f(dUg#gNcTgOc)c*cPc_c:cmb+c*d;c,c-ct l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ibGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

509 return False 2DcmcEcMbFcGcnccb+ ' dbObAbebBbCbDbPbjba Yc$cLcHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: 0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb!gcd)g1f(dUg#gNcTgOc)c*cPc_c:cmb+c*d;c,ct l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ibGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

510 return True 2Ld%gPfScTc.cccXgdchfke#c'gQdSfTf(gUfqfVdZfQg0fZcYgecfcgchcMcZg;gSeue/c[c'c]c^c(c,g)d-chhugahih4 ygzgrg%fO d Wf~ acq Qc- s 'fv -e.e-gyczcAcBcCckf

511 cdef int64_t stride = 1 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

512 cdef extent_t extent 

513 while j < ndim: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

514 extent = base.shape[j] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

515 if extent != 1: 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

516 if base.strides[j] != stride: 25fLd6fdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

517 return False 25fLd6fdfefffScgfTcccMdNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8e4c5c=c6c?c7cVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbpfYcPd}czf$c@eLchdHcQbid9ejd#ekdIcJcRbldoc%emdndSbFeodTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb`brdNeOesdscPeTdtcVbUd{b|blemene}boepeqereecfcgcsehcteEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbAfBf/crfCfsftf[c'cDfEf]cFfufGf^cHf(c!gch9fcdqg)g1fkh!f]e(dUg#g/fvf^eNcTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c~e:c`cmb{c`fJf+c*d;cKf4fLf,cwdxdd , sbA acw - . tbv $ K (b[ ] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R *bF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

518 stride *= extent 2.clfccMdmfNd1eMbOd=e3e4e5e6e8eUc3c7c8cdcjenb' |cjbu a nfwfkeofxf#cyf}cQf@eRfhdQbid!ejdkdRbld$emdndSbodGe'eTbHeRdSdpdKeLeqdUb)e`brdNesdTdVbUdmene$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdlb@c~b: ?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(cdhpgjh!f.feh*g^e=gOc_e`e*e{e}e3f#f$f)d`cafVf{fKfMfNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv K (b[ fg] l b ucB f ub)bvbD ydTeE _ ) ; wbQ Uebcx R ( *bhgF G xbX c * y S L VeH Y Wei Z { / ybzb| k = J 7 ? e M U 8 0ez 9 g @ N ! 2cXfveycwexeyezcAczeAeBcCckfBeCeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKd

519 j += 1 2vgwgPfdfefffScgfTc.clfccMdmfNd1eMbOd=e3e4e5e6e8eUc3c7c8cdcjenb' 9cOb!cPbjghf|cjbu a nfwfkeofxf#cyf}cQf@eLcRf*f+fQdhdQbid!ejdkdRbld$eocmdndSbFeodGe'eTbHeRdSdpdKeLeqdUb)e`brdNesdTdVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdlb@c~b: vdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(cdhpgjh!f.feh*g^e=gOc_e`e*e{e}e2f3f_c#f$f)d`caf`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv K (b[ fg] l b ucB f ub)bvbD ydTeE _ ) ; wbQ Uebcx R ( *bhgF G xbX c * y S L VeH Y Wei Z { / ybzb| k = J 7 ? e M U 8 0ez 9 g @ N ! 2cbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd-d.d/d:dGbBd?d@dCdHb`dDdEdcfIbJbKbFd}d~daeGdbeLbHdIdJdgeheieKd

520 return True 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNd1eMbOd=e3e4e5e6e8ebhUc3c8cXg.gdcjejghf|cjbu a nfwfkeofxf#cyf}cQf@eRfohph'g*f+fQdhdQbid!ejdkdRbld$emdndSbodGe'eTbHeRdpdKeLeqdUb)erdNesdTdVbUdmenemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdlb@c~b: vhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(cdhpgjh!f.f(d/feh*g^e=gOc_e`e*e{e}e3f,gshth#f$f)d`caf`fVf{f*dKfMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv K (b[ fg] l b ucB f ub)bvbD ydTeE _ ) ; wbQ Uebcx R ( *bhgF G xbX c * y S L VeH Y Wei Z { / ybzb| k = J 7 ? e U 8 0ez 9 @ N ! 2cbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKd

521  

522  

523cdef inline bint _is_contiguous_any(int64_t volume, BaseLayout& base, axis_vec_t& axis_order) except -1 nogil: 

524 if volume == 0 or base.strides == NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

525 return True 2Ld%gPfScTc.cccDcmcEcMbFcGcncXgdccb+ ' dbnhGhObAbebBbCbDbPbhfjba ke#cYc$cLc'gQdHcQbIcJcRbocSbTbpcKcqcrcUb`bsctcVb{b|b}bSfTf(gUfMh,hEhCh-hJhKhHhqfVd$gZfQgkglg0fZcYgecfcgchcMcZgEbWbXbYbicAgZb0b1b2b3b4b5b6b7b8b9b!bjclb]f^f7f8f#b_f$bhb: FhNhIhDhLh.h0g1g2g3g%b4g5g'b6g7g8g9gobpbBgsg=fqbFbtgrb;gSeue/c[c'c]c^c(c!gpgcdqg)g1f(dUg#gNcTgOc)c*cPc_c,g)d~e:cafmb+c*d;c,c-chhugahih4 ygzgrg%fO d Wf~ acq Qc- s 'fv t l b ucB C f _ ) r ; W (fvcc * )fh I i j wck = 0cm n e xco p z g ib-e.e-gyczcAcBcCckfGb+b,b-bHbIbJbKb.b/b:b;bLb=b?b@b[b]b^bRc_b

526 cdef int64_t stride = 1 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

527 cdef int64_t j = base.ndim - 1 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

528 cdef axis_t axis 

529 cdef extent_t extent 

530 while j >= 0: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

531 axis = axis_order[j] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

532 extent = base.shape[axis] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

533 if extent != 1: 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

534 if base.strides[axis] != stride: 25fLd6fdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

535 return False 25fLd6fdfefffScgfTcccMdNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eVccbWcdbddAbedfdgdXcebBbCbDbpfYcPd}cVgicAgQeKg~cadobpbBgsg=fbdWgRgqbudSgFbtgAfBf/crfCfsftf[c'cDfEf]cFfufGf^cHf(c9fcd!f]e^eNc`e*e{ePc|e}e2f3f_c`cmb{cKfwdxdd , sbA acw - . tbv ] b C ub^ vbD ydTeE ) P wbx F G xbX vcc * y ` T VeH Y Weh I j wcXeYeZ { / ybzb| zdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b^h_h

536 stride *= extent 2.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh

537 j -= 1 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh

538 return True 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh

539  

540  

541cdef inline int _validate_shape(BaseLayout& base) except -1 nogil: 

542 for i in range(base.ndim): 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

543 if base.shape[i] < 0: 23ivg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemi4iniqieifi~hoipiaibicimgngogSfTfUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiViWi6iShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

544 raise ValueError("Extents must be non-negative") 

545 return 0 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7iti2idiOhPhQhRh^h_h

546  

547  

548cdef inline int _init_base_layout_from_tuple(BaseLayout& base, tuple shape, tuple strides) except -1: 

549 cdef int ndim = len(shape) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7itidi

550 init_base_layout(base, ndim) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7itidi

551 for i in range(ndim): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7itidi

552 base.shape[i] = shape[i] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemi4iniqieifi~hoipiaibicimgngogSfTfUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiViWi6iShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h|h`h{h)h*h+h}hli7itidi

553 _validate_shape(base) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7itidi

554  

555 if strides is None: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7itidi

556 base.strides = NULL 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h}hdi

557 else: 

558 if len(strides) != ndim: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijiki6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h+hli7iti

559 raise ValueError(f"Strides, if provided, must have the same length as shape. Shape has {ndim} dimensions, but strides has {len(strides)} elements.") 

560 for i in range(ndim): 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijiki6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h+hli7iti

561 base.strides[i] = strides[i] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bgihiiijiki6iShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h|h+hli7iti

562 return 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWi6iShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hli7itidi

563  

564  

565cdef inline int _init_base_layout_from_ptr(BaseLayout& base, int ndim, extent_t* shape, stride_t* strides) except -1 nogil: 

566 init_base_layout(base, ndim) 23iOgugPgbb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cibuiviwiZixiyiziAi0iBiCiDiEi1iFi2iOhPhQhRh^h_h

567 for i in range(ndim): 23iOgugPgbb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cibuiviwiZixiyiziAi0iBiCiDiEi1iFi2iOhPhQhRh^h_h

568 base.shape[i] = shape[i] 23ibb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cibuiviwixiyiziAiBiCiDiEiFi2iOhPhQhRh^h_h

569 _validate_shape(base) 23iOgugPgbb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cibuiviwiZixiyiziAi0iBiCiDiEi1iFi2iOhPhQhRh^h_h

570  

571 if strides == NULL: 23iOgugPgbb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cibuiviwiZixiyiziAi0iBiCiDiEi1iFi2iOhPhQhRh^h_h

572 base.strides = NULL 2OgugPgbb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cibZi0i1i

573 else: 

574 for i in range(ndim): 23iuiviwixiyiziAiBiCiDiEiFi2iOhPhQhRh^h_h

575 base.strides[i] = strides[i] 23iuiviwixiyiziAiBiCiDiEiFi2iOhPhQhRh^h_h

576 return 0 23iOgugPgbb4 fb} wd# xdO d V , ~ sbkc+eA ac5 lcw 6 q Qc- ,e. abtbs v $ K (b[ ] t l b ucB C f ub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bF G xbX vcc * y ` S T L jfVeH Y Weh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e M U 8 o p z 3 9 g @ N ! 2cibuiviwiZixiyiziAi0iBiCiDiEi1iFi2iOhPhQhRh^h_h

577  

578# ============================== 

579# Strided layout helpers 

580# ============================== 

581  

582  

583cdef inline bint _has_valid_property(_StridedLayout self, Property prop) noexcept nogil: 

584 return self._prop_mask & prop 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hliti2idiOhPhQhRh^h_h

585  

586  

587cdef inline void _mark_property_valid(_StridedLayout self, Property prop) noexcept nogil: 

588 self._prop_mask |= prop 23ivglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_buiviwiZixiyiziAi0iBiCiDiEi1iFiGiHiIiJiKiLigiMiNiOiPiQihiiijikiRiSiTiUiXiYiViWiShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hliti2idiOhPhQhRh^h_h

589  

590  

591cdef inline bint _boolean_property(_StridedLayout self, Property prop) noexcept nogil: 

592 return self._boolean_props & prop 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

593  

594  

595cdef inline bint _set_boolean_property(_StridedLayout self, Property prop, bint value) noexcept nogil: 

596 if value: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

597 self._boolean_props |= prop 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh

598 else: 

599 self._boolean_props &= ~prop 25fLd6fdfefffScgfTcccMdNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8e3c4c5c=c6c?c7c8cVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbpfyfYcPd}czfQf$c@eLcRfhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepeqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMf} wdxdO d V , ~ sbkc+eA aclcw 6 q Qc- ,e. abtbv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

600 _mark_property_valid(self, prop) 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

601 return value 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bOhPhQhRh^h_h

602  

603  

604# ============================== 

605# Conversion, validation and normalization helpers 

606# ============================== 

607  

608  

609cdef inline axes_mask_t _axis2mask(axis_t axis) noexcept nogil: 

610 return 1ULL << axis 2Uc3c4c5c=c6c?c7c8cVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbPd}c*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepeqieifi~hoipiaibiciEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: %d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb~e:c`cafmb{cbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegveycwexeyezcAczeAeBcCcBeCeDeEezdAd+d,d-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bHdIdcedeeefeJdgeheieKd_b

611  

612  

613cdef inline axes_mask_t flatten_all_axes_mask(int ndim) noexcept nogil: 

614 if ndim == 0: 2Xg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbhfjba mgngghogSfTf(gUfxgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: %d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb

615 return 0 2Xg.ghfmgngghogSfTf(gUf

616 elif ndim == STRIDED_LAYOUT_MAX_NDIM: 2dcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjba xgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: %d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb

617 return AXES_MASK_ALL 2!cPbvdrb

618 return (1ULL << ndim) - 2 2dcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDbjba xgqf;fVdifZcqere[eecfcgcsehcteMcEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: %d%b'd'bKg~cadobpbBgsg=fbdWgRgqbudSgFbtg

619  

620  

621cdef inline OrderFlag _stride_order2vec(axis_vec_t& stride_order_vec, object stride_order) except? ORDER_NONE: 

622 if stride_order == 'C': 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperisiminieifi~haibicimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h`h{h)h*h+h

623 return ORDER_C 2vg5fLdmh%gPfdfefScTc.cccMdmfDc/e:emcEc;eMb2eOdFc?eGcnc7eXg.gdcjeVccbNbnb+ ' Wcdbnh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a nfkeof#cpfYcPdzf$c@eLcoh'g+fQdhdHcQb9e#eIcJcRbldoc%emdSbFeodTbpcIeJeSdpdKcqcrc(eMeUb`brdOescPetcVb{b|ble}boeperiniei~haimgngghogSfTf(gUfEhChJhKhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhDhLh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbwh;gSe@fAfue/crf[c'cDfEf]c-fFfuf^c(c!gch9fcdqg)g1fkh]e(dUg#g/fvfNcTgOc)cfh+g_e?g*cPcIf|e2f_c,gth$f)d~e:cmb{c`fJf+c*d;c4fLf,cOf-chhyhxhOgugahuhAhihbb4 ygHgJgCgDgzgrg} wd%fO d }fV Wf~ sb[fkcac5 ~f:flcw q Qc- ,e. tbs 'fv $ K (b[ t l b ucB C f ggub^ )bgbvb_ ) r ; W P wbQ Uebcx *bxb(fvcc * igy ` S T L jf)fh I i j wcXeYe% ybzbk = 0c0 1 J m 2 1c? n e xcM Zeo p z 3 g @ ibbgqh-e.eeg-gXfycwexeyezcAcBcCckfBeCezdAd+d,dbfGb+b,b-bBd;d=dHb[d]d^d_dIbJbKb.b/b:b;bFd{d|dLb=b?b@b[b]b^bRcHdIdcedeeefe_bShThUh/hVhWhXh:h4h5h6h?h7h8h9h@h`h{h)h+h

624 elif stride_order == 'F': 2lhwg6fffgflfNd1e=e3e4e5e6e8ebhUc3c4c5c=c6c?c7c8cu a kbwfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhOgugahuhPgBhGgbb4 IgCgfbDgrg# |fxdd V , Wf~ sb[fkc+eA 5 :flcw ag6 q - abtbs $ K (bfg] t l b f ub)bvbD ydTeE _ ) r ; P wbQ bcx R ( *bhgF G xbX c * y S T L VeH Y Weh i j % Z { / ybzb| k = 0 1 J m 2 7 ? n e M U 8 0eo p z 3 9 g @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

625 return ORDER_F 2lhwg6fffgflfNd1e=e3e4e5e6e8ewfxfyf}cQfRfph*fid!ejdkd$endGe'eHeRdKeLeqd)eNesdTdUdmenesimifibicivh?fBfCf,fsftfGfHfdhpgjh!f.feh*g^e=g`e*e{e}e3fsh#f`cafVf{fKfMfNfxhzhahuhPgBhGgIgCgfbDgrg# |fxd, Wf~ sb[fkc+eA :flcag6 - abtb(bfg] ub)bvbD ydTeE _ ) ; wbbcR ( *bhgF G xbX * VeH Y WeZ { / ybzb| = 7 ? U 8 0ez 9 @ N ! 2ccgdgrhvezeAeDeEeYf-d.d/d:d?d@dCd`dDdEdcf}d~daeGdbeJdgeheieKdYhZh0h;h1h2h3h=h!h#h$h[h%h'h(h]h*h

626 elif isinstance(stride_order, tuple | list): 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb# d V A 5 w 6 q s $ K t l b f D E r P Q x R ( F G X c y S T L H Y h i j % Z k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

627 _tuple2axis_vec(stride_order_vec, stride_order) 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb# d V A 5 w 6 q s $ K t l b f D E r P Q x R ( F G X c y S T L H Y h i j % Z k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

628 return ORDER_PERM 2bhUc3c4c5c=c6c?c7c8cu a kbOgugPgbb4 fb# d V A 5 w 6 q s $ K t l b f D E r P Q x R ( F G X c y S T L H Y h i j % Z k 0 1 J m 2 7 n e M U 8 o p 3 9 g N !

629 return ORDER_NONE 

630  

631  

632cdef inline int _tuple2axis_vec(axis_vec_t& vec, object t) except -1: 

633 cdef int ndim = len(t) 2bhUc3c4c5c=c6c?c7c8cNbnb+ ' u a kbPd}cohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibici]f^f7f8f%c_fLgMgNgEghbFg~b: Kg=f~e:c`cafmb{cOgugPgbb4 fb# d V A 5 w 6 q s $ K t l b f D E r P Q x R ( F G X c y S T L H Y h i j % Z k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

634 vec.resize(ndim) 2bhUc3c4c5c=c6c?c7c8cNbnb+ ' u a kbPd}cohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibici]f^f7f8f%c_fLgMgNgEghbFg~b: Kg=f~e:c`cafmb{cOgugPgbb4 fb# d V A 5 w 6 q s $ K t l b f D E r P Q x R ( F G X c y S T L H Y h i j % Z k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

635 for i in range(ndim): 2bhUc3c4c5c=c6c?c7c8cNbnb+ ' u a kbPd}cohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibici]f^f7f8f%c_fLgMgNgEghbFg~b: Kg=f~e:c`cafmb{cOgugPgbb4 fb# d V A 5 w 6 q s $ K t l b f D E r P Q x R ( F G X c y S T L H Y h i j % Z k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

636 vec[i] = t[i] 2Uc3c4c5c=c6c?c7c8cNbnb+ ' u a kbPd}c*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibici]f^f7f8f%c_fLgMgNgEghbFg~b: Kg=f~e:c`cafmb{cbb4 fb# d V A 5 w 6 q s $ K t l b f D E r P Q x R ( F G X c y S T L H Y h i j % Z k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegveycwexeyezcAczeAeBcCcBeCeDeEezdAd+d,d-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bHdIdcedeeefeJdgeheieKd_b

637 return 0 2bhUc3c4c5c=c6c?c7c8cNbnb+ ' u a kbPd}cohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boeperi5isimi4iniqieifi~hoipiaibici]f^f7f8f%c_fLgMgNgEghbFg~b: Kg=f~e:c`cafmb{cOgugPgbb4 fb# d V A 5 w 6 q s $ K t l b f D E r P Q x R ( F G X c y S T L H Y h i j % Z k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

638  

639  

640cdef inline bint _normalize_axis(integer_t& axis, integer_t extent) except -1 nogil: 

641 if axis < -extent or axis >= extent: 2Uc3c4c5c=c6c?c7c8cNbnb+ ' ddAbedfdgdBbCbDbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepeqieifi~hoipiaibici]f^f7f8f%c_fLgMgNgEghbFg~b: Kg=f]e.f(dUg/fvf*g^eNc=gTgOc)c+g_e?g`e*e{e*cPcIf|e}e~e:c`cafmb{cbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegveycwexeyezcAczeAeBcCcBeCeDeEezdAd+d,d-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bHdIdcedeeefeJdgeheieKd_bOhPh

642 return False 2~hoipiaibiciUg*g=gTg+g?g

643 if axis < 0: 2Uc3c4c5c=c6c?c7c8cNbnb+ ' ddAbedfdgdBbCbDbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepeqieifi~hoipiaibici]f^f7f8f%c_fLgMgNgEghbFg~b: Kg=f]e.f(d/fvf*g^eNcTgOc)c+g_e`e*e{e*cPcIf|e}e~e:c`cafmb{cbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegveycwexeyezcAczeAeBcCcBeCeDeEezdAd+d,d-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bHdIdcedeeefeJdgeheieKd_bOhPh

644 axis += extent 2nfkeof#czf$c@eLcvf)c*e

645 return True 2Uc3c4c5c=c6c?c7c8cNbnb+ ' ddAbedfdgdBbCbDbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepeqieifi~hoipiaibici]f^f7f8f%c_fLgMgNgEghbFg~b: Kg=f]e.f(d/fvf*g^eNcTgOc)c+g_e`e*e{e*cPcIf|e}e~e:c`cafmb{cbb4 fb} # O d V , A 5 w 6 q . abs v $ K [ ] t l b B C f ^ gbD E r W P Q x R ( F G X c y ` S T L H Y h I i j % Z { / | k 0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegveycwexeyezcAczeAeBcCcBeCeDeEezdAd+d,d-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bHdIdcedeeefeJdgeheieKd_bOhPh

646  

647  

648cdef inline bint _is_unique(BaseLayout& base, axis_vec_t& stride_order) except -1 nogil: 

649 if base.strides == NULL: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

650 return True 

651 cdef int64_t cur_max_offset = 0 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

652 cdef int i = base.ndim - 1 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

653 cdef int64_t stride 

654 cdef axis_t axis 

655 cdef extent_t extent 

656 while i >= 0: 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

657 axis = stride_order[i] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

658 extent = base.shape[axis] 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

659 if extent != 1: 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

660 stride = _c_abs(base.strides[axis]) 25fLd6fdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

661 if cur_max_offset >= stride: 25fLd6fdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

662 return False 25fLd6fdfefffScgfTcccMdNdDc/e:emcEc1eMb2eOd3e4e?e5e6eGcnc7e8e

663 cur_max_offset = _overflow_checked_sum(cur_max_offset, _overflow_checked_mul(stride, (extent - 1))) 2.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPb|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepe$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-c} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

664 i -= 1 2vg5fwgLd6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8eUc3c4c5c=c6c?c7c8cdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRf*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngogSfTfUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrb?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-cGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgdg-e.eegXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

665 return True 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' Wcdb9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: @g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_b

666  

667  

668@cython.overflowcheck(True) 

669cdef inline int64_t _overflow_checked_mul(int64_t a, int64_t b) except? -1 nogil: 

670 return a * b 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepeminiqieifi~hoipiaibicimgngghogSfTf(gUfMh,hEhCh-hJhKhHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: FhNhIhDhLh.h@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh^h_h

671  

672  

673@cython.overflowcheck(True) 

674cdef inline int64_t _overflow_checked_diff(int64_t a, int64_t b) except? -1 nogil: 

675 return a - b 

676  

677  

678@cython.overflowcheck(True) 

679cdef inline int64_t _overflow_checked_sum(int64_t a, int64_t b) except? -1 nogil: 

680 return a + b 2vglh5fwgLdmh%g6fPfdfefffScgfTc.clfccMdmfNdDc/e:emcEc;e1eMb2eOd=e3e4eFc?e5e6eGcnc7e8ebhUc3c4c5c=c6c?c7c8cXg.gdcjeVccbNbnb+ ' WcdbnhGh9cObddAbedfdgdXcebBbCbDb!cPbjghf|cjbu a kbnfwfkeofxf#cpfyfYcPd}czfQf$c@eLcRfohph'g*f+fQdhdHcQbid9e!ejd#ekdIcJcRbld$eoc%emdndSbFeodGe'eTbHeRdpcIeJeSdpdKeLeKcqcrc(eMeqdUb)e`brdNeOesdscPeTdtcVbUd{b|blemene}boepemgngghogSfTf(gUfChHhxgqf;fVd$gZfQgkglg0fifZcqere[eYgecfcgcse/ghcteMc:gZgEbtdWbWdXbYbXdYdVgicAgQeZd0dZb0b1d2d1b2b3b4b3d4d5d5b6d7d8d9d6b7b8b!d9b!bRejclb]f^f7f8f#d%c#b_f$d@cLgMgNgEg$bhbFg~b: IhDh@g[g%d]g^g_g0g1g`g{g|g}g2g3g~g%b4g5g'd'b6g7g8g9gKg~cadobpbBgsg=fbdWgRgqbudSgFbtgvdrbvhwh;g?fSe@fAfBfue/crfCf,fsftf[c'cDfEf]c-fFfufGf^cHf(c!gch9fdhpgcdqgjh)g1fkh!f]e.f(dUg#g/fvfeh*g^eNc=gTgOc)cfh+g_e?g`e*e{e*cPcIf|e}e2f3f_c,gshth#f$f)d~e:c`cafmb{c`fJfVf+c{f*d;cKf4fLf,cMfNfOf-chhyhxhzhOgugahuhAhPgBhihGgbb4 ygHgIgJgCgfbDgzgrg} wd# |fxd%fO d }fV , Wf~ sb[fkc+eA ac5 ~f:flcw ag6 q Qc- ,e. abtbs 'fv $ K (b[ fg] t l b ucB C f ggub^ )bgbvbD ydTeE _ ) r ; W P wbQ Uebcx R ( *bhgF G xbX (fvcc * igy ` S T L jfVeH Y We)fh I i j wcXeYe% Z { / ybzb| k = 0c0 1 J m 2 1c7 ? n e xcM ZeU 8 0eo p z 3 9 g @ N ! 2cibbgcgqhdg-e.erheg-gXfveycwexeyezcAczeAeBcCckfBeCeDeEeYfzdAd+d,dbf-d.d/d:dGb+b,b-bBd;d=d?d@dCdHb[d]d^d_d`dDdEdcfIbJbKb.b/b:b;bFd{d|d}d~daeGdbeLb=b?b@b[b]b^bRcHdIdcedeeefeJdgeheieKd_bShThUh/hVhWhXh:hYhZh0h;h1h2h3h=h4h5h6h?h7h8h9h@h!h#h$h[h%h'h(h]h|h`h{h)h*h+h}hdiOhPhQhRh^h_h

681  

682  

683@cython.overflowcheck(True) 

684cdef inline int64_t _overflow_checked_div_ceil(int64_t a, int64_t b) except? -1 nogil: 

685 return (a + b - 1) // b