%IEEE mentor document no (DCN): 15-22-0447-00-04ab
%This code simulates the proposed 802.15.4ab Preamble Evaluation framework (apEval framework)
% % Copyright 2022 Apple Inc.
% % Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
% % 
% % 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
% % 
% % 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
% % 
% % 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
% % 
% % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

clear all;
close all;
warning off;
clc;

%% Define the Golay, Ipatov and any other code sets
Golay_set = get_Golay_codes;
[Ipatov31_set, Ipatov91_set, Ipatov127_set] = get_Ipatov_codes;
%%

%% Define the aPEval framework parameters
%Set of Target codes
Set1 = Golay_set;
%Set of Interfering codes
Set2 = [Ipatov91_set Ipatov127_set Golay_set];
%Preamble symbol repetitions for Target code (R1 = 40 for long correlator,
%R1 = 4 for short correlator)
R1 = 40;
%Preamble symbol repetitions for Interfering code
R2 = 40;
%Gap size (in chips) for Golay codes, before spreading
G = 1;
%Gap parameter for Interfering Golay codes
IntfGapFlag = 0; %If 0, No Gap; If 1, Gap of G is applied for interfering Golay codes
%Data collision probability
p = 0; %If 0 - Target preamble code always colliding with Interfering preamble code, If 1 - Target code always colliding with Random bit sequence 
% Max CFO between Target Rx and Interfering Tx
CFO_max = 0;%320e3; % in Hz 
%Spreading factor for target and interfering codes
L1 = 4; %For target code
L2 = 4; %For interfering code
Nr_iter = 1000; %Number of monte-carlo iterations for each target code
%%

%% Monte Carlo Simulations
Union_set = [Set1 Set2]; %Set of Interference codes including the target codes
Corr_stats = zeros(length(Set1),Nr_iter);
for target_code_idx = 1:length(Set1) %Loop over the codes from Set1
    %Generate the target preamble sequence
    Symb_x = Set1{target_code_idx}.seq;
    if G > 0
        Symb_x_with_Gap = [Symb_x(1:end/2) zeros(1,G) Symb_x(end/2+1:end) zeros(1,G)];%Add Gap in case of Golay codes
    else
        Symb_x_with_Gap = Symb_x;
    end
    Symb_x_with_spreading = upsample(Symb_x_with_Gap,L1);
    Seq_X = repmat(Symb_x_with_spreading,1,R1);
    Target_Seq = Seq_X;
    for iter = 1:Nr_iter %Iterate over different realizations of interference
        a = rand; %random toss of a coin
        if a < p %Target code colliding with Random bit sequence 
            %Random bit sequence of 512*16 chips long
            y = 2*randi([0,1],1,512*16)-1;
            Seq_Y = upsample(y,L2);
        else %Target preamble code colliding with Interfering preamble code
            %Generate the interference preamble sequence
            while 1
                interference_code_idx = ceil(rand*length(Union_set)); %Pick a uniform random code from Set2
                Symb_y = Union_set{interference_code_idx}.seq;
                if interference_code_idx~=target_code_idx %Ensure Interference code is different from target code
                    break;
                end
            end
            if IntfGapFlag %Add Gap incase of Golay codes and the flag is enabled
                Symb_y_with_Gap = [Symb_y(1:end/2) zeros(1,G) Symb_y(end/2+1:end) zeros(1,G)];
                Symb_y_with_spreading = upsample(Symb_y_with_Gap,L2);
            else
                Symb_y_with_spreading = upsample(Symb_y,L2);
            end
            Seq_Y = repmat(Symb_y_with_spreading,1,R2);
        end
        CFO = (2*rand-1)*CFO_max; %Generate CFO Uniformly random upto CFO_max
        Seq_Y_with_CFO = exp(1j*2*pi*CFO*2e-9*(0:length(Seq_Y)-1)).*Seq_Y; %Add CFO to interference sequence Y
        Nr_extensions = ceil(length(Target_Seq)/length(Seq_Y));
        Seq_Y_with_CFO_extended = repmat(Seq_Y_with_CFO,1,1+Nr_extensions);
        %compute the cross-correlation between Seq X and Y
        cross_corr = conv(Seq_Y_with_CFO_extended,Target_Seq(end:-1:1));
        normalized_cross_corr = cross_corr(length(Target_Seq)-1:end)/sum(abs(Target_Seq).^2);
        Corr_stats(target_code_idx,iter) = 20*log10(max(abs(normalized_cross_corr(1:length(Seq_Y)))));
    end
    disp(['Simulating target code index ' int2str(target_code_idx) ' of ' int2str(length(Set1))]);
end
%%

%%Plot the CDF of the Cross-correlation between Target set and Union set
figure;
cdfplot(Corr_stats(:));
xlabel('Cross-Correlation peak (dB)');
ylabel('CDF');
title('Normalized periodic cross-correlation peak of preamble code family');
grid on;

%Plot the 90% CDF of cross-correlation level for different codes
%in the family
figure;
CDF_threshold = 0.9;
data = sort(Corr_stats,2); %sort each row (ascending)
CDF_90Percentile = data(:,floor(Nr_iter*CDF_threshold));
plot(CDF_90Percentile,'-o');
xlabel('Preamble code index from Set1');
ylabel([int2str(CDF_threshold*100) '% cross-correlation peak CDF']);
title('Normalized periodic cross-correlation peak of preamble codes');
grid on;
%%

