Commit 9628ad5d authored by Yann Garcia's avatar Yann Garcia
Browse files

Completed missing TC skeletons from latest TPs version; Moved f_NASPDU_Get()...

Completed missing TC skeletons from latest TPs version; Moved f_NASPDU_Get() into module LIB_NG_NAS_Functions
parent e6c6bba2
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -61,12 +61,23 @@ system.N2_gNBaMF_P.params := "NGAP/SCTP_FILE/IP_OFFLINE/ETH(mac_src=8c554ac1eee0
#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_03
#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_04
#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_05
#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_ABN_01
NG_NAS_TestCases.TC_NGNAS_AMF_AUT_SEQ_01
#NG_NAS_TestCases.TC_5GNAS_AMF_SEC_ACC_01
#NG_NAS_TestCases.TC_5GNAS_AMF_SEC_REJ_01
#NG_NAS_TestCases.TC_5GNAS_AMF_DLN_ACC_01
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_01
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_02
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_03
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_04
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_05
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_REJ_01
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_REJ_02
#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_ACC_01
#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_ACC_02
#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_REQ_01
#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_REQ_02
#NG_NAS_TestCases.TC_5GNAS_AMF_DRG_REQ_03

[GROUPS]
# In this section you can specify groups of hosts. These groups can be used inside the
+310 −70
Original line number Diff line number Diff line
@@ -43,57 +43,6 @@ module NG_NAS_TCFunctions {
    import from NGAP_Steps all;
    //import from NGAP_Pixits all;

    function f_NASPDU_Get(inout NGAP_PDU p_PDU) runs on NGNASComponent {

            vc_recvNGAP_PDU := p_PDU;

            if (ischosen(p_PDU.initiatingMessage)) {
                // Nothing to do
                if (match(vc_recvNGAP_PDU.initiatingMessage,mw_n2_NGSetupRequest_base)){
                    var integer numOfIEs := lengthof(vc_recvNGAP_PDU.initiatingMessage.value_.NGSetupRequest.protocolIEs)
                    //log("Number of IEs:",numOfIEs);
                    for (var integer i:=0;i<numOfIEs;i:=i+1){
                        //log(vc_recvNGAP_PDUDefault.initiatingMessage.value_.NGSetupRequest.protocolIEs[i]);
                    }
                }else if (match(vc_recvNGAP_PDU.initiatingMessage,mw_n2_initialUeMessage_base_nas)){
                    var integer numOfIEs := lengthof(vc_recvNGAP_PDU.initiatingMessage.value_.InitialUEMessage.protocolIEs)
                   
                    for (var integer i:=0;i<numOfIEs;i:=i+1){
                   
                        if ( (vc_recvNGAP_PDU.initiatingMessage.value_.InitialUEMessage.protocolIEs[i].id) == 38 /*id_NAS_PDU*/){
                            vc_recvNAS_PDU := vc_recvNGAP_PDU.initiatingMessage.value_.InitialUEMessage.protocolIEs[i].value_.nAS_PDU;
                            log("****************************************");
                            log("InitialUEMessage - NAS-PDU! ");
                            log( vc_recvNAS_PDU );
                            log("****************************************");

                        }
                    }
                }else if (match(vc_recvNGAP_PDU.initiatingMessage,mw_n2_DownlinkNASTransport_base_nas)){
                    var integer numOfIEs := lengthof(vc_recvNGAP_PDU.initiatingMessage.value_.DownlinkNASTransport.protocolIEs)
                   
                    for (var integer i:=0;i<numOfIEs;i:=i+1){
                   
                        if ( (vc_recvNGAP_PDU.initiatingMessage.value_.DownlinkNASTransport.protocolIEs[i].id) == 38 /*id_NAS_PDU*/){
                            vc_recvNAS_PDU := vc_recvNGAP_PDU.initiatingMessage.value_.DownlinkNASTransport.protocolIEs[i].value_.nAS_PDU;
                            log("****************************************");
                            log("DownlinkNASTransport - NAS-PDU! ");
                            log( vc_recvNAS_PDU );
                            log("****************************************");

                        }
                    }
                }
            }
            if (ischosen(p_PDU.successfulOutcome)) {
                // Nothing to do
            }
            if (ischosen(p_PDU.unsuccessfulOutcome)) {
                 // Nothing to do
            }
        } // End of function f_NASPDU_Get


    // interface at AMF
    group TP_AMF_NGAP {

@@ -216,6 +165,29 @@ module NG_NAS_TCFunctions {
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                } // End of function f_TC_5GNAS_AMF_AUT_REQ_05
    
                /**
                 * @desc Testcase function for TC_5GNAS_AMF_AUT_ABN_01
                 */
                function f_TC_5GNAS_AMF_AUT_ABN_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                    // Local variables

                    // Preamble
                    f_NGAP_gnb_init();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // TODO

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                    // Postamble
                    //TODO: f_postamble_NGAP_gNB();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                } // End of function f_TC_5GNAS_AMF_AUT_ABN_01
    
            } // End of group /*5_4_1_*/fiveGMM_Common_ProceduresPrimary_authentication_and_key_agreement_procedure

            group /*5_4_2_*/Security_mode_control_procedure {
@@ -290,11 +262,15 @@ module NG_NAS_TCFunctions {
                    log("===> vc_sendNAS_PDU (1): ", vc_sendNAS_PDU);
                    f_send_NGAP_PDU(
                                    m_ngap_initMsg(
                                                   mw_n2_DownlinkNASTransport(
                                                   m_n2_UplinkNASTransport(
                                                                           PX_AMF_UE_NGAP_ID,
                                                                           PX_RAN_UE_NGAP_ID, 
                                                                              vc_sendNAS_PDU
                                    )));
                                                                           vc_sendNAS_PDU,
                                                                           m_uPTransportLayerInformation_userLocationInformationNR(
                                                                                                                                   m_userLocationInformationNR(
                                                                                                                                                               m_nR_CGI,
                                                                                                                                                               m_tAI
                                    )))));
                    f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_DownlinkNASTransport(
@@ -308,10 +284,10 @@ module NG_NAS_TCFunctions {
                                                                                        //                                               { iei := '20'O, iel := '1000'B, aUTN := oct2bit('e4ca34194b428000f058119c1778db23'O) }
                                                                                        //                                               );
                    )));
                    var NG_AUTHENTICATION_REQUEST v_ng_authentication_request;
                    if (f_Check_5GAKA_AuthenticationRequest(vc_recvNGAP_PDU, id_NAS_PDU, v_ng_authentication_request) == false) {
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST) == false) {
                        setverdict(inconc);
                        log("*** " & __SCOPE__ & ": INCONC: NAS-PDU IE not found. ***");
                        log("*** " & __SCOPE__ & ": INCONC: Unexpected NG_AUTHENTICATION_REQUEST ***");
                    }
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
@@ -340,16 +316,57 @@ module NG_NAS_TCFunctions {
                                                                               PX_RAN_UE_NGAP_ID,
                                                                               ? // SecurityModeCommand
                    )));
                    var NG_SECURITY_MODE_COMMAND v_ng_security_mode_command;
                    if (f_Check_5GAKA_SecurityModeCommand(vc_recvNGAP_PDU, id_NAS_PDU, v_ng_security_mode_command) == false) {
                        setverdict(inconc);
                        log("*** " & __SCOPE__ & ": INCONC: NAS-PDU IE not found. ***");
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_SECURITY_MODE_COMMAND) == false) {
                        log("*** " & __SCOPE__ & ": FAIL: NG_SECURITY_MODE_COMMAND mismatch. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    // var NG_AUTHENTICATION_RESPONSE v_ng_authentication_response;
                    // if (f_Check_5GAKA_AuthenticationResponse(vc_recvNGAP_PDU, id_NAS_PDU, v_ng_authentication_response) == false) {
                    //     setverdict(inconc);
                    //     log("*** " & __SCOPE__ & ": INCONC: NAS-PDU IE not found. ***");
                    // }
 
                    vt_NgNasUl_Msg := m_NG_SECURITY_MODE_COMPLETE(
                                                                  m_NG_MobileIdentitySUCI('0000'B,'00f110214300014444330302'O),
                                                                  { iei := '2d'O, iel := int2oct(2 + lengthof('a7c39d021cc8070960775ce133f05be3'O), 2), replayedNASMsgContainerValue := 'a7c39d021cc8070960775ce133f05be3'O },
                                                                  m_NG_MobileIdentitySUCI('0000'B,'00f110214300014444330302'O)
                                                                );
                    vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg)));
                    log("===> vc_sendNAS_PDU (3): ", vc_sendNAS_PDU);
                    f_send_NGAP_PDU(
                                    m_ngap_initMsg(
                                                   m_n2_UplinkNASTransport(
                                                                           PX_AMF_UE_NGAP_ID,
                                                                           PX_RAN_UE_NGAP_ID,
                                                                           vc_sendNAS_PDU,
                                                                           m_uPTransportLayerInformation_userLocationInformationNR(
                                                                                                                                   m_userLocationInformationNR(
                                                                                                                                                               m_nR_CGI,
                                                                                                                                                               m_tAI
                                    )))));
                    f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_InitialContextSetupRequest_withPDUSessionList
                                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    log("*** " & __SCOPE__ & ": PASS: Testbody done. ***");

                    // Postamble
                    //TODO: f_postamble_NGAP_gNB();
                    f_selfOrClientSyncAndVerdict(c_poDone, e_success);
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                } // End of function f_TC_NGNAS_AMF_AUT_SEQ_01
    
                /**
                * @desc Testcase function for TC_5GNAS_AMF_SEC_ACC_01
                */
                function f_TC_5GNAS_AMF_SEC_ACC_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                    // Local variables

                    // Preamble
                    f_NGAP_gnb_init();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // TODO

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