%%
%Golay 64+64 codes set (64 codes)
function Golay_set = get_Golay_codes
    Golay_set{1}.seq = [1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1  1  1 -1  1  1  1 -1  1  1  1  1 -1 -1 -1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1  1 -1  1  1];
    Golay_set{2}.seq = [1  1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1 -1  1  1 -1  1  1 -1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1  1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1  1 -1 -1  1  1  1 -1 -1 -1 -1  1  1  1  1 -1  1  1  1 -1 -1  1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1  1  1];
    Golay_set{3}.seq = [1  1 -1 -1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1  1 -1  1 -1  1  1  1  1 -1 -1 -1 -1 -1  1 -1  1  1  1 -1 -1  1 -1 -1  1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1 -1  1  1  1  1 -1 -1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1  1 -1  1 -1  1  1  1  1  1  1  1  1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1  1 -1  1 -1  1  1  1  1  1 -1 -1  1  1  1 -1 -1];
    Golay_set{4}.seq = [1  1 -1 -1  1  1 -1 -1  1 -1 -1  1 -1  1  1 -1 -1 -1 -1 -1  1  1  1  1 -1  1 -1  1 -1  1 -1  1  1  1  1  1  1  1  1  1  1 -1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1 -1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1 -1  1  1 -1 -1  1 -1 -1  1 -1  1  1 -1 -1 -1 -1 -1  1  1  1  1 -1  1 -1  1 -1  1 -1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1 -1  1  1 -1  1 -1  1  1 -1 -1 -1 -1  1  1  1 -1 -1  1  1 -1 -1  1];
    Golay_set{5}.seq = [1 -1  1 -1  1 -1 -1  1  1  1  1  1  1  1 -1 -1  1  1 -1 -1  1  1  1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1 -1 -1  1  1 -1  1  1  1  1 -1 -1  1  1  1  1 -1 -1 -1 -1 -1 -1  1 -1 -1  1 -1  1 -1  1  1 -1  1 -1  1 -1 -1  1  1  1  1  1  1  1 -1 -1  1  1 -1 -1  1  1  1  1  1 -1 -1  1  1 -1  1 -1 -1  1 -1  1  1 -1 -1  1 -1 -1 -1 -1  1  1 -1 -1 -1 -1  1  1  1  1  1  1 -1  1  1 -1  1 -1  1 -1];
    Golay_set{6}.seq = [1 -1  1  1  1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1  1 -1  1 -1  1  1  1  1  1 -1  1 -1  1  1  1  1  1 -1 -1  1  1  1 -1 -1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1  1  1  1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1 -1  1  1 -1  1 -1  1  1  1 -1 -1  1 -1];
    Golay_set{7}.seq = [1  1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1  1 -1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1  1 -1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1  1  1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1 -1 -1  1 -1  1  1 -1  1  1  1 -1  1  1  1];
    Golay_set{8}.seq = [1 -1  1 -1  1 -1 -1  1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1  1  1 -1  1 -1  1 -1 -1  1  1  1 -1 -1  1  1  1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1 -1  1 -1 -1  1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1 -1  1 -1  1 -1  1  1 -1 -1 -1  1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1  1];
    Golay_set{9}.seq = [1  1  1  1 -1  1  1 -1  1 -1  1 -1 -1 -1  1  1 -1 -1  1  1  1 -1  1 -1 -1  1  1 -1  1  1  1  1  1  1  1  1 -1  1  1 -1 -1  1 -1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1 -1  1 -1 -1  1 -1 -1 -1 -1  1  1  1  1 -1  1  1 -1  1 -1  1 -1 -1 -1  1  1 -1 -1  1  1  1 -1  1 -1 -1  1  1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1  1  1 -1  1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1  1 -1  1  1 -1  1  1  1  1];
    Golay_set{10}.seq = [1  1 -1 -1 -1 -1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1  1 -1  1  1 -1 -1  1  1  1  1  1 -1 -1  1  1  1  1 -1 -1 -1 -1 -1 -1  1 -1 -1  1 -1  1 -1  1 -1  1 -1  1  1 -1 -1  1 -1 -1 -1 -1  1  1 -1 -1  1  1 -1 -1 -1 -1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1  1 -1  1  1 -1 -1  1  1  1  1  1 -1 -1  1  1 -1 -1  1  1  1  1  1  1 -1  1  1 -1  1 -1  1 -1  1 -1  1 -1 -1  1  1 -1  1  1  1  1 -1 -1  1  1];
    Golay_set{11}.seq = [1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1  1  1 -1  1 -1  1 -1 -1  1 -1  1  1 -1  1  1  1 -1  1  1  1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1];
    Golay_set{12}.seq = [1  1  1 -1  1  1 -1  1  1 -1  1  1  1 -1 -1 -1 -1 -1 -1  1  1  1 -1  1 -1  1 -1 -1  1 -1 -1 -1 -1 -1 -1  1 -1 -1  1 -1  1 -1  1  1  1 -1 -1 -1  1  1  1 -1 -1 -1  1 -1 -1  1 -1 -1  1 -1 -1 -1  1  1  1 -1  1  1 -1  1  1 -1  1  1  1 -1 -1 -1 -1 -1 -1  1  1  1 -1  1 -1  1 -1 -1  1 -1 -1 -1  1  1  1 -1  1  1 -1  1 -1  1 -1 -1 -1  1  1  1 -1 -1 -1  1  1  1 -1  1  1 -1  1  1 -1  1  1  1];
    Golay_set{13}.seq = [1 -1  1  1 -1  1 -1 -1  1 -1  1  1  1 -1  1  1  1  1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1 -1  1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1  1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1  1 -1  1  1 -1  1  1 -1  1  1 -1  1 -1 -1  1 -1  1  1  1 -1  1  1  1  1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1 -1 -1  1  1 -1  1  1  1 -1  1  1  1 -1  1 -1 -1  1 -1];
    Golay_set{14}.seq = [1 -1 -1 -1 -1  1 -1 -1 -1 -1  1 -1  1  1  1 -1 -1  1  1  1  1 -1  1  1 -1 -1  1 -1  1  1  1 -1 -1  1  1  1  1 -1  1  1  1  1 -1  1 -1 -1 -1  1 -1  1  1  1  1 -1  1  1 -1 -1  1 -1  1  1  1 -1  1 -1 -1 -1 -1  1 -1 -1 -1 -1  1 -1  1  1  1 -1 -1  1  1  1  1 -1  1  1 -1 -1  1 -1  1  1  1 -1  1 -1 -1 -1 -1  1 -1 -1 -1 -1  1 -1  1  1  1 -1  1 -1 -1 -1 -1  1 -1 -1  1  1 -1  1 -1 -1 -1  1];
    Golay_set{15}.seq = [1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1  1  1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1  1  1 -1  1 -1 -1  1 -1  1  1 -1  1  1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1  1  1 -1  1 -1 -1  1 -1];
    Golay_set{16}.seq = [1 -1  1 -1  1 -1  1 -1  1  1 -1 -1  1  1 -1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1  1 -1  1 -1 -1  1 -1  1  1  1 -1 -1 -1 -1  1  1  1  1  1  1  1  1  1  1  1 -1 -1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1 -1  1  1 -1 -1  1  1 -1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1  1  1  1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1  1 -1];
    Golay_set{17}.seq = [1 -1  1  1  1 -1  1  1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1  1  1  1 -1  1  1 -1  1  1  1  1 -1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1  1  1  1 -1  1  1  1  1 -1  1  1  1 -1  1  1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1 -1 -1 -1 -1  1  1  1 -1  1 -1 -1  1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1];
    Golay_set{18}.seq = [1  1  1  1  1  1 -1 -1 -1  1  1 -1 -1  1 -1  1  1  1  1  1 -1 -1  1  1 -1  1  1 -1  1 -1  1 -1  1  1  1  1  1  1 -1 -1 -1  1  1 -1 -1  1 -1  1 -1 -1 -1 -1  1  1 -1 -1  1 -1 -1  1 -1  1 -1  1  1  1  1  1  1  1 -1 -1 -1  1  1 -1 -1  1 -1  1  1  1  1  1 -1 -1  1  1 -1  1  1 -1  1 -1  1 -1 -1 -1 -1 -1 -1 -1  1  1  1 -1 -1  1  1 -1  1 -1  1  1  1  1 -1 -1  1  1 -1  1  1 -1  1 -1  1 -1];
    Golay_set{19}.seq = [1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1  1  1  1 -1  1  1 -1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1  1 -1 -1  1 -1 -1  1  1  1 -1 -1  1  1  1 -1 -1 -1  1 -1  1  1  1  1  1  1 -1  1 -1  1  1  1  1  1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1  1  1  1 -1  1  1 -1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1  1  1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1 -1 -1 -1  1 -1  1 -1 -1 -1 -1];
    Golay_set{20}.seq = [1  1  1  1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1  1  1 -1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1  1  1  1  1 -1  1 -1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  1  1 -1  1  1  1  1 -1  1 -1  1  1  1  1  1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1  1  1 -1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1 -1 -1 -1 -1  1 -1  1 -1 -1  1  1 -1  1  1 -1 -1 -1  1  1  1 -1 -1  1 -1 -1 -1 -1  1 -1  1 -1];
    Golay_set{21}.seq = [1 -1  1  1  1 -1 -1 -1  1  1  1 -1  1  1 -1  1 -1  1 -1 -1 -1  1  1  1  1  1  1 -1  1  1 -1  1  1 -1  1  1 -1  1  1  1  1  1  1 -1 -1 -1  1 -1 -1  1 -1 -1  1 -1 -1 -1  1  1  1 -1 -1 -1  1 -1  1 -1  1  1  1 -1 -1 -1  1  1  1 -1  1  1 -1  1 -1  1 -1 -1 -1  1  1  1  1  1  1 -1  1  1 -1  1 -1  1 -1 -1  1 -1 -1 -1 -1 -1 -1  1  1  1 -1  1  1 -1  1  1 -1  1  1  1 -1 -1 -1  1  1  1 -1  1];
    Golay_set{22}.seq = [1  1 -1 -1  1 -1  1 -1  1 -1 -1  1  1  1  1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1 -1 -1  1 -1  1 -1  1 -1 -1  1  1  1  1  1  1  1  1  1  1 -1 -1  1  1 -1  1 -1  1  1 -1 -1  1  1 -1 -1  1 -1  1 -1  1 -1 -1  1  1  1  1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1];
    Golay_set{23}.seq = [1  1  1  1 -1 -1  1  1  1  1  1  1  1  1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1  1  1 -1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1  1  1  1  1 -1 -1  1  1 -1 -1 -1 -1  1  1  1  1 -1 -1  1  1  1  1  1  1  1  1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1  1  1 -1 -1  1 -1  1 -1  1 -1  1  1 -1 -1  1 -1  1 -1  1 -1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1  1  1  1];
    Golay_set{24}.seq = [1  1 -1 -1 -1  1  1 -1 -1 -1  1  1 -1  1  1 -1  1  1  1  1 -1  1 -1  1  1  1  1  1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1 -1  1  1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1  1  1  1  1  1 -1 -1 -1  1  1 -1 -1 -1  1  1 -1  1  1 -1  1  1  1  1 -1  1 -1  1  1  1  1  1  1 -1  1 -1 -1  1  1 -1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  1 -1  1  1  1  1  1 -1  1 -1  1 -1 -1 -1 -1];
    Golay_set{25}.seq = [1 -1  1 -1  1 -1  1 -1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1  1 -1 -1  1  1  1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1 -1 -1 -1  1  1 -1 -1  1  1 -1  1  1  1  1  1  1  1  1  1 -1  1 -1  1 -1  1 -1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1  1 -1 -1  1  1  1  1  1 -1 -1 -1 -1 -1  1 -1  1  1 -1  1 -1  1  1 -1 -1 -1 -1  1  1  1 -1 -1  1  1 -1 -1  1 -1 -1 -1 -1 -1 -1 -1 -1];
    Golay_set{26}.seq = [1  1 -1 -1 -1  1  1 -1 -1  1 -1  1  1  1  1  1  1  1  1  1 -1  1 -1  1 -1  1  1 -1  1  1 -1 -1 -1 -1  1  1 -1  1  1 -1  1 -1  1 -1  1  1  1  1 -1 -1 -1 -1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1  1  1 -1 -1 -1  1  1 -1 -1  1 -1  1  1  1  1  1  1  1  1  1 -1  1 -1  1 -1  1  1 -1  1  1 -1 -1  1  1 -1 -1  1 -1 -1  1 -1  1 -1  1 -1 -1 -1 -1  1  1  1  1  1 -1  1 -1 -1  1  1 -1 -1 -1  1  1];
    Golay_set{27}.seq = [1 -1 -1 -1 -1  1  1  1  1 -1  1  1  1 -1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1  1 -1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1  1 -1 -1  1 -1  1  1  1  1 -1  1  1  1 -1  1  1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1 -1  1  1  1  1 -1  1  1  1 -1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1  1 -1 -1 -1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1 -1];
    Golay_set{28}.seq = [1  1 -1  1 -1  1  1  1 -1 -1  1 -1 -1  1  1  1  1  1 -1  1 -1  1  1  1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1  1  1  1 -1  1 -1  1  1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1  1 -1  1 -1 -1  1  1 -1  1 -1  1  1  1 -1 -1  1 -1 -1  1  1  1  1  1 -1  1 -1  1  1  1  1  1 -1  1  1 -1 -1 -1  1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1  1  1  1 -1 -1  1 -1 -1  1  1  1 -1  1 -1  1  1];
    Golay_set{29}.seq = [1 -1  1  1 -1  1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1 -1  1  1 -1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1  1  1 -1  1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1 -1  1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1  1  1 -1  1  1  1  1 -1 -1 -1 -1  1  1  1];
    Golay_set{30}.seq = [1  1  1 -1  1  1 -1  1  1 -1  1  1  1 -1 -1 -1  1  1  1 -1 -1 -1  1 -1  1 -1  1  1 -1  1  1  1  1  1  1 -1  1  1 -1  1 -1  1 -1 -1 -1  1  1  1  1  1  1 -1 -1 -1  1 -1 -1  1 -1 -1  1 -1 -1 -1  1  1  1 -1  1  1 -1  1  1 -1  1  1  1 -1 -1 -1  1  1  1 -1 -1 -1  1 -1  1 -1  1  1 -1  1  1  1 -1 -1 -1  1 -1 -1  1 -1  1 -1  1  1  1 -1 -1 -1 -1 -1 -1  1  1  1 -1  1  1 -1  1  1 -1  1  1  1];
    Golay_set{31}.seq = [1  1  1  1  1  1  1  1 -1  1 -1  1  1 -1  1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1 -1  1 -1  1  1 -1  1 -1 -1  1  1  1 -1 -1  1  1 -1 -1  1  1  1  1  1  1  1  1 -1  1 -1  1  1 -1  1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1 -1  1  1  1  1  1 -1  1 -1  1 -1  1 -1  1 -1 -1  1 -1  1  1 -1 -1 -1  1  1 -1 -1  1  1];
    Golay_set{32}.seq = [1  1  1 -1  1  1  1 -1 -1  1 -1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1 -1  1  1 -1  1  1 -1  1 -1 -1 -1 -1  1 -1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1 -1  1 -1  1  1  1  1 -1 -1 -1  1  1  1 -1  1  1  1 -1 -1  1 -1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1 -1  1  1 -1  1  1 -1  1 -1 -1  1  1 -1  1  1  1 -1  1 -1  1  1  1 -1  1  1  1  1  1 -1  1 -1 -1  1 -1  1 -1 -1 -1 -1  1  1  1];
    Golay_set{33}.seq = [1  1  1 -1 -1  1 -1 -1  1  1  1 -1  1 -1  1  1  1  1 -1  1 -1  1  1  1  1  1 -1  1  1 -1 -1 -1  1  1  1 -1 -1  1 -1 -1  1  1  1 -1  1 -1  1  1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1 -1 -1  1  1  1  1  1  1 -1 -1  1 -1 -1  1  1  1 -1  1 -1  1  1  1  1 -1  1 -1  1  1  1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1  1 -1  1 -1 -1  1  1 -1  1 -1  1  1  1  1  1 -1  1  1 -1 -1 -1];
    Golay_set{34}.seq = [1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1 -1  1  1 -1  1  1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1  1  1  1 -1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1  1  1  1  1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1 -1  1  1 -1  1  1  1  1 -1 -1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1  1 -1 -1 -1  1 -1 -1  1  1 -1  1 -1 -1  1 -1  1  1  1 -1 -1 -1 -1  1];
    Golay_set{35}.seq = [1  1 -1 -1  1  1  1  1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1  1  1  1  1 -1  1 -1  1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1  1 -1 -1 -1  1  1  1  1  1  1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1  1  1  1  1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1  1  1  1  1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1  1  1  1  1  1 -1  1 -1  1 -1 -1  1  1  1 -1 -1 -1 -1 -1 -1  1 -1  1 -1 -1  1  1 -1];
    Golay_set{36}.seq = [1  1 -1  1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1  1  1  1 -1 -1 -1  1  1 -1  1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1 -1  1  1 -1  1  1  1 -1  1  1 -1 -1 -1 -1  1  1  1  1  1 -1  1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1  1  1  1 -1 -1 -1 -1 -1  1 -1  1  1 -1  1 -1  1  1  1 -1  1  1  1 -1 -1  1 -1 -1 -1  1 -1 -1  1  1  1  1 -1 -1 -1];
    Golay_set{37}.seq = [1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1  1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1 -1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1  1  1  1  1 -1 -1 -1 -1  1  1  1  1 -1  1  1  1 -1];
    Golay_set{38}.seq = [1  1 -1  1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1 -1 -1 -1  1  1  1 -1  1  1  1  1 -1 -1 -1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1 -1  1  1  1 -1  1  1  1  1 -1  1  1 -1  1  1  1  1 -1  1  1 -1  1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1 -1 -1 -1  1  1  1 -1  1  1  1  1 -1  1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1  1 -1 -1 -1 -1  1];
    Golay_set{39}.seq = [1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1  1 -1  1  1  1  1 -1  1  1  1 -1  1 -1  1  1  1 -1  1  1  1  1  1  1 -1  1  1  1 -1 -1  1 -1 -1 -1  1 -1 -1  1  1 -1  1 -1 -1  1 -1 -1  1  1  1  1 -1 -1 -1  1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1  1 -1  1  1  1  1 -1  1  1  1 -1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1  1  1 -1  1  1  1 -1  1  1 -1 -1  1 -1  1  1 -1  1  1 -1 -1 -1 -1  1  1  1];
    Golay_set{40}.seq = [1 -1 -1 -1  1 -1  1  1  1 -1 -1 -1  1 -1  1  1 -1  1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1 -1 -1  1  1 -1  1  1  1  1 -1  1  1 -1  1  1  1  1 -1 -1 -1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1 -1  1  1 -1 -1 -1  1 -1  1  1  1 -1 -1 -1  1 -1  1  1 -1  1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1  1 -1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1  1  1 -1];
    Golay_set{41}.seq = [1 -1  1 -1 -1  1  1 -1 -1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1  1  1 -1 -1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1  1 -1  1 -1  1 -1 -1  1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1  1  1  1  1 -1  1 -1 -1  1  1 -1 -1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1  1  1 -1 -1 -1 -1 -1 -1 -1 -1  1  1  1 -1 -1  1 -1  1 -1  1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1  1  1 -1 -1  1  1 -1 -1 -1 -1];
    Golay_set{42}.seq = [1 -1  1 -1  1  1  1  1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  1  1 -1 -1  1  1 -1 -1 -1  1  1 -1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1 -1  1 -1  1 -1 -1 -1 -1  1 -1  1 -1  1 -1  1 -1  1  1  1  1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  1  1 -1  1 -1 -1  1  1  1 -1 -1  1 -1 -1  1 -1 -1  1  1  1  1  1  1  1 -1  1 -1  1  1  1  1 -1  1 -1  1];
    Golay_set{43}.seq = [1  1  1  1 -1 -1  1  1 -1  1  1 -1  1 -1  1 -1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1 -1  1  1 -1 -1  1 -1  1 -1  1 -1  1 -1  1  1 -1  1  1 -1 -1  1  1  1  1  1  1  1  1 -1 -1  1  1 -1  1  1 -1  1 -1  1 -1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1 -1];
    Golay_set{44}.seq = [1 -1 -1  1 -1  1 -1  1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1  1  1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1  1  1 -1 -1  1  1 -1  1 -1  1 -1 -1  1  1  1  1  1 -1 -1  1  1  1  1  1  1  1  1 -1 -1  1 -1 -1  1 -1  1 -1  1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1  1  1 -1 -1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1  1  1 -1 -1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1  1  1 -1 -1 -1 -1 -1 -1 -1 -1  1  1];
    Golay_set{45}.seq = [1  1 -1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1 -1  1 -1  1  1 -1  1 -1  1  1  1  1 -1 -1  1  1  1 -1 -1  1 -1  1  1 -1  1  1 -1 -1  1  1  1  1  1 -1  1 -1  1 -1  1 -1  1  1  1  1  1  1 -1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1 -1  1 -1  1  1 -1  1 -1  1  1  1  1  1  1 -1 -1 -1  1  1 -1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1 -1  1 -1 -1 -1 -1];
    Golay_set{46}.seq = [1 -1  1 -1 -1  1  1 -1 -1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1  1 -1  1 -1 -1  1 -1  1 -1  1 -1 -1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1  1  1 -1 -1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1  1 -1 -1  1  1  1  1 -1 -1  1  1  1  1  1  1  1 -1 -1  1  1 -1  1 -1];
    Golay_set{47}.seq = [1  1  1  1 -1 -1  1  1 -1 -1  1  1  1  1  1  1  1 -1  1 -1 -1  1  1 -1  1 -1 -1  1 -1  1 -1  1 -1 -1 -1 -1 -1 -1  1  1  1  1 -1 -1  1  1  1  1 -1  1 -1  1 -1  1  1 -1 -1  1  1 -1 -1  1 -1  1  1  1  1  1 -1 -1  1  1 -1 -1  1  1  1  1  1  1  1 -1  1 -1 -1  1  1 -1  1 -1 -1  1 -1  1 -1  1  1  1  1  1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1 -1  1 -1  1 -1  1 -1 -1  1  1 -1 -1  1  1 -1  1 -1];
    Golay_set{48}.seq = [1  1  1  1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1 -1  1 -1  1 -1  1 -1 -1  1  1 -1 -1  1  1 -1  1 -1 -1  1 -1  1 -1  1  1 -1  1 -1 -1  1  1 -1  1 -1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1  1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1 -1  1 -1  1 -1  1 -1 -1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1 -1  1 -1 -1  1 -1  1  1 -1 -1  1 -1  1  1  1  1  1  1  1 -1 -1  1  1 -1 -1  1  1  1  1];
    Golay_set{49}.seq = [1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1  1 -1  1 -1 -1  1 -1  1  1 -1  1  1  1 -1  1 -1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1 -1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1 -1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1  1 -1  1 -1 -1  1 -1  1  1 -1  1  1  1 -1  1  1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1 -1 -1  1  1  1 -1 -1 -1 -1  1  1  1  1 -1  1  1  1 -1];
    Golay_set{50}.seq = [1  1 -1 -1  1 -1 -1  1  1 -1  1 -1  1  1  1  1  1  1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1 -1  1  1 -1  1 -1  1  1  1  1 -1 -1  1  1  1 -1 -1  1 -1  1 -1  1  1  1  1  1  1  1 -1 -1  1 -1 -1  1  1 -1  1 -1  1  1  1  1  1  1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1 -1  1 -1  1 -1 -1 -1 -1  1  1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1 -1 -1 -1];
    Golay_set{51}.seq = [1 -1 -1  1  1  1 -1 -1 -1  1 -1  1  1  1  1  1 -1 -1  1  1 -1  1  1 -1  1  1  1  1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1 -1  1 -1  1  1  1  1  1  1  1 -1 -1  1 -1 -1  1 -1 -1 -1 -1  1 -1  1 -1  1 -1 -1  1  1  1 -1 -1 -1  1 -1  1  1  1  1  1 -1 -1  1  1 -1  1  1 -1  1  1  1  1 -1  1 -1  1 -1  1  1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1  1  1  1  1 -1  1 -1  1];
    Golay_set{52}.seq = [1  1  1  1 -1  1 -1  1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1 -1  1 -1  1 -1  1 -1  1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1  1 -1 -1  1  1  1 -1 -1  1  1  1  1 -1  1 -1  1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1 -1  1  1  1  1  1 -1  1 -1  1 -1  1 -1  1  1  1  1  1  1 -1 -1  1 -1 -1  1 -1  1  1 -1 -1 -1  1  1];
    Golay_set{53}.seq = [1 -1  1 -1  1 -1  1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1  1  1 -1 -1  1  1 -1 -1 -1  1  1 -1 -1  1  1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1 -1  1 -1  1 -1  1 -1  1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1  1  1 -1 -1  1  1 -1 -1  1 -1 -1  1  1 -1 -1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1 -1 -1  1 -1  1  1  1  1  1  1  1  1  1];
    Golay_set{54}.seq = [1 -1  1 -1  1 -1 -1  1 -1  1 -1  1  1 -1 -1  1  1  1  1  1  1  1 -1 -1  1  1  1  1 -1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1  1  1 -1  1 -1  1 -1  1  1 -1 -1  1 -1  1  1 -1 -1  1  1 -1  1 -1  1 -1 -1  1 -1  1 -1  1  1 -1 -1  1  1  1  1  1  1  1 -1 -1  1  1  1  1 -1 -1  1  1  1  1  1  1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1  1 -1  1 -1 -1  1  1 -1  1 -1 -1  1  1 -1];
    Golay_set{55}.seq = [1  1  1  1 -1 -1  1  1  1 -1  1 -1 -1  1  1 -1  1 -1  1 -1  1 -1 -1  1  1  1  1  1  1  1 -1 -1  1  1  1  1 -1 -1  1  1 -1  1 -1  1  1 -1 -1  1  1 -1  1 -1  1 -1 -1  1 -1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1  1  1  1 -1  1 -1 -1  1  1 -1  1 -1  1 -1  1 -1 -1  1  1  1  1  1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1 -1 -1  1 -1  1 -1  1  1 -1  1  1  1  1  1  1 -1 -1];
    Golay_set{56}.seq = [1 -1 -1  1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1  1  1  1  1 -1 -1  1 -1  1 -1  1  1 -1 -1  1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1 -1 -1 -1  1  1 -1 -1 -1 -1 -1  1  1 -1  1 -1  1 -1  1 -1 -1  1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1  1  1  1  1 -1 -1  1 -1  1 -1  1 -1  1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1  1  1  1  1 -1 -1  1  1  1  1  1 -1 -1  1 -1  1 -1  1];
    Golay_set{57}.seq = [1 -1  1  1 -1 -1 -1  1 -1  1 -1 -1  1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1  1  1  1 -1 -1  1 -1 -1  1  1  1 -1  1 -1  1  1  1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1  1 -1  1 -1 -1  1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1  1  1  1  1  1 -1];
    Golay_set{58}.seq = [1  1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1 -1 -1 -1  1  1  1  1 -1 -1 -1 -1  1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1 -1  1  1  1 -1  1  1  1 -1 -1 -1 -1  1  1  1  1 -1 -1 -1  1 -1  1  1 -1  1  1  1 -1  1  1  1 -1  1];
    Golay_set{59}.seq = [1  1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1  1  1 -1  1 -1  1  1 -1 -1  1 -1 -1  1  1 -1 -1  1  1 -1  1  1 -1 -1  1 -1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1 -1  1 -1  1  1 -1 -1 -1  1  1  1  1 -1 -1 -1  1  1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1  1  1 -1  1 -1  1  1 -1 -1  1 -1 -1  1  1  1  1 -1 -1  1 -1 -1  1  1 -1  1 -1  1  1  1  1  1  1  1  1  1 -1  1 -1  1 -1 -1  1  1  1 -1 -1];
    Golay_set{60}.seq = [1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1 -1 -1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1  1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1  1  1 -1  1 -1  1  1  1 -1 -1  1 -1 -1  1  1  1  1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1 -1 -1 -1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1  1  1  1 -1  1 -1  1  1 -1 -1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1 -1 -1];
    Golay_set{61}.seq = [1 -1  1  1 -1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1  1 -1 -1  1 -1  1 -1  1  1 -1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1  1  1  1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1  1  1 -1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1  1 -1 -1  1 -1 -1  1 -1 -1  1  1  1 -1 -1  1  1  1  1  1 -1  1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1  1 -1 -1  1 -1];
    Golay_set{62}.seq = [1  1 -1  1  1  1  1 -1  1 -1 -1 -1  1 -1  1  1  1  1 -1  1  1  1  1 -1 -1  1  1  1 -1  1 -1 -1  1  1 -1  1  1  1  1 -1  1 -1 -1 -1  1 -1  1  1 -1 -1  1 -1 -1 -1 -1  1  1 -1 -1 -1  1 -1  1  1  1  1 -1  1  1  1  1 -1  1 -1 -1 -1  1 -1  1  1  1  1 -1  1  1  1  1 -1 -1  1  1  1 -1  1 -1 -1 -1 -1  1 -1 -1 -1 -1  1 -1  1  1  1 -1  1 -1 -1  1  1 -1  1  1  1  1 -1 -1  1  1  1 -1  1 -1 -1];
    Golay_set{63}.seq = [1 -1  1 -1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1  1  1 -1 -1 -1  1  1  1  1  1  1 -1  1 -1  1 -1  1  1 -1  1  1 -1 -1  1  1  1  1  1 -1  1 -1 -1  1  1 -1 -1 -1  1  1  1  1  1  1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1  1  1 -1 -1 -1  1  1  1  1  1  1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1 -1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1 -1 -1 -1 -1];
    Golay_set{64}.seq = [1  1  1 -1 -1 -1 -1  1  1 -1  1  1 -1  1 -1 -1 -1 -1 -1  1 -1 -1 -1  1  1 -1  1  1  1 -1  1  1  1  1  1 -1  1  1  1 -1  1 -1  1  1  1 -1  1  1 -1 -1 -1  1  1  1  1 -1  1 -1  1  1 -1  1 -1 -1  1  1  1 -1 -1 -1 -1  1  1 -1  1  1 -1  1 -1 -1 -1 -1 -1  1 -1 -1 -1  1  1 -1  1  1  1 -1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1 -1  1 -1  1 -1 -1  1 -1  1  1];
end
%%

%%
%Ipatov codes set 
function [Ipatov31_set, Ipatov91_set, Ipatov127_set] = get_Ipatov_codes
    %Ipatov 31 codes set (8 codes)
    Ipatov31_set{1}.seq = [-1  0  0  0  0  1  0 -1  0  1  1  1  0  1 -1  0  0  0  1 -1  1  1  1  0  0 -1  1  0 -1  0  0];
    Ipatov31_set{2}.seq = [0  1  0  1 -1  0  1  0  1  0  0  0 -1  1  1  0 -1  1 -1 -1 -1  0  0  1  0  0  1  1  0  0  0];
    Ipatov31_set{3}.seq = [-1  1  0  1  1  0  0  0 -1  1 -1  1  1  0  0  1  1  0  1  0  0 -1  0  0  0  0 -1  0  1  0 -1];
    Ipatov31_set{4}.seq = [0  0  0  0  1 -1  0  0 -1  0  0 -1  1  1  1  1  0  1 -1  1  0  0  0  1  0 -1  0  1  1  0 -1];
    Ipatov31_set{5}.seq = [-1  0  1 -1  0  0  1  1  1 -1  1  0  0  0 -1  1  0  1  1  1  0 -1  0  1  0  0  0  0 -1  0  0];
    Ipatov31_set{6}.seq = [1  1  0  0  1  0  0 -1 -1 -1  1 -1  0  1  1 -1  0  0  0  1  0  1  0 -1  1  0  1  0  0  0  0];
    Ipatov31_set{7}.seq = [1  0  0  0  0  1 -1  0  1  0  1  0  0  1  0  0  0  1  0  1  1 -1 -1 -1  0 -1  1  0  0 -1  1];
    Ipatov31_set{8}.seq = [0  1  0  0 -1  0 -1  0  1  1  0  0  0  0 -1 -1  1  0  0 -1  1  0  1  1 -1  1  1  0  1  0  0];

    %Ipatov 127 codes set (16 codes)
    Ipatov127_set{1}.seq = [1  0  0  1  0  0  0 -1  0 -1 -1  0  0 -1 -1  1  0  1  0  1  0  0 -1  1 -1  1  1  0  1  0  0  0  0  1  1 -1  0  0  0  1  0  0 -1  0  0 -1 -1  0 -1  1  0  1  0 -1 -1  0 -1  1  1  1  0  1  1  0  0  0  1 -1  0  1  0  0 -1  0  1  1 -1  0  1  1  1  0  0 -1  1  0  0  1  0  1  0 -1  0  1  1 -1  1 -1 -1  1  0  0  0  0  0  0  1  0  0  0  0  0 -1  1  0  0  0  0 -1  0 -1  0  0  0 -1 -1  1]; 
    Ipatov127_set{2}.seq = [1  1  0  0  1  0 -1  1  0  0  1  0  0  1  0  0  0  0  0  0 -1  0  0  0 -1  0  0 -1 -1  0  0  0 -1  0  1 -1  1  0 -1  0  1 -1  0 -1  1  0  0  0  0  0  1 -1  0  0  1  1  0 -1  0  1  0  0 -1 -1  1  0  0  1  1 -1  1  0  1 -1  0  1  0  0  0  0 -1  0 -1  0 -1  0 -1  1  1 -1  1  0  1  0  0  1  0  1  0  0  0 -1  1  0  1  1  1  0  0  0 -1 -1 -1 -1  1  1  1  0  0  0  0  1  1  1  0 -1 -1]; 
    Ipatov127_set{3}.seq = [-1  1 -1  0  0  0  0  1  0  0 -1 -1  0  0  0  0  0 -1  0  1  0  1  0  1 -1  0  1  0  0  1  0  0  1  0 -1  0  0 -1  1  1  1  0  0  1  0  0  0 -1  1  0  1  0 -1  0  0  0  0  1  1  1  1  1 -1  1  0  1 -1 -1  0  1 -1  0  1  1 -1 -1  0 -1  0  0  0  1  0 -1  1  0  0  1  0  1 -1 -1 -1 -1  0  0  0 -1  0  0  0  0  0  0 -1  1  0  0  1 -1  0  1  1  0  0  0  1  1 -1  0  0  1  1 -1  0 -1  0]; 
    Ipatov127_set{4}.seq = [-1  1  0  1  1  0  0  0  0  0  0 -1  0  1  0 -1  1  0 -1 -1 -1  1 -1  1  1  0  0 -1  1  0  1  1  0  1  0  1  0  1  0  0  0 -1  0  0 -1  0  0 -1  1  0  0  1 -1  1  1  0  0  0 -1  1 -1  0 -1  1  1  0 -1  0  1  1  1  1  0 -1  0  0 -1  0  1  1  0  0  1  0  1  0  0  1  1 -1  0  0  1  0  0  0  1 -1  0  0  0 -1  0 -1 -1  1  0  0  0  0 -1  0  0  0  0 -1 -1  0  1  0  0  0  0  0  1 -1 -1]; 
    Ipatov127_set{5}.seq = [1  0  0  0 -1 -1  0  0  0  0 -1 -1  1  1  0 -1  1  1  1  1  0 -1  0  1  1  0  1  0 -1  0  0 -1  1  0  1  1  0  0  1  1 -1  0  1  1  0  1 -1  1  0 -1  0  0  1  0  0 -1  0 -1 -1  0  0  0 -1  1 -1  0  0  1  0  0  0  0 -1  0  1  1 -1  0  0  0  0  0  1 -1  0 -1  0  0  0  0  0  0 -1  0  0 -1  1 -1  1  1 -1  1  0  0  0 -1  0  1  0  1  0  1  1  1 -1  0  0 -1 -1  0  0  1  0  1  0  0  0]; 
    Ipatov127_set{6}.seq = [1  0  0  0  1  1  0 -1  0  1  0 -1  0  0  1 -1  0 -1  1  0 -1  0  0  1  0  1  0  0  0  0  1  0  1 -1  0  0  0  0  1  1  0  0  1  0  1  1  1  1  1 -1  1  0 -1  0  1 -1  0 -1 -1  1  0  1  1 -1 -1  0  0  0 -1 -1 -1  0  1  0  0  0  1  0  1  0 -1  1 -1  0  0  0  0  0  0  1 -1  1 -1  0 -1 -1  0  0  1  1  0  0  0 -1  0  0  1  0  0  1  1 -1  0  0 -1 -1  1  1 -1  0  0 -1  0  0  0  0  0]; 
    Ipatov127_set{7}.seq = [0  1 -1  0  0  1  0 -1  0  0  0 -1  1  1  0  0  0  0 -1 -1 -1  1  1  0  0  0  1  0  1 -1  0 -1  1  0  0 -1  1  0  0  0 -1 -1  0 -1  0  0 -1 -1  0 -1 -1  1  1  1 -1  1  0 -1  1  1  0  0  1 -1  1  1  0  1  0  0  0  0  0  1  0 -1  0  1  1  1 -1  0  0  1  0  0  1  0  0  0 -1  0  0  0  0  1  0  0 -1 -1  1  0  1  1  0  1  0  1  0 -1  0  0 -1  0 -1  1 -1  0  1  0  1  1  0  0  0  0  0]; 
    Ipatov127_set{8}.seq = [1  1  0  0  0  0  1  0  0  0  1  0  0  1 -1 -1  0  1 -1  1  1  0 -1  0  0  0 -1 -1  0  0  1 -1  0  1  0  0  1  1  0  0  0  1  1  1  0  0  1  0  1  0 -1  0 -1  1 -1  0 -1  0  1  0  0  1  0  0  1  0  1  1 -1 -1 -1 -1  1  0  0  1  1 -1 -1  1  0  1 -1  0 -1 -1  1  0  0  0  0  0  0 -1  0 -1  0  0  0  0 -1  1  0 -1 -1  0  0  1  0  0  0  0  0  1 -1  1  1  0  0  0 -1  0 -1  1  0  1  0]; 
    Ipatov127_set{9}.seq = [1 -1 -1  0  0  0 -1  0 -1  0  0  0  0  1 -1  0  0  0  0  0  1  0  0  0  0  0  0  1 -1 -1  1 -1  1  1  0 -1  0  1  0  1  0  0  1 -1  0  0  1  1  1  0 -1  1  1  0 -1  0  0  1  0 -1  1  0  0  0  1  1  0  1  1  1 -1  0 -1 -1  0  1  0  1 -1  0 -1 -1  0  0 -1  0  0  1  0  0  0 -1  1  1  0  0  0  0  1  0  1  1 -1  1 -1  0  0  1  0  1  0  1 -1 -1  0  0 -1 -1  0 -1  0  0  0  1  0  0  1]; 
    Ipatov127_set{10}.seq = [-1 -1  0  1  1  1  0  0  0  0  1  1  1 -1 -1 -1 -1  0  0  0  1  1  1  0  1 -1  0  0  0  1  0  1  0  0  1  0  1 -1  1  1 -1  0 -1  0 -1  0 -1  0  0  0  0  1  0 -1  1  0  1 -1  1  1  0  0  1 -1 -1  0  0  1  0 -1  0  1  1  0  0 -1  1  0  0  0  0  0  1 -1  0 -1  1  0 -1  0  1 -1  1  0 -1  0  0  0 -1 -1  0  0 -1  0  0  0 -1  0  0  0  0  0  0  1  0  0  1  0  0  1 -1  0  1  0  0  1  1]; 
    Ipatov127_set{11}.seq = [-1  0 -1  1  1  0  0 -1  1  1  0  0  0  1  1  0 -1  1  0  0  1 -1  0  0  0  0  0  0 -1  0  0  0 -1 -1 -1 -1  1  0  1  0  0  1 -1  0  1  0  0  0 -1  0 -1 -1  1  1  0 -1  1  0 -1 -1  1  0  1 -1  1  1  1  1  1  0  0  0  0 -1  0  1  0  1 -1  0  0  0  1  0  0  1  1  1 -1  0  0 -1  0  1  0  0  1  0  0  1  0 -1  1  0  1  0  1  0 -1  0  0  0  0  0 -1 -1  0  0  1  0  0  0  0 -1  1 -1  0]; 
    Ipatov127_set{12}.seq = [-1 -1  1  0  0  0  0  0  1  0 -1 -1  0  0  0  0 -1  0  0  0  0  1 -1 -1  0 -1  0  0  0 -1  1  0  0  0  1  0  0 -1  1  1  0  0  1  0  1  0  0  1  1  0 -1  0  0 -1  0  1  1  1  1  0 -1  0  1  1 -1  0 -1  1 -1  0  0  0  1  1 -1  1  0  0  1 -1  0  0 -1  0  0 -1  0  0  0  1  0  1  0  1  0  1  1  0  1 -1  0  0  1  1 -1  1 -1 -1 -1  0  1 -1  0  1  0 -1  0  0  0  0  0  0  1  1  0  1 -1]; 
    Ipatov127_set{13}.seq = [1  0  1  0  0 -1 -1  0  0 -1  1  1  1  0  1  0  1  0 -1  0  0  0  1 -1  1  1 -1  1 -1  0  0 -1  0  0  0  0  0  0 -1  0 -1  1  0  0  0  0  0 -1  1  1  0 -1  0  0  0  0  1  0  0 -1  1 -1  0  0  0 -1 -1  0 -1  0  0  1  0  0 -1  0  1 -1  1  0  1  1  0 -1  1  1  0  0  1  1  0  1 -1  0  0 -1  0  1  0  1  1  0 -1  0  1  1  1  1 -1  0  1  1 -1 -1  0  0  0  0 -1 -1  0  0  0  1  0  0  0]; 
    Ipatov127_set{14}.seq = [0 -1  0  0 -1  1  1 -1 -1  0  0 -1  1  1  0  0  1  0  0 -1  0  0  0  1  1  0  0 -1 -1  0 -1  1 -1  1  0  0  0  0  0  0 -1  1 -1  0  1  0  1  0  0  0  1  0 -1 -1 -1  0  0  0 -1 -1  1  1  0  1 -1 -1  0 -1  1  0 -1  0  1 -1  1  1  1  1  1  0  1  0  0  1  1  0  0  0  0 -1  1  0  1  0  0  0  0  1  0  1  0  0 -1  0  1 -1  0 -1  1  0  0 -1  0  1  0 -1  0  1  1  0  0  0  1  0  0  0  0]; 
    Ipatov127_set{15}.seq = [0  0  0  1  1  0  1  0 -1  1 -1  0 -1  0  0 -1  0  1  0  1  0  1  1  0  1 -1 -1  0  0  1  0  0  0  0 -1  0  0  0  1  0  0  1  0  0 -1  1  1  1  0 -1  0  1  0  0  0  0  0  1  0  1  1 -1  1  0  0  1  1 -1  0  1 -1  1  1  1 -1 -1  0 -1 -1  0  0 -1  0 -1 -1  0  0  0  1 -1  0  0  1 -1  0 -1  1  0  1  0  0  0  1  1 -1 -1 -1  0  0  0  0  1  1 -1  0  0  0 -1  0  1  0  0 -1  1  0  0  0]; 
    Ipatov127_set{16}.seq = [1  0  1 -1  0 -1  0  0  0  1  1 -1  1  0  0  0  0  0  1  0  0 -1 -1  0  1 -1  0  0  0  0 -1  0 -1  0  0  0  0  0  0  1 -1 -1  0 -1  1  0  1 -1 -1  1  1  0  0  1 -1 -1 -1 -1  1  1  0  1  0  0  1  0  0  1  0 -1  0 -1  1 -1  0 -1  0  1  0  1  0  0  1  1  1  0  0  0  1  1  0  0  1  0 -1  1  0  0 -1 -1  0  0  0 -1  0  1  1 -1  1  0 -1 -1  1  0  0  1  0  0  0  1  0  0  0  0  1  1  0];

    %Ipatov 91 codes set (8 codes)
    Ipatov91_set{1}.seq = [-1  0  1  1  1  1 -1 -1  1 -1 -1  1 -1  1  1  1  1 -1  1 -1 -1 -1  1  1 -1 -1  1  1  1  1  1  1 -1  1  1 -1  1  0  0  1 -1 -1  1  0 -1 -1  1  0  1  1  1  1  1 -1 -1  1  1  1 -1 -1  0 -1 -1  0  1 -1  1 -1 -1 -1 -1  0 -1  1 -1  1 -1  1  0  1 -1 -1  1  1 -1  1 -1  1  1  1  0];
    Ipatov91_set{2}.seq = [1  1  0  1 -1  1 -1 -1 -1  1  1  1  1  1 -1  1 -1  1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1  1 -1  0  1  1  1  0 -1  1  1  1  1 -1  1  0  1  0 -1 -1  0  1 -1  1  1 -1  1  1  1  1  1  1 -1 -1  1 -1  1  1  0  0  1  1  1 -1 -1  0  1 -1 -1 -1 -1 -1  1 -1  0  1 -1  1 -1  1 -1 -1 -1];
    Ipatov91_set{3}.seq = [1  1  1 -1 -1  1  1  1 -1 -1 -1  1 -1  1 -1  0 -1  1 -1 -1  0  1  1 -1  1 -1  1  0 -1  1  1  1  1  1  1  1  1  1  1 -1 -1  1 -1 -1  1  1 -1  1  1  0  1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  0 -1  1  1  1 -1  0  1  0  0 -1 -1 -1  1  1 -1  1 -1 -1  0 -1  1  1  0];
    Ipatov91_set{4}.seq = [1  1  1  1  1 -1 -1  1  1  1 -1  1  1 -1 -1 -1  1 -1  1 -1 -1  0  1  1 -1 -1 -1  1 -1  1  0  1 -1 -1 -1 -1 -1  1  0  1  1  1 -1 -1  1 -1  1 -1 -1  1 -1  1  1 -1  1  1  1  1  0 -1  0 -1  1  1  0  0  1 -1  1  1  1 -1  1  1 -1  1  0 -1  1  0 -1 -1  1 -1 -1 -1  1  1  1  0  1];
    Ipatov91_set{5}.seq = [1 -1  0 -1 -1  1 -1  1  1 -1 -1  0  1  1  0  0  1  1 -1  1  1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1  0  1 -1 -1  1 -1  1  1 -1 -1  1 -1  1  1  1 -1 -1  1  1  1  1  1  1  1 -1  1  1  1  0  1 -1  1 -1  0 -1  0 -1  1  1 -1 -1 -1  1  0 -1 -1 -1  1  1  0 -1  1 -1  1 -1  1  1 -1];
    Ipatov91_set{6}.seq = [-1  1  1  0 -1 -1  0  1  1 -1  0  0 -1 -1  1  1 -1  1  1 -1  1 -1 -1  1  1  1  1  1 -1 -1 -1  1  1  1 -1  1 -1  0  1 -1  1 -1  1  0  1  1  1  1  1 -1  1  1  1 -1  1  1  1 -1  1  0 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1  1  0 -1 -1 -1 -1  1 -1  1 -1  0  1  0  1 -1  1  1  1 -1];
    Ipatov91_set{7}.seq = [-1  1 -1  1  1  0  1  1  1 -1 -1  1  1 -1  0  1  1  0  0 -1 -1  1  1 -1 -1  1  1  1 -1  1 -1 -1 -1 -1 -1 -1  0  1  1  1 -1  1  1  1  1  1 -1 -1  1 -1  1  1 -1 -1 -1  1 -1  1 -1 -1 -1  1 -1  1  0 -1  1 -1 -1  0  1  0  1 -1  1  1 -1  1  1  0  1 -1  1 -1 -1  0  1  1  1  1  1];
    Ipatov91_set{8}.seq = [-1  1  1  1  1  1  1  1  1  1  1  1 -1 -1 -1  1 -1  1  1 -1 -1  1  1  0  0 -1  1 -1  1  0 -1  1 -1  0 -1  1  1 -1 -1  1  1  1 -1  1  1  1  0 -1 -1  0  1  1 -1  1 -1  1 -1  0 -1 -1 -1  1  1 -1  0 -1 -1 -1 -1  1  1  1  1 -1  1 -1  0  1  0 -1  1 -1  1  1 -1  1  1 -1 -1  1 -1];
end
%%