@@ -357,10 +374,60 @@ module NG_NAS_TCFunctions {
                    //TODO: f_postamble_NGAP_gNB();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                } // End of function f_TC_NGNAS_AMF_AUT_SEQ_01
                } // End of function f_TC_5GNAS_AMF_SEC_ACC_01

                /**
                * @desc Testcase function for TC_5GNAS_AMF_SEC_REJ_01
                */
                function f_TC_5GNAS_AMF_SEC_REJ_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                    // Local variables

                    // Preamble
                    f_NGAP_gnb_init();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // TODO

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                    // Postamble
                    //TODO: f_postamble_NGAP_gNB();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                } // End of function f_TC_5GNAS_AMF_SEC_REJ_01

            } // End of group /*5_4_2_*/Security_mode_control_procedure

            group /*5_4_5_*/NAS_transport_procedure {

            /**
             * @desc Testcase function for TC_5GNAS_AMF_DLN_ACC_01
             */
            function f_TC_5GNAS_AMF_DLN_ACC_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                // Local variables

                // Preamble
                f_NGAP_gnb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // Body
                // TODO

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                // Postamble
                //TODO: f_postamble_NGAP_gNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            } // End of function f_TC_5GNAS_AMF_DLN_ACC_01

            } // End of group /*5__4_5_*/NAS_transport_procedure

        } // End of group /*5_4_*/fiveGMM_Common_Procedures

        group /*5_5_1_2_*/Registration_Procedure_for_initial_registration {
@@ -434,6 +501,52 @@ module NG_NAS_TCFunctions {
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            } // End of function f_TC_5GNAS_AMF_REG_ACC_03

            /**
             * @desc Testcase function for TC_5GNAS_AMF_REG_ACC_04
             */
            function f_TC_5GNAS_AMF_REG_ACC_04() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                // Local variables

                // Preamble
                f_NGAP_gnb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // Body
                // TODO

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                // Postamble
                //TODO: f_postamble_NGAP_gNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            } // End of function f_TC_5GNAS_AMF_REG_ACC_04

            /**
             * @desc Testcase function for TC_5GNAS_AMF_REG_ACC_05
             */
            function f_TC_5GNAS_AMF_REG_ACC_05() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                // Local variables

                // Preamble
                f_NGAP_gnb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // Body
                // TODO

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                // Postamble
                //TODO: f_postamble_NGAP_gNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            } // End of function f_TC_5GNAS_AMF_REG_ACC_05

            /**
             * @desc Testcase function for TP_5GNAS_AMF_REG_REJ_01
             */
@@ -737,6 +850,133 @@ module NG_NAS_TCFunctions {

        } // End of group /*5_5_1_2_*/Registration_Procedure_for_initial_registration

        group /*5_5_2_2_3*/UE_initiated_de_registration_procedure_completion {

            /**
             * @desc Testcase function for TC_5GNAS_AMF_DRG_ACC_01
             */
            function f_TC_5GNAS_AMF_DRG_ACC_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                // Local variables

                // Preamble
                f_NGAP_gnb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // Body
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                // Postamble
                //TODO: f_postamble_NGAP_gNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

            } // End of function f_TC_5GNAS_AMF_DRG_ACC_01

            /**
             * @desc Testcase function for TC_5GNAS_AMF_DRG_ACC_02
             */
            function f_TC_5GNAS_AMF_DRG_ACC_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                // Local variables

                // Preamble
                f_NGAP_gnb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // Body
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                // Postamble
                //TODO: f_postamble_NGAP_gNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

            } // End of function f_TC_5GNAS_AMF_DRG_ACC_02

        } // End of group /*5_5_2_2_3*/UE_initiated_de_registration_procedure_completion

        group /*5_5_2_3_1*/Network_initiated_de_registration_procedure_initiation {

            /**
             * @desc Testcase function for TC_5GNAS_AMF_DRG_REQ_01
             */
            function f_TC_5GNAS_AMF_DRG_REQ_01() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                // Local variables

                // Preamble
                f_NGAP_gnb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // Body
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                // Postamble
                //TODO: f_postamble_NGAP_gNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

            } // End of function f_TC_5GNAS_AMF_DRG_REQ_01

            /**
             * @desc Testcase function for TC_5GNAS_AMF_DRG_REQ_02
             */
            function f_TC_5GNAS_AMF_DRG_REQ_02() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                // Local variables

                // Preamble
                f_NGAP_gnb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // Body
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                // Postamble
                //TODO: f_postamble_NGAP_gNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

            } // End of function f_TC_5GNAS_AMF_DRG_REQ_02

            /**
             * @desc Testcase function for TC_5GNAS_AMF_DRG_REQ_03
             */
            function f_TC_5GNAS_AMF_DRG_REQ_03() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                // Local variables

                // Preamble
                f_NGAP_gnb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // Body
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                // Postamble
                //TODO: f_postamble_NGAP_gNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

            } // End of function f_TC_5GNAS_AMF_DRG_REQ_03

        } // End of group /*5_5_2_3_1*/Network_initiated_de_registration_procedure_initiation










    } // End of group TP_AMF_NGAP

    group TC_AMF_NGAP {
+320 −0

File changed.

Preview size limit exceeded, changes collapsed.

+17 −0
Original line number Diff line number Diff line
@@ -25,14 +25,31 @@ module NG_NAS_TestControl {
            execute(TC_5GNAS_AMF_AUT_REQ_04());
            execute(TC_5GNAS_AMF_AUT_REQ_05());

            execute(TC_5GNAS_AMF_AUT_ABN_01());

            execute(TC_NGNAS_AMF_AUT_SEQ_01());

            execute(TC_5GNAS_AMF_SEC_ACC_01());
            execute(TC_5GNAS_AMF_SEC_REJ_01());

            execute(TC_5GNAS_AMF_DLN_ACC_01());

            execute(TC_5GNAS_AMF_REG_ACC_01());
            execute(TC_5GNAS_AMF_REG_ACC_02());
            execute(TC_5GNAS_AMF_REG_ACC_03());
            execute(TC_5GNAS_AMF_REG_ACC_04());
            execute(TC_5GNAS_AMF_REG_ACC_05());

            execute(TC_5GNAS_AMF_REG_REJ_01());
            execute(TC_5GNAS_AMF_REG_REJ_02());

            execute(TC_5GNAS_AMF_DRG_ACC_01());
            execute(TC_5GNAS_AMF_DRG_ACC_02());

            execute(TC_5GNAS_AMF_DRG_REQ_01());
            execute(TC_5GNAS_AMF_DRG_REQ_02());
            execute(TC_5GNAS_AMF_DRG_REQ_03());

        }

        if (not PICS_NGNAS) {
+122 −107

File changed.

Preview size limit exceeded, changes collapsed.

Loading